Logitech M535 en Linux

Logitech M535 en Linux

Acabo de comprar un mouse Bluetooth Logitech M535. Tiene rueda basculante pero está asignada a los botones "atrás" y "adelante". Para que funcione como desplazamiento horizontal, escribí este script:

#! /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

Desafortunadamente, de esta manera, los botones de desplazamiento no se repiten.

Además, el mouse también tiene un botón adicional, que envía ALT+TAB (a través de un 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 

¿Cómo puedo vincular este botón a otra cosa?

Intenté usarlo xbindkeyspero no pude hacer que interceptara ALT+TAB. Además, incluso si pudiera, solo quiero interceptar desde el teclado falso desde el mouse y no pude encontrar ninguna manera de filtrar dispositivos en formato xbindkeys.

También sé que existen módulos de kernel para ratones Logitech similares (consultehttps://github.com/CzBiX/logitech-m560), pero éste no es compatible.

Respuesta1

Resolví el desplazamiento horizontal usando el software de interfaz gráfica de usuario del asignador de teclas y luego asignando el botón de la rueda izquierda (LADO DEL BOTÓN) a la rueda (derecha, 1); y el botón de la rueda derecha a la rueda (izquierda, 1).

Respuesta2

Lo resolví usando hwdb. Yo creé /etc/udev/hwdb.d/10-m535.hwdb:

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

Entonces:

sudo udevadm hwdb --update
sudo udevadm trigger

Y apaga y enciende el mouse. Funciona ahora, vinculé la clave meta (Windows).

Creo que esta solución podría hacerse para que xinput set-button-mapno sea necesaria (y tal vez pueda resolver el problema de que los botones no se repiten)... Pero no pude encontrar los códigos clave para los botones 6 y 7 (desplácese hacia la izquierda y hacia la derecha). Encontré los códigos de escaneo:

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)

Probé los valores decimales para ,,,,, BTN_SIDE( como se define en ) sin suerte BTN_EXTRA.BTN_BACKBTN_FORWARDBTN_6BTN_7/usr/include/linux/input-event-codes.h

Otro mouse, con desplazamiento horizontal listo para usar, tiene el siguiente evtestresultado:

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

¿Puedo de alguna manera especificar un EV_RELevento con valor para el código clave en el archivo hwdb?

información relacionada