Aller au contenu

L'enfer des touches multimedia des claviers...


Messages recommandés

(dammit, je suis maudit... je commence à rédiger mon post, puis je pense à tester un truc, je ferme une fenêtre xterm, et *paf* Firefox plante...)

Yop,

Ca fait 7-8 heures que je suis en train d'essayer de configurer ces #&%$@!!?! de touches multimedia sur mon clavier Logitech Internet Navigator Keyboard, tout ça pour en revenir exactement au point de départ: que ce soit en PS2, ou en USB, certaines touches multimedia ne fonctionnent pas, ou sont attribuées à d'autres touches (parfois même de la souris :/)

J'ai utilisé une tripotée de programmes (xbindkeys, lineak, keylaunch, xmodmap, etc.), en USB et en PS2, en utilisant plusieurs configuration pour Xorg (oui, parce que mon "Logitech Internet Navigator Keyboard", il existe en 4 ou 5 versions, qui semblent avoir plus ou moins le même nom "sur la boîte"... D'après ce que j'ai pu comprendre, mon clavier serait en fait un "Logitech iTouch Internet Navigator Keyboard SE" -sont forts chez Logitech pour les noms.. enfin je dis ça, c'est partout pareil...)

Y'a quelques heures, j'ai lu que le problème des touches non/mal-detectées devrait apparaître uniquement en USB, et je me réjouissais déjà de cocher la case "Touches multimedia", sur ma TODO list (nouvelle installation de Gentoo, il y a quelques jours; j'ai encore beaucoup de choses à regler), mais visiblement, brancher le clavier en PS2 change rien du tout...

Je vais essayer encore deux trois trucs, et puis je laisserais ça de côté, si ça echoue, à moins que quelqu'un ait une solution miracle...

Par contre, si quelqu'un connait un clavier, avec un nombre raisonnable de touches multimédia (contrôle de base d'un lecteur de fichiers audio, et puis 5-6 autres touches), dont les touches multimedia fonctionnent *parfaitement* et *complètement*, sous Linux, sans avoir à toucher aux fichiers de configuration interne de XFree86 (les fichiers qui definissent les keycodes & co), faîtes moi signe...

Cyao...

Lien vers le commentaire
Partager sur d’autres sites

Bon, premierement, il faut voir si tes touches sont bien detectees. Pour cela, ouvres une console evidemment ( le jour ou je dirais a qq'un clique la, puis la.... il est pas ne ! ) et lances "xev". Lorsque tu appuieras sur tes touches ( multimedia ou nom ) tu verras dans la console un affichage conernant la touche que tu as presse. Si tu as reussi a afficher qqqchose lorsque tu presses tes touches multimedias, c'est qu'elles sont bien la, il suffit juste de les configurer. si elles ne sont pas la en revanche, ben dans l'etat actuel des choses, ton noyau ne les reconnait pas. A voir pour patcher ou mettre a jour.

Pour les configurer, ben apres ca depend de ce que tu utilises. Sous fluxbox, tu pourrais faire cela en ajoutant ces touches dans ~/.fluxbox/keys et modifier ensuite ~/.fulxbox/init. Par contre, sur un autre wm, je ne connais pas trop, mais ca depend de ce que tu as. testes deja xev, on verra apres.... :francais:

Lien vers le commentaire
Partager sur d’autres sites

Bon, premierement, il faut voir si tes touches sont bien detectees. Pour cela, ouvres une console evidemment ( le jour ou je dirais a qq'un clique la, puis la.... il est pas ne ! ) et lances "xev".

Déjà fait :ouioui: C'est ce que j'entendais pas "certaines touches multimedia ne fonctionnent pas, ou sont attribuées à d'autres touches" :eeek: (j'ai aussi essayé "xbindkeys -k" et "lineakd -v", au cas où xev aurait un problème quelconque)

J'en ai configuré qq unes sur le clavier de mon portable en utilisant le contenu de cet article : http://www.loria.fr/~thome/d600/ rubrique "Function keys"

J'ai regardé un peu le patch qu'ils proposaient, c'est un peu le truc que je redoutais de faire :eeek: J'aurai aimé pouvoir garder une installation 'propre' (garder que des programmes inclus dans Gentoo, et rien modifier ailleurs que dans /etc et /home...)

Enfin bon, il semble que ce soit la seule solution :/ Y'a aussi la valeur "maximum", dans certains fichiers, qui est à 255, alors qu'il semble que certaines de mes touches multimedia devraient renvoyer un keycode supérieur (jusqu'à 260 apparemment)... -ça serait la raison pour laquelle elles ne sont pas detectée avec xev & co...

Y a ca aussi, j'ai lu vite fait en diagonale mais ca a l'air plutot pas mal ( c'est lea quoi...) :

Vu aussi :sm: Effectivement j'ai trouvé d'autres trucs à tester grâce à cet article, mais ça na pas été suffisant :/

Bon, je vais tester cette histoire de maximum plus en détails (déjà testé une fois, sans résultats, mais dans l'en-tête du fichier que j'ai modifié, y'avait plusieurs noms de fichiers, je vais voir ce qu'ils contiennent :D)

Lien vers le commentaire
Partager sur d’autres sites

Bon, j'ai essayé aussi 'showkey -s', pour récuperer les scancodes, mais ça change rien, certaines touches sont réellement pas détectées :/ Y'a une partie des touches qui fonctionnent bien (notamment la partie multimedia), je suppose que je pourrai m'en satisfaire pour l'instant... (maintenant que je sais comment binder des combinaisons de touches, je vais plutôt utiliser les touches classiques... au moins c'est sûr de fonctionner :/

[Edit:

Ah oui une question, parce que j'ai la flemme de tester (et j'ai pas envie de me retrouver sans clavier au boot), si dans mon BIOS, j'attribue la gestion du clavier USB au BIOS, est-ce que ça fonctionne comme une émulation PS2, ou bien ça reste géré comme un clavier USB? (et est-ce que Linux reprend le contrôle du clavier USB, ou bien est-ce qu'il reste géré par le BIOS?)

Parce que peut être qu'en laissant la gestion du clavier USB à l'OS, ça changera quelque chose... (le problème, dans ce cas là, c'est qu'avant le boot de Linux, je peux pas me servir du clavier... embêtant si y'a un problème avec Grub :/)

]

[Edit2: ah, je regardais un problème avec les drivers ATI, et je me suis aperçu que le kernel voyait les touches, qu'elles étaient inconnues, et qu'il fallait les regler avec setkeycodes :francais: J'vais chercher la liste des keycodes inutilisés, et regler tout ça... Un nouvel espoir s'eveille :fumer:]

Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai enfin reussi :byebye:

Pour information, voici ce qu'il faut faire si vous avez un clavier avec des touches multimedia, dont certaines ne sont absolument pas detectées par Linux ("showkey -s" donne rien)

- Quittez X (il peut sûrement y avoir des interferences)

- Allez voir votre /var/log/messages (par défaut, faut être root pour le voir), et vérifiez l'heure du dernier message (tout en bas, donc), histoire de bien voir les nouveaux messages du kernel, des anciens...

- Appuyez sur une touche de votre clavier qui n'est pas detectée, et rechargez le fichier /var/log/messages

Vous devriez avoir le nouveau message suivant:

Aug  2 15:02:58 atkbd.c: Unknown key pressed (translated set 2, code 0x91 on isa0060/serio0).
Aug  2 15:02:58 atkbd.c: Use 'setkeycodes e011 <keycode>' to make it known.
Aug  2 15:02:59 atkbd.c: Unknown key released (translated set 2, code 0x91 on isa0060/serio0).
Aug  2 15:02:59 atkbd.c: Use 'setkeycodes e011 <keycode>' to make it known.

- Vous devez trouver des keycodes inutilisés: j'ai utilisé 124 à 128 parce qu'ils semblaient inutilisés par XFree86, mais finallement, XFree86 change les keycodes, donc ça n'a plus aucune signification... (si vous voulez en trouver plus, ou le faire plus sérieusement, allez voir dans google)

- Tapez "setkeycodes e011 124" (en adaptant selon le cas, bien sûr)

A partir de là, la touche est connue par le kernel, mais ne possède théoriquement aucune fonction (sauf si le keycode est déjà utilisé :cap:)

Je vais pas détailler, mais pour tester la touche dans la console, vous pouvez créer un fichier genre loadkeysrc, et y mettre "keycode 124 = space"... puis executez "loadkeys loadkeysrc"

La touche pour laquelle vous avez attribué le keycode 124, correspond maintenant à un espace ^_^ (J'ai pas encore déterminé si les changements restaient après un reboot, à vous de tester :D)

Pour la configuration sous XFree86, comme j'ai dis, le keycode change (je sais pas encore selon quelles règles, faudra que j'aille voir les fichiers de définition de mon clavier sous X), donc executez simplement xev, ou 'xbindkeys -k', pour connaître le nouveau keycode de la touche...

A partir du keycode, utilisez xmodmap pour attribuer une fonction à la touche, sous X... (c'est là que la plupart des tutos sur la question commencent, vous pouvez trouver facilement de l'aide pour la suite :p)

Bon, je vais finir de configurer tout ça ^_^ *heureux*

[Edit:

Ah oui, petite astuce aussi, pour ceux qui ont un clavier, comme le Logitech Internet Navigator Keyboard, avec des fonctions alternatives sur les touches F1-F12, et dont les fonctions alternatives sont activées par défaut (quelle aberration)... vous pouvez associer les touches alternatives aux même keycodes que les touches de fonction classique -sous la console, et X- (pour connaître leur scancode, activez les fonctions alternatives, et faîtes pareil que pour les touches multimedia classiques)... Ca vous permet de plus avoir besoin d'appuyer sur la touche d'activation des touches de fonctions classiques.. (puisqu'elle est pas activable en software -c'est un mecanisme interne au clavier) A noter, bien sûr, qu'avant le boot de Linux, si vous avez besoin de ces touches de fonction, vous serez tout de même obligé d'appuyer sur la touche de verouillage des touches de fonction classiques... (mais au cours d'un demarrage classique, ça fait toujours ça de moins à appuyer... -quelle oppression tous ces trucs àfaire au demarrage :p)

]

[Edit2: Bon, tout fonctionne à merveille, je suis vraiment content :p]

Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai voulu faire ça plus proprement, en associant les scancodes générés par mon clavier, et les keycodes du fichier /usr/X11R6/lib/X11/xkb/scancodes/xfree86 (grâce aux infos de config (association scancodes/keysyms) de mon clavier dans /usr/X11R6/lib/X11/xkb/symbols/inet)... Donc tout fonctionne parfaitement sous la console, le problème c'est que quand je lance X, il me remap toutes les touches multimédia... Et ça j'arrive pas à comprendre pourquoi... Bien sûr, c'est normal que X modifie les keysyms, en fonction des choix dans le fichier de config de XFree86, mais pourquoi il modifie les associations scancodes/keycodes?! °[o_O]°

Autre problème, j'ai corrigé les keysyms avec xmodmap, en fonction des keycodes que me filait xev, pour les touches multimedia (sous X, donc), ils sont parfaitement detectés par xev (genre la touche Mail affiche comme keysyms "XF86Mail"), mais keylaunch (qui permet d'associer keysyms/programmes) ne lance rien quand j'appuie sur la touche Mail :/ (Alors que ça fonctionnait bien avant, donc c'est théoriquement pas un problème de config de keylaunch -et il s'occupe que des symkeys, donc ça devrait fonctionner, théoriquement... :/)

Théoriquement, XFree86 devrait utiliser le fichier /usr/X11R6/lib/X11/xkb/symbols/inet (mon fichier de config de XFree86 est bien configuré pour utiliser mon clavier définit dans ce fichier), et associer directement les scancodes et les keysyms, en associant en interne les scancodes en keycodes (comme définit par la keymap), puis les scancodes en keysyms... non?

Si encore j'avais associé les scancodes/keycodes au hasard, sous la console, je comprendrai que XFree86 remap mes touches multimédia, en fonction de /usr/X11R6/lib/X11/xkb/scancodes/xfree86, mais là, comme je l'ai dis, j'ai utilisé les associations scancodes/keycodes de ce fichier, pour définir les associations scancodes/keycodes sous la console... Est-ce que les modèles de claviers non standards utilisent un autre fichier que /usr/X11R6/lib/X11/xkb/scancodes/xfree86 pour définir les associations scancodes/keycodes des touches multimédia? :/ Je vais essayer de voir de ce côté là, c'est peut-être le plus probable pour expliquer les différences, étant donné que je me suis basé sur /usr/X11R6/lib/X11/xkb/scancodes/xfree86 pour ces fameuses associations scancodes/keycodes sous la console...

Si je trouve un truc propre à la fin, pour tout faire fonctionner, j'essayerais de faire un tuto un peu plus précis :byebye:

[Edit: Après avoir lu le fichier README dans /usr/X11R6/lib/X11/xkb/scancodes/, je me suis aperçu que le fichier xfree86 dans ce repertoire reliait les keycodes à des noms symboliques... Bon ces noms symboliques, notamment pour les touches multimédia, sont théoriquement représentatifs des scancodes associés, mais vu que c'est que des noms symboliques, c'est pas ce fichier qui associe scancodes/keycodes... :/ Je vais essayer d'utiliser ces noms symboliques dans xmodmap, au lieu des keycodes... (théoriquement, ça sera plus standard, puisque peut importe le keycode, le nom symbolique restera le même...)]

[Edit2: Ahhhhhh.. je crois que j'ai compris ;) /usr/X11R6/lib/X11/xkb/symbols/inet associe pas scancodes/keysyms, il associe des liens symboliques aux keysyms :ouioui: Ces liens étant représentatifs des scancodes, en fait, y'a aucune association directe avec les keycodes...

Exemple:

Dans /usr/X11R6/lib/X11/xkb/symbols/inet, y'a:

key <I6C>	{	[ XF86Mail  ]	};

... qui associe donc le lien symbolique I6C (représente le scancode e06c), au keysym XF86Mail.

Maintenant, dans le fichier /usr/X11R6/lib/X11/xkb/scancodes/xfree86, on a:

<I6C> =   236;

Qui associe le lien symbolique au keycode 236... Donc en gros, si tout allait bien, on aurait XF86Mail associé au keycode 236... Mais il semble donc que ce soit pas le fichier /usr/X11R6/lib/X11/xkb/scancodes/xfree86 qui soit utilisé pour mapper mon clavier... Donc si j'utilise uniquement le lien symbolique, j'aurai même pas besoin de rechercher quel fichier est utilisé, puisque c'est les liens symboliques qui servent à associer scancodes/keysyms ^_^ (A moins que je veuille avoir les même keycodes sous la console aussi, mais c'est pas important)

Le problème, c'est que la première fois que j'ai testé, j'avais donc associés scancodes/keycodes pour la console, la configuration de XFree86, qui allait chercher dans /usr/X11R6/lib/X11/xkb/symbols/inet les associations liens symboliques/keysyms pour mon clavier, et keylaunch qui associait keysyms/programmes... Même sans savoir que c'était uniquement des liens symboliques, j'avais rien fait qui aurait pu deregler tout ça, et ça aurait du fonctionner :/

Enfin bon, je vais retester avec xmodmap, en utilisant les liens symboliques, et puis je retesterai sans xmodmap, comme au début, pour voir si ça fonctionne tout simplique comme ça devrait :/

]

Donc théoriquement,

Lien vers le commentaire
Partager sur d’autres sites

Je comprend pas...

Un "setxkbmap -print" me donne:

xkb_keymap {
xkb_keycodes  { include "xfree86+aliases(azerty)"	};
xkb_types     { include "complete"	};
xkb_compat    { include "complete"	};
xkb_symbols   { include "pc/pc(pc105)+pc/fr+inet(logiinkse)"	};
xkb_geometry  { include "pc(pc104)"	};
};

Donc pour les symboles, il est bien censé appliquer les associations propres à mon "Logitech iTouch Internet Navigator Keyboard SE" (logiinkse)... Et pour les keycodes, il va bien chercher dans le fichier xfree86, donc je devrai avoir les keycodes définis dans ce fichier (aliases(azerty) contient rien de particulier pour le cas actuel)

Pourquoi diable ces règles ne sont pas respectées?! Y'a encore une couche par dessus Xkb, qui remappe tout? :/

[20 minutes plus tard]

Bon, en gros, Xkb considère que le symbole I6C (entre beaucoup d'autres, mais c'est pour coller à mon exemple d'au dessus) n'est pas définit... Enfin c'est comme ça que le l'interprete, puisque xmodmap veut pas me l'associer à un autre keysym... (alors qu'il associe très bien les symboles plus classiques style "A", et "B" (d'ailleurs j'arrive plus à les remettre normalement, je suis oaliger de copier coller mes B/b, parce qu'ils font des A/a :-D (*va relancer X* ^_^)

[Edit: Y'a vraiment personne qui connait pas mal Xkb dans le coin? :'( Je suis sûr que c'est juste un oublie quelconque (enfin un oublie très peu documenté :/) ]

[Edit2: Bon, xmodmap refuse d'associer des keycodes, à des keysyms non déclarés... Je vais chercher dans le repertoire des symbols, au cas où je trouve une déclaration quelconque, des symboles genre I6C... Sinon je peux utiliser un logiciel, pour 'créer' des keysyms? (j'ai vraiment pas envie de modifier des fichiers en dehors de /etc et /home :/)]

[Edit3:

Y'a aucun fichier de symboles qui contiennent I6C, à part inet, qui est déjà inclus, donc y'a vraiment rien d'autre à faire de ce côté là...

[10 minutes plus tard]

Bon oki, en fait, on peut utiliser que les keysyms définis dans /usr/X11R6/lib/X11/XKeysymDB et dans /usr/X11R6/include/X11/keysym.h :/ Je vais voir si y'a moyen de modifier ces fichiers autrement qu'en les éditant à la barbare (et faut que je vois aussi à quoi correspondent exactement les noms derrière chaque keysym)...

]

Lien vers le commentaire
Partager sur d’autres sites

Moi, ça marche niquel avec mon Cordless Desktop MX...

En USB...émulation dans le bios pour pouvoir utiliser grub;)...tout marche (pas de pb dans le /var/log/messages)

Et c'est géré par gnome !

Je poste quand même la config de X

Section "InputDevice"

        Identifier  "CordlessMX"

        Driver      "keyboard"

        Option      "CoreKeyboard"

        Option "XkbRules" "xfree86"

        Option "XkbModel" "pc105"

        Option "XkbLayout" "fr"

EndSection

Lien vers le commentaire
Partager sur d’autres sites

En USB...émulation dans le bios pour pouvoir utiliser grub;)...tout marche (pas de pb dans le /var/log/messages)

Et c'est géré par gnome !

Je poste quand même la config de X

J'ai abandonné, pour l'instant... y'a trop de trucs que j'arrive pas à expliquer, et j'ai encore beaucoup d'autres choses à faire pour finir mon installation de Gentoo :/ Si quelqu'un connait des sites avec des infos sur la gestion des claviers (scancodes, keycodes, keysyms, etc.), que ce soit sous la console, ou XFree86 (genre pourquoi XFree86 remappe les associations scancodes/keycodes, ou bien pourquoi c'est pas les mêmes keycodes uqi sont générés en USB, et en PS2, etc.), n'hesitez pas à me faire signe :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...