1

Я только что купил 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

Я решил использовать 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?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .