Vorrei rimappare il "pulsante Windows" su MS Sculpt Comfort Mouse su un altro pulsante (ad esempio il pulsante "Indietro") sulla mia macchina Linux (Linux Mint 18.2 "Sonya").
Secondo xinput list
, il mouse è riconosciuto come dispositivo puntatore (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)]
Secondo xinput test 12
il Super_L
key (keycode 133) viene generato dal mouse quando si preme il "pulsante Windows" sul mouse.
key press 133
key release 133
Ora, ho bisogno di rimappare la chiave per questo particolare dispositivo su un'altra chiave. Lo farei usando setxkbmap
strumento (descritto in Come rimappare le chiavi sotto Linux solo per una tastiera specifica ).
La mia sceneggiatura è la seguente:
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
Ho anche provato un approccio simile descritto in Rimappa / cambia i tasti della tastiera secondaria / usb . Ho cercato di scambiare i codici ad es. per <LWIN>
e <VOL+>
. Ma senza successo, la chiave di Windows del mouse è ancora interpretata come chiave di Windows.
Poi ho provato a rimappare il tasto Windows (scambiato con) sulla mia tastiera USB (id = 9) usando il secondo approccio (puro xkbcomp
) e ha funzionato, MA ha anche cambiato il comportamento del pulsante del mouse nello stesso modo (indipendentemente dal modo in cui il pulsante è stato mappato per il mouse). La cosa strana è che quando premo il pulsante Windows sulla tastiera integrata del portatile (non rimappata) e poi sul mouse, viene interpretato come pulsante di Windows. Quando premo il pulsante Windows sulla mia tastiera USB (rimappata su VOL +) e quindi sul mouse, viene interpretato come VOL +. Può essere correlato a Bug 91571 - xkb set tramite xkbcomp non sembra applicarsi a -i (o non si attacca se usato sul dispositivo generale) .
Sfortunatamente, non riesco a rimappare il pulsante solo per quel particolare dispositivo.
1) Può essere il xkbcomp
lo strumento funziona correttamente solo con i dispositivi "tastiera slave"? (Non con 'puntatore slave')
2) C'è un modo per trattare questo mouse come "tastiera slave"?
3) O esiste un altro modo per rimappare il "pulsante Windows" solo per questo particolare dispositivo (e non per la tastiera USB principale)?