From fbd7bd6081d173ec7fee189db7769d0646c04c84 Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 15 Sep 2009 15:20:28 +0200 Subject: page about the evdev patch --- src/SW/xf86-input-evdev/document.it.rest.txt | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/SW/xf86-input-evdev/document.it.rest.txt (limited to 'src/SW/xf86-input-evdev/document.it.rest.txt') diff --git a/src/SW/xf86-input-evdev/document.it.rest.txt b/src/SW/xf86-input-evdev/document.it.rest.txt new file mode 100644 index 0000000..88910a4 --- /dev/null +++ b/src/SW/xf86-input-evdev/document.it.rest.txt @@ -0,0 +1,59 @@ +================================================ + Rimappatura dei codici in ``xf86-input-evdev`` +================================================ +:CreationDate: 2009-09-15 12:49:41 +:Id: SW/xf86-input-evdev +:tags: - software + - keyboard + +Il driver ``xf86-input-evdev`` che viene di serie con `xorg` usa +soltanto i keycode tra 8 e 255, ignorando tutti gli altri. Questo +funziona per la maggior parte dei casi (chi ha mai visto una tastiera +con più di 247 tasti?), ma causa problemi quando i keycode con sono +consecutivi. + +Ad esempio, la tastiera Apple Alluminio (ID USB ``05ac:0221``) emette +qualche codice oltre 255: il tasto "fn" è 464. Altri hanno trovato +altri casi, e li hanno `segnalati come bug +`_. + +Siccome la tastiera mi serve funzionante, e come dico io, ho fatto +l'unica cosa sensata: ho `clonato il repository +`_ e ho modificato +il codice. + +La mia modifica aggiunge un'opzione di configurazione, chiamata +``event_key_remap``. Il valore deve essere una lista (separata da +spazi) di "assegnamenti" nella forma ``$evdev_code = $x11_code``; il +``$evdev_code`` può essere ottenuto con ``showkey -k``, il +``$x11_code`` può essere trovato nel file +``/usr/share/X11/xkb/keycodes/evdev`` (o dove la vostra distribuzione +l'ha messo) + +L'implementazione è piuttosto semplice: crea una tabella dalla +configurazione; la tabella non è implementata come un semplice array, +visto che in quel caso allocherei 64KiB per device (`evdev` usa 16 bit +per un evento "tasto"). Invece, alloco "pagine" di 256 byte, e solo le +pagine che servono. In questo modo, i device senza rimappature +occupano solo un puntatore in più nelle loro strutture, e i device con +pochi codici da mappare occupano 256 byte in più. + +Ovviamente, la configurazione può essere impostata sia dal file +``xorg.conf`` sia tramite `HAL`. Il mio file +``/etc/hal/fdi/policy/10-x11-input.fdi`` contiene:: + + + + + compose:ralt + altwin:meta_win + + + dakkar + evdev + dvorak-apple-al + 464=118 120=210 204=211 + + + +(I dettagli sul mio layout di tastiera stanno `altrove <../my-layout/>`_. -- cgit v1.2.3