J'ai acheté un Logitech M545 hier et il ne se comporte pas comme il se doit. Avec mon ancien M705, je pouvais utiliser les boutons au pouce pour revenir en arrière dans Firefox, Thunar, etc., mais avec le M545, ils n'envoient même pas les codes normaux pour les pressions sur les boutons. Voici ce que je reçois:
Bouton Précédent:
KeyPress event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968516, (47,78), root:(3157,978),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968516, (47,78), root:(3157,978),
state 0x50, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XmbLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968524, (47,78), root:(3157,978),
state 0x50, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7968530, (47,78), root:(3157,978),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Bouton Forwards:
KeyPress event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7969328, (47,78), root:(3157,978),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x7000001,
root 0x2d3, subw 0x0, time 7969436, (47,78), root:(3157,978),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
J'ai essayé avec Debian et Ubuntu vivid, plusieurs noyaux différents.
Comment puis-je remapper ces boutons pour obtenir le comportement auquel je suis habitué et comment les différencier des appuis au clavier? De plus, puisque les deux boutons envoient Super_L, comment puis-je les distinguer?
Si remapper signifie que je perds Super_L du clavier, alors qu’il en soit, même si ce n’est pas idéal.
Des idées?
Je viens de faire un repo sur GitHub , qui fournit le pilote pour M560/M545/M546.
Il suffit de le télécharger et de vérifier la source dans la bonne version du noyau, puis d’exécuter make && Sudo make install
. Ensuite, vous pouvez utiliser xbindkeys-config
pour le mapper.
En règle générale, vous devez exécuter un utilitaire Logitech pour reprogrammer les boutons dans ce cas. Fonctionne bien via VirtualBox.
(de l'expérience avec mon G300 et du fait que la description du M545 indique qu'il est programmable)
Une autre possibilité est le démon evrouter. Il peut changer les événements des périphériques d'entrée à la volée. Peut être utilisé pour résoudre le problème ou étendre encore plus la fonctionnalité des boutons.
J'ai (en quelque sorte) réussi à y arriver.
Créez "/etc/udev/hwdb.d/90-logitech-m-545.hwdb" avec les éléments suivants:
# Logitech M545
keyboard:usb:v046DpC52B*
KEYBOARD_KEY_70007=back
KEYBOARD_KEY_700E3=forward
Ensuite:
udevadm hwdb --update
Débranchez le récepteur et rebranchez-le, et les boutons du pouce se comportent désormais normalement au moins dans Firefox.
Il ne s'agit que d'une solution de contournement, car il envoie toujours des événements de clavier, mais il fait ce que je veux principalement.
EDIT: code fixe