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.
xbindkeys
configuré pour exécuter lorsque vous démarrez à droite? Pouvez-vous le désactiver et réessayer?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 avecxinput 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).Réponses:
Pour simuler les événements du clavier, je vous suggère le grand outil xdotool .
1. Installez
xdotool
via le terminal ( CTRL+ ALT+ T):ou utilisez le Centre logiciel .
2. Créez un script qui utilise xdotool pour émuler les événements de clé vers le bas de CTRLet v. Dans le terminal:
Copiez le contenu suivant dans la fenêtre de l'éditeur qui s'est ouverte. Après avoir copié le code, enregistrez-le, puis fermez-le:
Rendez maintenant le script exécutable:
3. Déconnectez-vous et connectez-vous pour recharger votre PATH .
4. Créez le raccourci personnalisé
Allez à
System Settings
, puis allez àKeyboard
, alorsShortcuts
.Appuyez sur le
+
bouton en bas de la boîte de dialogue. Fournir un nom pour le raccourci que vous êtes sur le point de créer et pour le remplissage de commande en:fakepaste
. Appuyez surOK
.À côté de votre nouveau raccourci, vous verrez
disabled
. Cliquez sur ce texte, puis appuyez sur la touche que vous souhaitez attribuer à votre émulation de clavier.Vous devriez maintenant pouvoir utiliser votre clé de recherche pour coller!
la source
Solution xbindkeys avec xdotool
Pour cette solution, vous aurez besoin
xbindkeys
etxdotool
Tuez les xbindkeys et videz la configuration de vos boutons
et
Ajoutez vos nouvelles fixations
Vous pouvez maintenant modifier ce fichier pour ajouter des liaisons personnalisées, celles-ci ont la forme
donc si vous ajoutez
vous ouvrirez
gedit
chaque fois que vous faites défiler vers le haut.Alors maintenant, vous pouvez essayer l'une des options suivantes, choisissez celle qui vous convient le mieux. Dans tous les cas,
xdotool click 2
sera émulé, c'est la pression du bouton central de la souris, et cela collera les terminaux internes et externes.intercepter le 225 depuis votre souris :
intercepter le code clé 225 en général :
remplacez tous les
XF86Search
événements (rétablissez d'abord les paramètres de votre souris aux paramètres d'origine, afin que vous récupériezXF86Search
):Lancez xbindkeys et testez
Courir
et voyez si cela fonctionne.
la source