Я пытаюсь переназначить функции кнопок мыши Logitech G700. Используя xinput --list, я вижу, что это считается двумя устройствами (четыре, если учесть различия между проводной и беспроводной связью).
48 will@will-laptop ~]$xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Natural® Ergonomic Keyboard 4000 id=10 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=17 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=18 [slave pointer (2)]
Проблема заключается в том, что кнопки не назначаются по умолчанию, поэтому xev не отображает такие вещи, как «кнопка 12» или что-то подобное, он просто показывает нажатия клавиш, назначенные кнопке (то есть нажатие клавиш). Ctrl_L, KeyPress "w", KeyRelease Ctrl_L, KeyRelease "w"). Это не показывает устройство, и поэтому я не уверен, как переназначить, что должен делать ключ. Кроме того, насколько я могу судить, нет никакого способа сделать аппаратный сброс профилей встроенной памяти, поэтому я не могу сбросить мышь, чтобы фактически дать мне «кнопку 7» или что-то еще.
Я использую Ubuntu 13.10.
Вот что я получаю от xev, когда пытаюсь нажать кнопку «Наклонить колесо влево».
KeyPress event, serial 40, synthetic NO, window 0x4a00001,
root 0x90, subw 0x0, time 13142771, (115,109), root:(2844,1831),
state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x4a00001,
root 0x90, subw 0x0, time 13142771, (115,109), root:(2844,1831),
state 0x14, keycode 25 (keysym 0x77, w), same_screen YES,
XLookupString gives 1 bytes: (17) ""
XmbLookupString gives 1 bytes: (17) ""
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x4a00001,
root 0x90, subw 0x0, time 13142935, (115,109), root:(2844,1831),
state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x4a00001,
root 0x90, subw 0x0, time 13142935, (115,109), root:(2844,1831),
state 0x10, keycode 25 (keysym 0x77, w), same_screen YES,
XLookupString gives 1 bytes: (77) "w"
XFilterEvent returns: False`
Поработав с этим некоторое время и прочитав об этом, я обнаружил, что G700 фактически сохраняет профиль кнопки на мыши, поэтому нажатие кнопки 12 фактически буквально отправляет комбинацию клавиш Ctrl + W. Я использовал машину с Windows и программное обеспечение Logitechs Gaming, чтобы вернуть кнопкам их состояние по умолчанию, а затем они начали сообщать о «кнопке 12» или о чем-то другом в xev.
Существует также приложение solaar , которое программирует устройства Logitech с помощью «универсального» беспроводного USB-разъема Logitech. Он имеет аналогичные возможности и программирует плагин для сопряжения с устройствами и для запуска некоторых настроек устройства. На моей установке 14.04 он поддерживает двустороннюю связь - например, он объявляет, сколько заряда батареи остается в каждом сопряженном устройстве.