ButtonMapping - parametry pozycji

11

W pliku konfiguracyjnym X przyciski myszy można zamapować za pomocą opcji ButtonMapping:

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection

Zmiana kolejności liczb zmienia zachowanie przycisków myszy. Nie mogę jednak znaleźć żadnej dokumentacji opisującej sposób przypisywania zachowania. Jak mało jest dokumentacji , pomogłem napisać.

Na przykład, jeśli mapowanie przycisków zostało zapisane w ten sposób:

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

Udokumentowalibyśmy te pozycje jako:

  • a - Kliknij lewym przyciskiem
  • b - Środkowy
  • c - Kliknij prawym przyciskiem myszy
  • d - Przewiń do przodu
  • e - Przewiń do tyłu
  • f - Naprzód
  • g - Wstecz
  • h - Przewijanie w poziomie
  • i - Przewijanie w pionie

Moje pytanie zatem: co zrobić pozycyjne wartości przez I rzeczywiście reprezentują i jak są mapowane do przycisków myszy?

Aktualizacja

Uruchamianie xmodmap -ppprogramów:

$ 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

Nie jest to przydatne, ponieważ nie zawiera żadnych informacji, które człowiek mógłby wykorzystać na temat fizycznych atrybutów myszy (tzn. Pokazanie dwóch kolumn liczb jest bezużyteczne bez nazw przycisków, takich jak „lewy przycisk”). Chociaż technicznie może to odpowiedzieć na pytanie „w jaki sposób są one mapowane”, pytanie pozostaje praktycznie bez odpowiedzi.

Dave Jarvis
źródło
AFAICG, wartościami są liczby przycisków podane przez xev. Tak więc, na przykład, w twoim przykładzie, prawy górny przycisk mojego trackballa Kensington Slimblade ma numer 8, przypisany do przewijania w poziomie (wstecz, w przeglądarkach internetowych).
Leandro

Odpowiedzi:

2

Myślę, że powinieneś spojrzeć na to w ten sposób:

                        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
  • Pozycja wskazująca identyfikator klucza podana przez mysz (przez sterownik). Więc to od producenta zależy, jak je zamówić, jednak większość z nich przestrzega wspólnego zamówienia.

    Myszy nadal używają starych protokołów, takich jak PS2, nie ma sposobu przechowywania ani informowania o dostępnych przyciskach i ich funkcjach. Tak więc serwer X nie może podać ci identyfikatora każdego przycisku fizycznego, tylko wypróbowując je za pomocą takiego narzędzia xev, pokazuje zdarzenia X:

    xev -event mouse
    

    Lub evtestpokazuje surowe zdarzenia:

    sudo evtest
    
  • Klucz logiczny to te, które faktycznie zostały zamapowane gdzie indziej na dodatkowe funkcje. Na tym poziomie X patrzy na nich jako: przycisk1, przycisk2, przycisk3, przycisk4, ..., przycisk24 i nie zna ich funkcji.

Oficjalne przykłady referencyjne:

  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.

Źródło: ftp://ftp.x.org/pub/current/doc/mouse.txt

user.dz
źródło
To doskonała informacja. Niestety xmodmap -ppnie wyświetla nazw (np. „Lewy przycisk”, „kółko”) fizycznych przycisków, zgodnie z dokumentacją. Zobacz moją aktualizację pytania.
Dave Jarvis,
@DaveJarvis, zaktualizowałem moją odpowiedź. mogą być: / powinniśmy poczekać na następną generację myszy, inteligentne! lub w przyszłości nie będzie potrzeby używania myszy. :)
user.dz
A może publiczna baza danych urządzeń, w których można wyszukiwać nazwy map przycisków?
Dave Jarvis,