Logitech M535 в Linux
Я только что купил Bluetooth-мышь Logitech M535. У него есть наклонное колесо, но оно сопоставлено с кнопками "назад" и "вперед". Чтобы заставить его работать как горизонтальная прокрутка, я написал этот скрипт:
#! /bin/dash
MOUSE_ID=`xinput list | grep -o 'M535.*pointer' | sed 's/^.*id=\([0-9]*\)[\t].*$/\1/')`
xinput set-button-map $MOUSE_ID 1 2 3 4 5 8 9 6 7 10 11 12
К сожалению, таким образом кнопки прокрутки не повторяются.
Кроме того, у мыши также есть дополнительная кнопка, которая отправляет ALT+TAB (через "поддельную" клавиатуру):
ignazio@ignazio-HP:~$ xinput | grep M535
⎜ ↳ Bluetooth Mouse M336/M337/M535 id=15 [slave pointer (2)]
↳ Bluetooth Mouse M336/M337/M535 id=16 [slave keyboard (3)]
ignazio@ignazio-HP:~$ xinput test 16
key press 64
key press 23
key release 23
key release 64
Как я могу привязать эту кнопку к чему-то другому?
Я пытался использовать xbindkeys
но не смог заставить его перехватить ALT+TAB. Более того, даже если бы я мог, я хочу перехватывать только с фальшивой клавиатуры от мыши, и я не мог найти какой-либо способ фильтрации устройств в xbindkeys
,
Я также знаю, что для аналогичных мышек Logitech существуют модули ядра (см. https://github.com/CzBiX/logitech-m560), но этот не поддерживается.
2 ответа
Я решил использовать hwdb. я создал /etc/udev/hwdb.d/10-m535.hwdb
:
evdev:input:b0005v046DpB016e1203-*
KEYBOARD_KEY_700e2=reserved
KEYBOARD_KEY_7002b=leftmeta
Затем:
sudo udevadm hwdb --update
sudo udevadm trigger
И выключи и включи мышку. Теперь это работает, я привязал мета (Windows) ключ.
Я думаю, что это решение может быть сделано так xinput set-button-map
не требуется (и, возможно, я могу решить проблему, что кнопки arr не повторяются)... Но я не смог найти коды клавиш для кнопок 6 и 7 (прокрутка влево и вправо). Я нашел коды сканирования:
evdev:input:b0005v046DpB016e1203-*
KEYBOARD_KEY_700e2=reserved
KEYBOARD_KEY_7002b=leftmeta
KEYBOARD_KEY_90004=??? (scroll left - mouse button 6)
KEYBOARD_KEY_90005=??? (scroll right - mouse button 7)
Я пробовал десятичные значения для BTN_SIDE
, BTN_EXTRA
, BTN_BACK
, BTN_FORWARD
, BTN_6
, BTN_7
(как определено в /usr/include/linux/input-event-codes.h
) без удачи.
Еще одна мышь с горизонтальной прокруткой, работающая из коробки, имеет следующее evtest
выход:
Event: time 1522616506.145899, -------------- SYN_REPORT ------------
Event: time 1522616507.105926, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1
Event: time 1522616507.105926, -------------- SYN_REPORT ------------
Event: time 1522616508.191962, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1
Могу ли я как-то указать EV_REL
событие со значением для кода ключа в файле hwdb?
Я решил проблему горизонтальной прокрутки с помощью программного обеспечения с графическим интерфейсом key-mapper, а затем сопоставил кнопку левого колеса (СТОРОНА КНОПКИ) с колесом (правая,1); и правую кнопку колеса на колесо (левое,1).