Remapper le bouton tactile latéral de la souris Microsoft Sculpt Comfort

12

J'ai récemment acheté une souris Microsoft Sculpt Comfort. Il utilise Bluetooth pour se connecter à mon ordinateur portable et tous les boutons de souris ordinaires fonctionnent parfaitement sous Linux et Windows 7. Ce qui est différent avec cette souris, cependant, c'est qu'elle a une touche spéciale Windows/ Supersur le côté qui lance le menu Démarrer / lorsqu'elle est pressée. Il dispose également d'un capteur tactile qui détecte quand le bouton latéral est poussé vers le haut ou vers le bas et fait vibrer la souris pour reconnaître qu'il a été activé.

Bien sûr, dans Windows, il existe un programme qui me permet de modifier ce que font les traits et de désactiver les vibrations.

Sous Linux, xev détecte uniquement une frappe normale lorsque le bouton latéral est enfoncé ou glissé. Xev ne signale aucune pression sur le bouton de la souris.

Donc ma question est, puis-je changer les pressions de touches envoyées sous Linux?

J'aimerais changer la liaison de clé de tabà down, backspaceà up, (ce que xev rapporte) à ctrl+ alt+ left/ rightpour basculer entre les espaces de travail.

Merci pour toute aide!

user223544
la source
1
Merci pour l'astuce ubfan1, xinput get-button-map me donne 13 boutons. xev et xinput test rapportent uniquement les boutons 1-7. J'ai essayé de remapper les boutons 8-13 en utilisant xinput set-button-map et xbindkeys from link mais rien n'a changé. En appuyant sur la touche de rapports de la touche latérale, appuyez sur 133 (super), sur la touche de rapports vers le haut, appuyez sur 22 (retour arrière), sur la touche de rapports vers le bas, appuyez sur 23 (onglet).
user223544

Réponses:

5

Je viens d'en acheter un moi-même et j'ai trouvé que ce qui suit fonctionnait parfaitement pour moi.

  1. Ouvrez l'éditeur dconf ( sudo apt-get install dconf-editors'il n'est pas déjà installé).
  2. Accédez à org -> gnome -> bureau -> wm -> raccourcis clavier.
  3. Modifiez la valeur de basculer vers l'espace de travail vers le bas en

    ['<Control><Alt>Down', '<Primary><Super>Tab', '<Control><Super>Tab']

    et la valeur de mise sous tension à l' espace de travail en place à

    ['<Control><Alt>Up', '<Primary><Super>BackSpace', '<Control><Super>Backspace']

Axel David Ingolfsson
la source
Cette solution fonctionne de manière plus fiable que la solution que j'ai trouvée avec xbindkeys. Le seul inconvénient par rapport à xbindkeys est que la solution xbindkeys ne semble capturer que les événements de touches de souris, alors que cette solution fonctionnera également si les touches du clavier sont utilisées. Quoi qu'il en soit, la fiabilité de cette solution en fait la meilleure solution.
user223544
2

Donc, puisque la souris Microsoft Sculpt Comfort Mouse n'enregistre pas les pressions de bouton de la souris pour les gestes super et glisser, mais enregistre à la place les pressions de touches du clavier, j'ai utilisé les packages 'xautomation' et 'xbindkeys' pour écouter ces pressions de touches et envoyer Ctrl+ Alt+ Right/ Leftpour basculer entre les espaces de travail. Ce n'est pas une solution idéale, mais cela fonctionne comme 8 fois sur 10.

#Move to left workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Left' 'keyup Control_L' 'keyup Alt_L' 'keyup Left'"
   m:0x4+mod4+m:0x0+c:23
   #Control_L+Super_L+Tab

#Move to right workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Right' 'keyup Control_L' 'keyup Alt_L' 'keyup Right'"
   m:0x4+mod4+m:0x0+c:22
   #Control_L+Super_L+Backspace

Ce que fait ce script xbindkeys, c'est qu'il écoute les pressions sur les touches que les souris glissent vers le haut et les mouvements vers le bas envoyés à l'ordinateur. S'il est détecté, xautomation envoie la séquence de touches standard du bureau de déplacement, control+ alt+ left/ right.

Le geste de balayage vers le haut de la souris envoie la frappe de left control+ left super+ backspace. Le geste de balayage vers le bas de la souris envoie la frappe left control+ left super+ tab. m: 0x4 + mod4 + m: 0x0 + c22 est la combinaison de codes clé réelle qui est détectée par xbindkeys.

Je vais jouer avec un peu plus pour voir si je peux améliorer l'efficacité, mais pour l'instant cela fait le travail. J'espère juste que tabet backspaceque les sorties de la souris ne se gâchent avec aucun travail que je fais.

user223544
la source
1
Pouvez-vous expliquer le fonctionnement de la solution? La souris envoie-t-elle Control_L+Super_L+Tab(d'où viennent les Control_L + Super_L)? Ou faites-vous correspondre les boutons de la souris avec m:0x4+mod4+m:0x0+c:23(Vous avez semblé dire qu'aucun événement de souris n'a été généré dans la question)?
Volker Siegel
J'ai édité ma solution pour expliquer d'où viennent Control_L + Super_L. J'ai également expliqué le but de m: 0x0 + mod4 + m: 0x0 + c: 23.
user223544
0

Je voulais mapper les mêmes boutons pour naviguer dans les onglets de Firefox dans les deux sens. J'utilise xbindkeys et xmacro. Ça marche plutôt bien!

.xbindkeysrc

#Thumb down
"echo 'KeyStrPress Control_L KeyStrPress Tab KeyStrRelease Control_L KeyStrRelease Tab'|xmacroplay :0"
   Control+Mod4+Tab

#Thumb up
"echo 'KeyStrPress Control_L KeyStrPress Shift_L KeyStrPress ISO_Left_Tab KeyStrRelease Control_L KeyStrRelease Shift_L KeyStrRelease ISO_Left_Tab' |xmacroplay :0"
   Control+Mod4+BackSpace
user3229974
la source