Я настроил свою мышь 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
#################################
Заранее спасибо!
Существует Обходное решение с большим инструментом xinput
В Вашем случае у Вас есть общие 3 устройства мыши 2, встроены, и каждый - Ваша Внешняя мышь.
сначала мы должны получить идентификатор для этих 3 устройств..
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 устройства, это - Исходные данные Мыши
- PixArt USB Оптическая Мышь id=10
- Сенсорная панель ETPS/2 Elantech id=12
- 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
#####################################
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.
~/.xbindkeysrc
содержание файла как ниже.Содержание:
######### MultimediaControl #########
# backward button => my Command
"gnome-control-center"
m:0x0 + b:19
# forward button => my Command
"gnome-tweaks"
m:0x0 + b:20
#####################################
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.
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, в то время как другие два устройства имеют свои исходные функции, который является прокруткой и вниз.
Это отображение кнопки не сохранится после выхода из системы или перезагрузки.
xinput --set-button-map 16 1 2 3 19 20
для выполнения в системе запускают.Обратите внимание на то, что при изменении слота USB мыши Logitech в будущем идентификатор может варьироваться из списка xinput, и это не будет работать. Необходимо получить идентификатор и изменить его в команде запуска.