ButtonMapping - Paramètres de position


11

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

La modification de l'ordre des nombres modifie le comportement des boutons de la souris. Pourtant, je ne trouve aucune documentation décrivant comment le comportement est attribué. Le peu de documentation qu'il y a, j'ai aidé à écrire.

Par exemple, si le mappage des boutons a été écrit ainsi:

    Option "ButtonMapping" "a b c d e f g h i"

Nous documenterions ces positions comme:

  • a - Clic gauche
  • b - Moyen
  • c - Clic droit
  • d - Faire défiler vers l'avant
  • e - Faire défiler vers l'arrière
  • f - Avant
  • g - En arrière
  • h - Défilement horizontal
  • i - défilement vertical

Ma question est donc: qu'est-ce que les valeurs de position d' un par i représentent en fait et comment sont - ils mis en correspondance aux boutons de la souris?

Mise à jour

Exécution de xmodmap -ppspectacles:

$ 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 elle ne contient aucune information un humain peut utiliser sur les attributs physiques de la souris ( par exemple, montrant deux colonnes de chiffres est inutile sans les noms des boutons, tels que « bouton gauche »). Ainsi , alors que techniquement cela pourrait répondre à la question de « comment sont - ils mis en correspondance », la question reste sans réponse dans un sens pratique.


AFAICG, les valeurs sont les numéros de bouton rapportés par xev. Ainsi, par exemple, dans votre exemple, le bouton supérieur droit de mon trackball Kensington Slimblade est le numéro 8, attribué au défilement horizontal (en arrière, dans les navigateurs Web).
lfd

Réponses:


2

Je pense que vous devriez le voir 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'ID de clé tel que rapporté par la souris (via le pilote). Il appartient donc au fabricant de les commander, mais la plupart s'en tiennent à l'ordre commun.

    Les souris utilisant toujours les anciens protocoles comme la PS2, il n'a pas de moyen de stocker ou de dire des informations sur les boutons disponibles et leurs fonctions. Le serveur X ne peut donc pas vous dire l'id de chaque bouton physique, uniquement en les essayant à l'aide d'un outil comme xevcelui-ci qui montre les événements X:

    xev -event mouse
    

    Ou evtestqui montre les événements bruts:

    sudo evtest
    
  • La clé logique sont celles qui ont été mappées ailleurs pour des fonctions supplémentaires. A ce niveau, X les regarde comme: bouton1, bouton2, bouton3, bouton4, ..., bouton24 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.

Source: ftp://ftp.x.org/pub/current/doc/mouse.txt


Ce sont d'excellentes informations. Malheureusement, xmodmap -ppn'affiche pas les noms (par exemple, "bouton gauche", "bouton de roue") pour les boutons physiques selon la documentation. Voir ma mise à jour de la question.
Dave Jarvis

@DaveJarvis, a mis à jour ma réponse. peut être: / nous devrions attendre la prochaine génération de souris, intelligentes! ou peut-être pas besoin de souris à l'avenir. :)
user.dz

Ou une base de données publique d'appareils qui peuvent être interrogés pour vérifier les noms de leurs mappes de boutons?
Dave Jarvis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.