# [clavier kernel 2.6] une touche qui déconne (résolu)

## xr31Daisy

Je viens d'installer Gentoo sur une bécanne équipée d'un magnifique 'Microsoft Wireless Optical Desktop'. Et il y a une touche qui déconne : la touche '*' ( comme dans rm -rf * ). Suivant les keymaps qui je mets dans rc.conf, les effets de cette touche sont variés ( sous gnome : décalage de l'image dans xfree, ou apparition de la boîte de dialogque de capture d'écran. ) En mode console, suivant les cas, ça me ramène au terminal précédent, ou bien ça me logout direct.

Bon , ben pour essayer de comprendre, j'ai lancé xev, et dès que j'appuie sur la touche, j'obtiens ceci ( seules les 3 premiers événements sont liés à la touche je crois. Les autres sont l'apparition de la boîte de dialogue )

```
FocusOut event, serial 25, synthetic NO, window 0x1a00001,

    mode NotifyGrab, detail NotifyAncestor

 

FocusIn event, serial 25, synthetic NO, window 0x1a00001,

    mode NotifyUngrab, detail NotifyAncestor

 

KeymapNotify event, serial 25, synthetic NO, window 0x0,

    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

 

VisibilityNotify event, serial 25, synthetic NO, window 0x1a00001,

    state VisibilityUnobscured

 

Expose event, serial 25, synthetic NO, window 0x1a00001,

    (163,0), width 15, height 24, count 0

 

FocusOut event, serial 25, synthetic NO, window 0x1a00001,

    mode NotifyNormal, detail NotifyNonlinear

 

PropertyNotify event, serial 25, synthetic NO, window 0x1a00001,

    atom 0x111 (_NET_WM_ICON_GEOMETRY), time 171495, state PropertyNewValue

 

PropertyNotify event, serial 25, synthetic NO, window 0x1a00001,

    atom 0x111 (_NET_WM_ICON_GEOMETRY), time 171506, state PropertyNewValue

 

PropertyNotify event, serial 25, synthetic NO, window 0x1a00001,

    atom 0x111 (_NET_WM_ICON_GEOMETRY), time 171513, state PropertyNewValue

X connection to :0.0 broken (explicit kill or server shutdown).

```

Comme en plus j'ai complètement oublié quels étaient les utilitaires en ligne de commande pour lire les codes des touches ... Enfin bref, est-ce que quelqu'un aurait une idée ?

----------

## DuF

Le résultat que tu obtiens est étonnant, tu devrais au moins avoir un keycode correspondant, et des "Key" event, pour information chez moi j'obtiens : 

```
KeyPress event, serial 28, synthetic NO, window 0x2a00001,

    root 0x7d, subw 0x2a00002, time 528863066, (34,44), root:(846,90),

    state 0x10, keycode 51 (keysym 0x2a, asterisk), same_screen YES,

    XLookupString gives 1 bytes:  "*"

KeyRelease event, serial 28, synthetic NO, window 0x2a00001,

    root 0x7d, subw 0x2a00002, time 528863122, (34,44), root:(846,90),

    state 0x10, keycode 51 (keysym 0x2a, asterisk), same_screen YES,

    XLookupString gives 1 bytes:  "*"

```

Aurais-tu la possibilité de tester ton clavier sur un autre ordinateur, car là c'est plus qu'étonnant.

----------

## xr31Daisy

Ben moi aussi ça m'étonne, c'est bien pour ça que je poste   :Wink: 

Je viens de tester mon clavier sur mon portable, et ça déconne de la même façon ( mais le clavier intégré du portable marche très bien, lui ! ).

Tu connaîtrais pas les noms des outils en ligne de commande, non ?

Parce qu'à la réflexion et après un petit test, j'ai l'impression que tous les événements que j'ai donné ne sont que des conséquences de l'ouverture de la boîte de dialogue. Grosso Modo, il n'y a aucun événement X généré pour ma touche ( mais ça n'empêche pas l'OS de faire tout plein de choses. )

Edit : Bon, une nouvelle idée pour faire ma recherche dans les forums donne

https://forums.gentoo.org/viewtopic.php?t=119330, je referais un poste si ça me décoince. ( ma machine étant le ventre à l'air, ça va attendre un peu )

----------

## xr31Daisy

OK, donc c'était bien un mapping complètement foireux.

Donc pour récupérer mon truc en ligne de commande, j'ai rajouté modifié mon mapping clavier ( /usr/share/keymaps/i386/azerty/fr-latin1.map) . Visiblement mon clavier sort le code 84 pour cette touche alors que le mapping attendrait le code 43. J'ai remplacé 43 par 84.

Les utilitaires à connaitre sont showkey ( à lancer dans un terminal pour connaître les codes des touches sur lesquels on appuie ) et dumpkeys ( pour savoir sur quoi est mappé la touche recherchée.

Ensuite, pour X, le classique, c'est xmodmap pour récupérer le code de la touche. et assigner un code. Sauf que ça ne marche pas tant qu'on est pas loggué. Et en plus, on voit dans mon exemple que ma touche ne génère pas de code. Alors je suis allé bidouiller dans /etc/X11/xkb/ ..... Et j'ignore ce que j'ai réussi à toucher, mais finalement, ma touche génère un code 111, que je peux bidouiller avec xmodmap.

Ce n'est pas encore tout à fait ce que je veux, mais au moins ma touche sera utilisable.

----------

## cylgalad

Achetez chez M$... Si même les claviers ne sont pas standards mais où va-t'on ?  :Laughing: 

----------

## yoyo

 *cylgalad wrote:*   

> Achetez chez M$... Si même les claviers ne sont pas standards mais où va-t'on ? 

 

Mais si, mais si, ils sont au standard Microsoft ...   :Twisted Evil:   :Laughing: 

----------

## xr31Daisy

Le problème, ce n'est pas qu'ils soient au standard M$. Des utilitaires comme showkey permettent de très facilement remapper les trucs en mode console. Mon véritable problème actuellement, c'est surtout d'arriver à mapper les trucs correctement sous X. /etc/X11/xkb, c'est vraiment un truc de ouf.

Donc si qui que ce soit à des informations là-dessus, je me ferais un devoir de réécrire des mappings clavier 'kivonbien'. Quitte à réécrire complètement la description du clavier.

Edit : Oops, je m'aperçoit depuis le début que j'ai oublié de préciser que j'utilise un kernel 2.6.1-mm1. Si quelqu'un a le même clavier et qu'il a eu l'occasion de le faire fonctionner en kernel 2.4, je veux bien en entendre parler aussi.

Edit2 : en allant voir le thread pointé plus haut ( par moi ), une personne prétend que ses problèmes ont commencé avec le 2.6.

----------

## ttgeub

Cette personne ne pretend pas toute seule, je pretend avec elle ainsi que pas mal d autres personnes. Le probleme vient bien du 2.6

----------

## xr31Daisy

Bon ben xr31Daisy ( c'est moi  :Cool:  ) a trouvé la solution :

Il s'agit d'un bug du kernel. Un développeur a décidé que pour cette touche, 84, c'était mieux que 43. Un message est dispo ici : http://www.ussg.iu.edu/hypermail/linux/kernel/0401.1/0986.html, et il suffit de lire le thread pour tout savoir.

Donc j'ai modifié 2 fichiers du kernel : /usr/src/linux/drivers/char/keyboard.c

 /usr/src/linux/drivers/usb/input/hid-input.cDans ces deux fichiers, j'ai recherché les tables de keycodes, et remplacé 84 par 43, et le comportement de mon clavier est redevenu normal ( et je ne veux même pas penser aux bidouilles infâmes et inutiles dans mes fichiers de xfree ). Et maintenant, ça m**********arche.

La morale de l'histoire ? J'aurais mieux fait de chercher un peu ma solution sur le web avant d'embêter tout le forum avec mes petits problèmes.  ( Bon, je blague, je suis quand même content de moi  )

Quant aux claviers Microsoft, ils sont parfaitement cohérents avec le reste du monde, leur matos semble être à peu près standard, finalement.

----------

## BlakDrago

Ca marche   :Very Happy: 

Merci pour cette solution

----------

