J'ai un logitech MX400 sans fil. Il a un bouton de recherche que j'aimerais utiliser pour coller (au lieu de la molette de défilement extrêmement sensible mais difficile à appuyer). J'ai déjà remappé d'autres boutons avec xbindkeys et utilisé xev pour trouver le code de pression sur le bouton, mais cela ne fonctionne pas pour le bouton de recherche. en utilisant xev et en cliquant sur le bouton de recherche, j'obtiens les événements suivants
FocusOut event, serial 34, synthetic NO, window 0x3c00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 34, synthetic NO, window 0x3c00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 34, synthetic NO, window 0x0,
keys: 4294967275 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
PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue
Aucun événement ButtonPress. Il semble que le bouton de recherche soit intercepté à un niveau inférieur aux événements X. Des idées? J'ai Ubuntu 12.04. Ubuntu voit en fait le clic et fait apparaître une boîte de dialogue de recherche, mais il n'y a aucune trace d'un événement de clic dans le xev.
Éditer
J'ai vérifié la méthode fournie avec xmodmap. Mon .Xmodmap
contient maintenant la ligne suivante
keycode 225 = XF86Paste NoSymbol XF86Paste``
courir xmodmap ~/.Xmodmap
maintenant désactive complètement le bouton (ou du moins, je n'obtiens aucun résultat en appuyant dessus). J'ai essayé xmodmap -pke
et ça imprime:
keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste
Assez étrange. Toutes les autres entrées sont formatées de manière similaire. Je suis proche de la solution, mais il y a toujours quelque chose de bizarre.
Modifier 2
J'ai essayé d'exécuter xinput (je n'ai jamais entendu parler de cette commande. Des trucs incroyables). Il existe deux entrées pour Logitech. Voici le résultat de la liste de chacun d'eux (id 9 et 10)
Logitech USB Receiver id=9 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 9. Type: XIButtonClass
Buttons supported: 24
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
Button state:
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Class originated from: 9. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: -1.000000
flags: 0x2 ( preferred )
Logitech USB Receiver id=10 [slave pointer (2)]
Reporting 6 classes:
Class originated from: 10. Type: XIButtonClass
Buttons supported: 7
Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
Button state:
Class originated from: 10. Type: XIKeyClass
Keycodes supported: 248
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Le dispositif de test 9 ne fait rien avec le bouton. L'appareil de test 10 fonctionne à la place, et c'est la sortie lorsque je clique
$ xinput test 10
key press 225
key release 225
key press 225
key release 225
key press 225
key release 225
Il apparaît donc que la souris agit comme un clavier à cet égard, mais pour une raison quelconque, xmodmap ne fait rien quand il reçoit la clé 225.
** Éditer **
Je peux confirmer que l'ajout d' keycode 225 = a
impressions à a
chaque fois que je clique sur le bouton. Le problème semble donc être lié à la façon dont XF86Paste est réellement géré. Je l'envoie, mais ce n'est pas du collage.
tail -f /var/log/dmesg
puis essayez d'appuyer sur le bouton. Obtenez-vous une sortie se référant aux touches / boutons?
xinput list
puis découvrez le code du bouton de votre clé de recherche avec xinput test <MOUSE ID>
. Est-ce que ça marche?
xev
afficher les événements XF86Paste / XF86Copy, mais rien ne se passe. Cela signifie que vous devez utiliser la combinaison de touches CTRL + v pour le collage. Xmodmap mappe les boutons 1: 1, mais vous pouvez utiliser les paramètres des raccourcis clavier pour déclencher l'exécution d'une commande lorsque vous appuyez sur une touche (voir ma réponse).
xbindkeys
configuré pour exécuter lorsque vous démarrez à droite? Pouvez-vous le désactiver et réessayer?