Logitech M535 no Linux

1

Acabei de comprar um mouse Bluetooth Logitech M535. Tem roda basculante, mas está mapeada para os botões "voltar" e "avançar". Para fazê-lo funcionar como rolagem horizontal eu escrevi este script:

#! /bin/dash

MOUSE_ID='xinput list | grep -o 'M535.*pointer' | sed 's/^.*id=\([0-9]*\)[\t].*$//')'
xinput set-button-map $MOUSE_ID 1 2 3 4 5 8 9 6 7 10 11 12

Infelizmente, desta forma, os botões não estão se repetindo.

Além disso, o mouse também tem um botão extra, que envia ALT + TAB (através de um teclado "falso"):

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 

Como posso ligar este botão a algo diferente?

Eu tentei usar xbindkeys , mas não consegui interceptar ALT + TAB. Além disso, mesmo se eu pudesse, eu quero apenas interceptar o teclado falso do mouse, e não consegui encontrar nenhuma maneira de filtrar dispositivos em xbindkeys .

Eu também sei que existem módulos do kernel para mouses similares da Logitech (veja link ), mas este não é suportado.

    
por neclepsio 01.04.2018 / 10:39

1 resposta

1

Eu resolvi usar o hwdb. Eu criei /etc/udev/hwdb.d/10-m535.hwdb :

evdev:input:b0005v046DpB016e1203-*
 KEYBOARD_KEY_700e2=reserved
 KEYBOARD_KEY_7002b=leftmeta

Então:

sudo udevadm hwdb --update
sudo udevadm trigger

E desligue e ligue o mouse. Funciona agora, liguei a tecla meta (Windows).

Eu acho que esta solução poderia ser feita, então o xinput set-button-map não é necessário (e talvez eu possa resolver o problema que os botões não repetem) ... Mas eu não consegui encontrar os códigos de teclas para os botões 6 e 7 esquerda e direita). Eu encontrei os scancodes:

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)

Eu tentei os valores decimais para BTN_SIDE , BTN_EXTRA , BTN_BACK , BTN_FORWARD , BTN_6 , BTN_7 (como definido em /usr/include/linux/input-event-codes.h ) sem sorte.

Outro mouse, com a rolagem horizontal trabalhando fora da caixa, tem a seguinte evtest output:

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

Posso de alguma forma especificar um evento EV_REL com valor para keycode no arquivo hwdb?

    
por 01.04.2018 / 22:55