Logitech M535 в Linux

845
neclepsio

Я только что купил 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 ), но этот не поддерживается.

1

1 ответ на вопрос

1
neclepsio

Я решил использовать 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оно не требовалось (и, возможно, я могу решить проблему, состоящую в том, что кнопки не повторяются) ... Но я не смог найти коды клавиш для кнопок 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?

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