Windows-Taste auf der MS Sculpt Comfort Mouse neu zuordnen

1124
Pavel Kriz

Ich möchte die "Windows-Schaltfläche" auf der MS Sculpt Comfort Mouse auf eine andere Schaltfläche (z. B. die Schaltfläche "Zurück") auf meinem Linux-Computer (Linux Mint 18.2 "Sonya") übertragen.

Demnach xinput listwird die Maus als Zeigegerät erkannt (id = 12).

⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Microsoft Sculpt Comfort Mouse id=12 [slave pointer (2)] ⎜ ↳ FocalTechPS/2 FocalTech FocalTech Touchpad id=15 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Chicony USB Keyboard id=9 [slave keyboard (3)] ↳ Chicony USB Keyboard id=10 [slave keyboard (3)] ↳ USB2.0 UVC HD Webcam id=11 [slave keyboard (3)] ↳ Asus WMI hotkeys id=13 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)] 

Entsprechend xinput test 12der Super_LTaste (Keycode 133) wird von der Maus erzeugt, wenn die "Windows-Taste" an der Maus gedrückt wird.

key press 133  key release 133  

Nun muss ich den Schlüssel für dieses bestimmte Gerät einem anderen Schlüssel zuordnen. Ich würde es mit einem setxkbmapTool tun (beschrieben unter Wie man Schlüssel unter Linux für eine bestimmte Tastatur neu zuordnen kann ).

Mein Skript lautet wie folgt:

remote_id=$( xinput list | sed -n 's/.*Microsoft Sculpt Comfort Mouse.*id=\([0-9]*\).*/\1/p' ) [ "$remote_id" ] || exit  # remap Windows button on MS Sculpt Mouse to Back button  mkdir -p /tmp/xkb/symbols cat >/tmp/xkb/symbols/custom <<\EOF xkb_symbols "remote" { key <LWIN> { [ XF86Back ] }; }; EOF  setxkbmap -device $remote_id -print | sed 's/\(xkb_symbols.*\)"/\1+custom(remote)"/' | xkbcomp -I/tmp/xkb -i $remote_id -synch - $DISPLAY 2>/dev/null 

Ich habe auch einen ähnlichen Ansatz ausprobiert, wie in Remap / Ändern der sekundären / USB-Tastaturtasten beschrieben . Versucht, Codes zu tauschen, z. für <LWIN>und <VOL+>. Ohne Erfolg wird die Windows-Taste der Maus jedoch weiterhin als Windows-Taste interpretiert.

Dann habe ich versucht, die Windows-Taste (ausgetauscht mit) auf meiner USB-Tastatur (id = 9) mit der zweiten Methode (pure xkbcomp) neu zuzuweisen. Es hat jedoch funktioniert, ABER das Verhalten der Maustasten wurde auf dieselbe Weise geändert (unabhängig davon, wie die Taste zugeordnet wurde für die Maus). Das Seltsame ist, wenn ich die Windows-Taste auf der integrierten Tastatur des Laptops drücke (nicht neu zugeordnet) und dann mit der Maus, wird sie als Windows-Taste interpretiert. Wenn ich die Windows-Taste auf meiner USB-Tastatur (wieder zugeordnet zu VOL +) und dann mit der Maus drücke, wird sie als VOL + interpretiert. Kann bezogen werden Bug 91571 - xkb über xkbcomp setzen nicht auf -i anzuwenden scheint (oder klebt nicht, wenn sie auf allgemeine Gerät verwendet wird ) .

Leider kann ich die Schaltfläche nur für das jeweilige Gerät neu zuordnen.

1) Kann das xkbcompTool nur mit 'Slave-Tastatur'-Geräten korrekt funktionieren? (Nicht bei 'Slavezeiger')

2) Gibt es eine Möglichkeit, diese Maus als "Slave-Tastatur" zu behandeln?

3) Oder gibt es eine andere Möglichkeit, die "Windows-Taste" nur für dieses bestimmte Gerät neu zuzuordnen (und nicht für die Haupt-USB-Tastatur)?

0

1 Antwort auf die Frage

1
Pavel Kriz

Meine eigene Frage Nr. 3 beantworten: udev kann es schaffen. Meine /etc/udev/hwdb.d/10-ms-sculpt-back.hwdbDatei:

# remap MS Sculpt Comfort Mouse (Bluetooth) Windows key to Back key evdev:input:b0005v045Ep07A2* KEYBOARD_KEY_700e3=back 

Dank Map scancodes to keycodes und So finden Sie den .hwdb-Header eines allgemeinen Eingabegeräts?