Dans un fichier de configuration X, les boutons de la souris peuvent être mappés à l'aide d'une option ButtonMapping:
Section "InputClass"
# ...
Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
# ...
EndSection
Changer l'ordre des nombres change le comportement des boutons de la souris. Pourtant, je ne trouve aucun documentation décrivant comment le comportement est attribué. Qu'est-ce que peu de documentation il y a, j'ai aidé à écrire.
Par exemple, si le mappage de bouton a été écrit ainsi:
Option "ButtonMapping" "a b c d e f g h i"
Nous documenterions ces positions comme:
Ma question alors: que font les valeurs de position de a à i - représente réellement et comment sont-ils mappés aux boutons de la souris?
Lancer xmodmap -pp
montre:
$ xmodmap -pp
There are 10 pointer buttons defined.
Physical Button
Button Code
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Ce n’est pas utile car il ne contient aucune information qu’un humain peut utiliser sur les attributs physiques de la souris (c’est-à-dire que l’affichage de deux colonnes de chiffres est inutile sans les noms de boutons, tels que "left bouton"). Donc, bien que techniquement cela puisse répondre à la question "comment sont-ils cartographiés", la question reste sans réponse dans un sens pratique.
Je pense que vous devriez le regarder de cette façon:
1 2 3 4 5 6 7 8 9 <--position-- physical keys
Option "ButtonMapping" "1 9 3 4 5 6 7 8 2" <--function-- logical keys
La position qui indique l’identifiant de la clé tel qu’indiqué par la souris (via le pilote). C'est donc au fabricant de décider comment les commander, bien que la plupart s'en tiennent à une commande commune.
La souris utilise toujours les anciens protocoles tels que PS2, elle n’a pas de moyen de stocker ou de donner des informations sur les boutons disponibles et leurs fonctions. Donc, le serveur X ne peut pas vous dire l'id de chaque bouton physique, seulement en les essayant en utilisant un outil comme xev
qui affiche les événements X:
xev -event mouse
Ou evtest
qui affiche les événements bruts:
Sudo evtest
Les clés logiques sont celles réellement mappées ailleurs pour des fonctions supplémentaires. A ce niveau, X les regarde comme: button1, button2, button3, button4, ..., button24 et il ne connaît pas leur fonction.
Exemples de référence officiels:
7. Configuration Examples
This section shows some example InputDevice section for popular mice.
All the examples assume that the mouse is connected to the PS/2 mouse
port, and the OS supports the PS/2 mouse initialization. It is also
assumed that /dev/mouse is a link to the PS/2 mouse port.
Logitech MouseMan+ has 4 buttons and a wheel. The following example
makes the wheel movement available as the button 5 and 6.
Section "InputDevice"
Identifier "MouseMan+"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "MouseManPlusPS/2"
Option "Buttons" "6"
Option "ZAxisMapping" "5 6"
EndSection
You can change button number assignment using the xmodmap command
AFTER you start the X server with the above configuration. You may
not like to use the wheel as the button 2 and rather want the side
button (button 4) act like the button 2. You may also want to map the
wheel movement to the button 4 and 5. This can be done by the
following command:
xmodmap -e "pointer = 1 6 3 2 4 5"
After this command is run, the correspondence between the buttons and
button numbers will be as shown in the following table.
Physical Buttons Reported as:
------------------------------------
1 Left Button Button 1
2 Wheel Button Button 6
3 Right Button Button 3
4 Side Button Button 2
5 Wheel Negative Move Button 4
6 Wheel Positive Move Button 5
Starting in the Xorg 6.9 release, you can also achieve this in your
configuration file by adding this to the "InputDevice" section in
xorg.conf:
Option "ButtonMapping" "1 6 3 2 4 5"
For the MS IntelliMouse Explorer which as a wheel and 5 buttons, you
may have the following InputDevice section.
Section "InputDevice"
Identifier "IntelliMouse Explorer"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "ExplorerPS/2"
Option "Buttons" "7"
Option "ZAxisMapping" "6 7"
EndSection
The IntelliMouse Explorer has 5 buttons, thus, you should give "7" to
the Buttons option if you want to map the wheel movement to buttons (6
and 7). With this configuration, the correspondence between the
buttons and button numbers will be as follows:
Physical Buttons Reported as:
------------------------------------
1 Left Button Button 1
2 Wheel Button Button 2
3 Right Button Button 3
4 Side Button 1 Button 4
5 Side Button 2 Button 5
6 Wheel Negative Move Button 6
7 Wheel Positive Move Button 7
You can change button number assignment using xmodmap AFTER you
started the X server with the above configuration.
xmodmap -e "pointer = 1 2 3 4 7 5 6"
The above command will moves the side button 2 to the button 7 and
make the wheel movement reported as the button 5 and 6. See the table
below.
Physical Buttons Reported as:
------------------------------------
1 Left Button Button 1
2 Wheel Button Button 2
3 Right Button Button 3
4 Side Button 1 Button 4
5 Side Button 2 Button 7
6 Wheel Negative Move Button 5
7 Wheel Positive Move Button 6
For the A4 Tech WinEasy mouse which has two wheels and 3 buttons, you
may have the following InputDevice section.
Section "InputDevice"
Identifier "WinEasy"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "IMPS/2"
Option "Buttons" "7"
Option "ZAxisMapping" "4 5 6 7"
EndSection
The movement of the first wheel is mapped to the button 4 and 5. The
second wheel's movement will be reported as the buttons 6 and 7.
The Kensington Expert mouse is really a trackball. It has 4 buttons
arranged in a rectangle around the ball.