Ich habe mir gerade eine Bluetooth-Maus Logitech M535 gekauft. Sie hat ein schwenkbares Mausrad, das aber mit den Tasten „Zurück“ und „Vorwärts“ belegt ist. Damit sie horizontal scrollt, habe ich dieses Skript geschrieben:
#! /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
Leider werden auf diese Weise die Scroll-Buttons nicht wiederholt.
Darüber hinaus verfügt die Maus über eine zusätzliche Taste, die ALT+TAB sendet (über eine „falsche“ Tastatur):
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
Wie kann ich diese Schaltfläche an etwas anderes binden?
Ich habe versucht, es zu verwenden xbindkeys
, konnte es aber nicht dazu bringen, ALT+TAB abzufangen. Außerdem möchte ich, selbst wenn ich es könnte, nur die gefälschte Tastatur von der Maus abfangen und konnte keine Möglichkeit finden, Geräte darin zu filtern xbindkeys
.
Ich weiß auch, dass es Kernelmodule für ähnliche Logitech-Mäuse gibt (siehehttps://github.com/CzBiX/logitech-m560), aber dieses wird nicht unterstützt.
Antwort1
Ich habe das horizontale Scrollen gelöst, indem ich eine Key-Mapper-GUI-Software verwendet und dann die linke Radtaste (TASTENSEITE) dem Rad (rechts, 1) und die rechte Radtaste dem Rad (links, 1) zugeordnet habe.
Antwort2
Ich habe es mit hwdb gelöst. Ich habe Folgendes erstellt /etc/udev/hwdb.d/10-m535.hwdb
:
evdev:input:b0005v046DpB016e1203-*
KEYBOARD_KEY_700e2=reserved
KEYBOARD_KEY_7002b=leftmeta
Dann:
sudo udevadm hwdb --update
sudo udevadm trigger
Und schalte die Maus aus und wieder an. Jetzt funktioniert es, ich habe die Meta-Taste (Windows) gebunden.
Ich denke, diese Lösung könnte so gestaltet werden, dass sie xinput set-button-map
nicht erforderlich ist (und vielleicht kann ich das Problem lösen, dass sich die Tasten nicht wiederholen) ... Aber ich konnte die Tastencodes für die Tasten 6 und 7 (nach links und rechts scrollen) nicht finden. Ich habe die Scancodes gefunden:
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)
Ich habe die Dezimalwerte für BTN_SIDE
, BTN_EXTRA
, BTN_BACK
, BTN_FORWARD
, BTN_6
, BTN_7
(wie in definiert /usr/include/linux/input-event-codes.h
) ohne Erfolg ausprobiert.
Eine andere Maus, bei der das horizontale Scrollen sofort funktioniert, hat die folgende evtest
Ausgabe:
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
Kann ich irgendwie ein EV_REL
Ereignis mit einem Wert für den Schlüsselcode in der hwdb-Datei angeben?