ButtonMapping - Позиционные параметры

11

В файле конфигурации X кнопки мыши могут отображаться с помощью параметра ButtonMapping:

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

Изменение порядка чисел меняет поведение кнопок мыши. Тем не менее я не могу найти документацию, которая описывает, как поведение назначается. Какую там небольшую документацию я помог написать.

Например, если отображение кнопки было написано так:

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

Мы бы зафиксировали эти позиции как:

  • a - Левый клик
  • б - средний
  • c - Правый клик
  • d - Прокрутить вперед
  • e - Прокрутить назад
  • f - вперед
  • г - назад
  • h - горизонтальная прокрутка
  • я - вертикальная прокрутка

Мой вопрос: что тогда делать позиционные значения через I на самом деле представляют и как они отображаются на кнопки мыши?

Обновить

Беговые xmodmap -ppшоу:

$ 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

Это бесполезно, так как не содержит информации, которую человек может использовать о физических атрибутах мыши (т. Е. Показывать два столбца чисел бесполезно без названий кнопок, таких как «левая кнопка»). Таким образом, хотя технически это может ответить на вопрос «как они отображаются», вопрос остается без ответа в любом практическом смысле.

Дейв Джарвис
источник
AFAICG, значения являются номерами кнопок, сообщаемыми xev. Так, например, в вашем примере верхняя правая кнопка моего трекбола Kensington Slimblade имеет номер 8 и предназначена для горизонтальной прокрутки (назад, в веб-браузерах).
Lfd

Ответы:

2

Я думаю, что вы должны смотреть на это так:

                        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
  • Позиция, указывающая идентификатор ключа, сообщаемый мышью (через драйвер). Таким образом, дело производителя сделать заказ, однако большинство придерживается общего порядка.

    Мыши все еще используют старые протоколы, такие как PS2, у него нет способа сохранить или сообщить информацию о доступных кнопках и их функциях. Таким образом, X-сервер не может сказать вам идентификатор каждой физической кнопки, только попробовав их с помощью инструмента, подобного xevкоторому показывает события X:

    xev -event mouse
    

    Или evtestэто показывает необработанные события:

    sudo evtest
    
  • Логический ключ - это те, которые на самом деле отображены где-то еще для дополнительных функций. На этом уровне X смотрит на них как: button1, button2, button3, button4, ..., button24 и не знает их функции.

Официальные справочные примеры:

  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.

Источник: ftp://ftp.x.org/pub/current/doc/mouse.txt

user.dz
источник
Это отличная информация. К сожалению, xmodmap -ppне показывает названия (например, «левая кнопка», «колесико») для физических кнопок согласно документации. Смотрите мое обновление на вопрос.
Дэйв Джарвис
@DaveJarvis, обновил мой ответ. может быть: / мы должны ждать следующего поколения мышей, умных! или может не понадобиться мышь в будущем. :)
user.dz
Или общедоступная база данных устройств, которые могут быть запрошены для определения имен для их карт кнопок?
Дэйв Джарвис