Rimappare il tasto Windows su MS Sculpt Comfort Mouse


0

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)?

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.