Как установить xbindkeys отдельно для Trackpoint, Trackpad и Mouse?

Я настроил свою мышь Logitech MX-Revolution с помощью xbindkeys в kUbuntu 18.04. Я установил дополнительные кнопки на колесе прокрутки (влево / вправо), чтобы воспроизвести следующую / предыдущую песню.

Моя проблема в том, что сопоставление клавиш на моей мыши Logitech эквивалентно прокрутке влево / вправо на трекпаде (провод пальцем). Поскольку у моего Lenovo Thinkpad также есть трекпоинт с физическими кнопками мыши, это также эквивалентно нажатию средней кнопки мыши при перемещении трекпоинта влево / вправо.

Как мне сказать xbindkeys, что он должен воспроизводить следующую / предыдущую песню, только если я использую событие key на моей мыши Logitech? Как я могу установить xbindkeys отдельно для разных устройств ввода?

Вот мой файл .xbindkeysrc:

######### MultimediaControl #########

# backward button => previous song       
"xte 'key XF86AudioPrev'"                
   m:0x0 + b:6                                   

# forward button => next song            
"xte 'key XF86AudioNext'"                
   m:0x0 + b:7

#################################

Заранее спасибо!

1
задан 16 April 2019 в 13:38

1 ответ

Существует Обходное решение с большим инструментом xinput

В Вашем случае у Вас есть общие 3 устройства мыши 2, встроены, и каждый - Ваша Внешняя мышь.

сначала мы должны получить идентификатор для этих 3 устройств..

  1. выполненный xinput list

Вывод в качестве примера:

pratap@i7-6550U:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ PixArt USB Optical Mouse                  id=10   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=12   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver Mouse               id=16   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver Consumer Control    id=17   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Toshiba input device                      id=13   [slave  keyboard (3)]
    ↳ Logitech USB Receiver                     id=14   [slave  keyboard (3)]
    ↳ Logitech USB Receiver System Control      id=15   [slave  keyboard (3)]
    ↳ Logitech USB Receiver Consumer Control    id=18   [slave  keyboard (3)]
pratap@i7-6550U:~$ 

У меня есть 3 устройства, это - Исходные данные Мыши

  1. PixArt USB Оптическая Мышь id=10
  2. Сенсорная панель ETPS/2 Elantech id=12
  3. Logitech USB Receiver Mouse id=16

например, я хочу связать две команды, когда Logitech USB Receiver Mouse с id=16 колесом мыши и колесом мыши вниз, которое является кнопками b:4 и b:5

Если мой ~/.xbindkeysrc содержание похоже ниже всех этих 3 устройств, сделает ту же функцию.

######### MultimediaControl #########

# backward button => my Command       
"gnome-control-center"                
   m:0x0 + b:4                                   

# forward button => my Command            
"gnome-tweaks"                
   m:0x0 + b:5

#####################################
  1. выполненный xmodmap -pp и посмотрите, сколько кнопок доступно.

от man xmodmap

       -pp     This option indicates that the current  pointer  map  should  be  printed  on  the
           standard output.

Вывод в качестве примера для xmodmap -pp

pratap@i7-6550U:~$ xmodmap -pp
There are 20 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
       11             11
       12             12
       13             13
       14             14
       15             15
       16             16
       17             17
       18             18
       19             19
       20             20

pratap@i7-6550U:~$ 

это означает даже при том, что у нас нет 20 количества кнопок Physical, мы можем настроить определенную кнопку, чтобы сделать действие другого из этих 20.

  1. Теперь измените ~/.xbindkeysrc содержание файла как ниже.

Содержание:

######### MultimediaControl #########

# backward button => my Command       
"gnome-control-center"                
   m:0x0 + b:19                                   

# forward button => my Command            
"gnome-tweaks"                
   m:0x0 + b:20

#####################################
  1. выполненный killall xbindkeys; xbindkeys

Таким образом, это ясно теперь, когда, если я нажимаю b:19 и b:20, мои команды будут работать.

теперь прием должен снабдить кнопками отображение физических кнопок мыши Logitech с id=16 b:4 и b:5 к b:19 и b:20

от man xinput

   --set-button-map device map_button_1 [map_button_2 [...]]
           Change  the  button mapping of device. The buttons are specified in physical order
           (starting with button 1) and are mapped to the logical button provided. 0 disables
           a button. The default button mapping for a device is 1 2 3 4 5 6 etc.
  1. выполненный xinput --set-button-map 16 1 2 3 19 20

Пример:

pratap@i7-6550U:~$ xinput --set-button-map 16 1 2 3 19 20
pratap@i7-6550U:~$ 

Сделанный, теперь у Вас могут быть свои две команды в ~/.xbindkeysrc выполненный с Вашей Logitech Mouse Wheel Up & Down, в то время как другие два устройства имеют свои исходные функции, который является прокруткой и вниз.

Это отображение кнопки не сохранится после выхода из системы или перезагрузки.

  1. добавьте эту команду xinput --set-button-map 16 1 2 3 19 20 для выполнения в системе запускают.

Обратите внимание на то, что при изменении слота USB мыши Logitech в будущем идентификатор может варьироваться из списка xinput, и это не будет работать. Необходимо получить идентификатор и изменить его в команде запуска.

0
ответ дан 16 April 2019 в 13:38

Другие вопросы по тегам:

Похожие вопросы: