ButtonMapping - Parametri posizionali


11

In un file di configurazione X i pulsanti del mouse possono essere mappati usando un'opzione ButtonMapping:

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

La modifica dell'ordine dei numeri modifica il comportamento dei pulsanti del mouse. Tuttavia non riesco a trovare alcuna documentazione che descriva come viene assegnato il comportamento. Che poca documentazione c'è, ho aiutato a scrivere.

Ad esempio, se la mappatura dei pulsanti è stata scritta in questo modo:

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

Vorremmo documentare queste posizioni come:

  • a - Clic sinistro
  • b - Medio
  • c - Clic destro
  • d - Scorrere in avanti
  • e - Scorrere all'indietro
  • f - Avanti
  • g - Indietro
  • h - Scorrimento orizzontale
  • i - Scorrimento verticale

La mia domanda quindi: cosa rappresentano realmente i valori posizionali di un attraverso e come sono mappati ai pulsanti del mouse?

Aggiornare

Esecuzione di xmodmap -ppspettacoli:

$ 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

Ciò non è utile in quanto non contiene informazioni che un essere umano può utilizzare sugli attributi fisici del mouse (ovvero mostrare due colonne di numeri è inutile senza i nomi dei pulsanti, come "pulsante sinistro"). Quindi, sebbene tecnicamente questo possa rispondere alla domanda di "come sono mappati", la domanda rimane senza risposta in senso pratico.


AFAICG, i valori sono i numeri dei pulsanti come riportato da xev. Quindi, ad esempio, nel tuo esempio, il pulsante in alto a destra della trackball di Kensington Slimblade è il numero 8, assegnato allo scorrimento orizzontale (indietro, nei browser Web).
LFD

Risposte:


2

Penso che dovresti guardarlo in questo modo:

                        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 posizione che indica l'id chiave come riportato dal mouse (tramite driver). Quindi spetta al produttore come ordinarli, tuttavia la maggior parte si attiene all'ordine comune.

    Mouse utilizza ancora i vecchi protocolli come PS2, non ha un modo per memorizzare o comunicare informazioni sui pulsanti disponibili e sulle loro funzioni. Quindi il server X non può dirti l'id di ogni pulsante fisico, solo provandoli usando uno strumento come xevquello mostra gli eventi X:

    xev -event mouse
    

    O evtestche mostra gli eventi non elaborati:

    sudo evtest
    
  • Le chiavi logiche sono quelle effettivamente mappate altrove per funzioni extra. A questo livello, X li guarda come: button1, button2, button3, button4, ..., button24 e non conosce la loro funzione.

Esempi di riferimento ufficiali:

  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.

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


Questa è un'informazione eccellente. Sfortunatamente, xmodmap -ppnon mostra i nomi (ad es. "Pulsante sinistro", "pulsante ruota") per i pulsanti fisici come da documentazione. Vedi il mio aggiornamento alla domanda.
Dave Jarvis,

@DaveJarvis, ho aggiornato la mia risposta. potrebbe essere: / dovremmo aspettare la prossima generazione di topi, quelli intelligenti! o potrebbe non essere necessario per il mouse in futuro. :)
user.dz

O un database pubblico di dispositivi su cui è possibile eseguire query per accertare i nomi delle mappe dei pulsanti?
Dave Jarvis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.