Come fare in modo che le chiavi Hyper e Super non facciano la stessa cosa?


8

Ho usato xkb per rimappare il tasto destro di Windows (RWIN) su Hyper_R perché voglio usarlo con AutoKey per alcune scorciatoie speciali. L'ho fatto modificando

/usr/share/X11/xkb/symbols/pc

modifica della linea RWIN:

  key <RWIN> {  [ Hyper_R   ]   };

( Ecco la risposta che mi ha guidato )

Da quello che posso dire, questo funziona e il tasto Windows giusto ora attiva Hyper_R. Tuttavia, sembra che in Ubuntu (Xubuntu per l'esattezza), Hyper e Super stiano facendo la stessa cosa. Quindi Super + e avvia l'editor, e anche Hyper + e.

Non sono sicuro del perché questo sia o dove posso cambiare questo comportamento. Voglio che Hyper e Super siano modificatori diversi.


C'era qualcosa qui , anche se non credo che il dialogo esista ora nel 13.10 ...
Wilf,

Ma questo deve essere configurabile da qualche parte, giusto?
Alexander Rechsteiner,

Potresti trovarli indconf-editor
Wilf,

1
Grazie, ma senza fortuna. Accidenti, tutta questa cosa di rimappare la tastiera su Linux mi dà il diabete.
Alexander Rechsteiner,

+1: concordia (da parte del diabete). Non sono riuscito a trovare una guida bella, completa e dettagliata su come viene gestita la tastiera in Ubuntu. Esistono una serie di interazioni tra gnome-control-center, gnome-tweak-tool, xkbd, xmodmap che sono piuttosto complesse e, peggio, non documentate. Se trovi qualche link per favore condividilo! (Anche se sospetto che quasi nessuno lo sappia per davvero. Basta vedere l'impossibilità di bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/… )
Rmano

Risposte:


11

Per qualche ragione Ubuntu attualmente assegna sia Super che Hyper a Mod4. Puoi vederlo in / usr / share / X11 / xkb / simboli / pc:

 key <SUPR> {   [ NoSymbol, Super_L ]   };
 modifier_map Mod4   { <SUPR> };

 key <HYPR> {   [ NoSymbol, Hyper_L ]   };
 modifier_map Mod4   { <HYPR> };

Sono stato in grado di cambiare questo per mettere super e hyper su modificatori separati senza bisogno di essere root o modificare alcun file di sistema. Non sono sicuro che questo sia il modo migliore in quanto non sono sicuramente un esperto di xkb, ma è un modo che è stato affidabile per me.

Innanzitutto, crea un file di simboli locali. Ho il mio in $ {HOME} /. Config / xkb / simboli / local. Questo assegna Super a Mod3 e Hyper a Mod4.

default  partial modifier_keys
xkb_symbols "superhyper" {

    modifier_map Mod3 { Super_L, Super_R };

    key <SUPR> {    [ NoSymbol, Super_L ]   };
    modifier_map Mod3   { <SUPR> };

    key <HYPR> {    [ NoSymbol, Hyper_L ]   };
    modifier_map Mod4   { <HYPR> };
};

Quindi ricompila la mappa esistente per aggiungere un "locale":

setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}

Inseriscilo in uno script da eseguire quando accedi. Puoi eseguirlo come un normale utente.


È possibile semplicemente modificare quel file in atto per cambiare HYPR in Mod3?
Alex Moore-Niemi,

3
Puoi farlo. I vantaggi della mancata modifica in atto è che un aggiornamento del sistema non sovrascriverà le modifiche.
ergosys,

Per quanto mi riguarda, l'ho fatto lavorare brevemente con raw.githubusercontent.com/jabbalaci/dotfiles/master/.Xmodmap sebbene continui a fermarsi misteriosamente ...
Alex Moore-Niemi,

Uno svantaggio del metodo della mia risposta che ho riscontrato è che se la tastiera è scollegata o perde la comunicazione USB a causa di un errore casuale, lo script deve essere eseguito di nuovo. Probabilmente c'è un modo per rieseguirlo automaticamente, ma non ci ho pensato. Fortunatamente la cosa casuale non funziona solo una volta al mese per me. Se modifichi i file di sistema, questo non dovrebbe essere un problema. Quindi ci sono vantaggi e svantaggi.
ergosys,

1
Lo uso anche io. Esiste già una configurazione
predefinita

3

Con xmodmapte puoi cambiare questo comportamento con 2 comandi:

## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"
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.