Scambia alt e super


27

Ho un Macbook Air con Linux. Voglio scambiare i tasti alte superin entrambi i lati della tastiera tra loro.

Come posso farlo con gli strumenti cli?

Aggiornare

Dopo la risposta di Drav Sloan ho usato quanto segue:

keycode 64 = Alt_L
keycode 133 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

keycode 108 = Alt_R
keycode 134 = Super_R
remove Mod1 = Alt_R
remove Mod4 = Super_R
add Mod1 = Super_R
add Mod4 = Alt_R

1
Stranamente, le cose hanno funzionato per me (mac air) per quando ho preso solo le prime 6 righe e non il bototm una volta in un file e ho eseguito il file xmobmap su di esso. Con le linee di fondo ho avuto errori.
Leo Ufimtsev,

Risposte:


20

Un modo per ottenere ciò è tramite xmodmap. Puoi correre xevper ottenere eventi chiave. Quando si esegue xevuna finestra dovrebbe apparire e si può focalizzare e premere i tasti che si desidera scambiare. Dovrebbero essere visualizzati dettagli simili a per la Altchiave:

KeyPress event, serial 28, synthetic NO, window 0x8800001,
  root 0x25, subw 0x0, time 2213877115, (126,91), root:(1639,475),
  state 0x0, keycode 14 (keysym 0xffe9, Alt_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Sono su un PC e non ho un "tasto di comando", ma ho l'equivalente "tasto di Windows" e xev fornisce:

KeyPress event, serial 28, synthetic NO, window 0x8000001,
  root 0x25, subw 0x0, time 2213687746, (111,74), root:(1624,98),
  state 0x0, keycode 93 (keysym 0xffeb, Super_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Poiché xmodmap non ne ha idea statee può facilmente interrompere i mapping dei tasti, ti suggerisco di fare un:

xmodmap -pke > defaults

Quindi creiamo un file xmodmap:

keycode 14 = Alt_L
keycode 93 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

Nota come sto usando i codici chiave xevrestituiti. Anche qui sto solo sostituendo i tasti super e alt sinistro (e lasciando quelli giusti al loro vecchio comportamento). Quindi possiamo semplicemente eseguire xmodmap, per impostare questi tasti:

$ xmodmap -v modmap.file
! modmap:
! 1:  keycode 14 = Alt_L
        keycode 0xe = Alt_L
! 2:  keycode 93 = Super_L
        keycode 0x5d = Super_L
! 3:  remove Mod1 = Alt_L
! Keysym Alt_L (0xffe9) corresponds to keycode(s) 0xe
        remove mod1 =  0xe
! 4:  remove Mod4 = Super_L
! Keysym Super_L (0xffeb) corresponds to keycode(s) 0x5d
        remove mod4 =  0x5d
! 5:  add Mod1 = Super_L
        add mod1 = Super_L
! 6:  add Mod4 = Alt_L
        add mod4 = Alt_L
!
! executing work queue
!
        keycode 0xe = Alt_L
        keycode 0x5d = Super_L
        remove mod1 =  0xe
        remove mod4 =  0x5d
        add mod1 = Super_L
        add mod4 = Alt_L

Puoi eseguire senza l' -vopzione (dettagliata) per l'esecuzione silenziosa, ma lo trovo utile se hai commesso errori nel tuo file modmap. Se le cose vanno male, riapplica le impostazioni predefinite:

xmodmap defaults

Modmap viene spesso eseguito all'avvio di X, quindi è possibile applicarli come valori predefiniti se si inseriscono i comandi modmap ~/.xmodmaprc.


C'è un modo per farlo con setxkbmap? Vorrei usare l' setxkbmap -option compose:raltopzione insieme a questo.

Ho usato la soluzione swap_opt_cmd in un'altra risposta, ma questa merita un voto perché è così accurata e chiaramente scritta. Bravo, signore.
John Franklin,

Grazie. Ho fatto confusione con xmodmap e ti sarei
Tim

26

Se vuoi farlo su una tastiera Apple, prova questo:

echo 1|sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd

Per farlo funzionare per una versione precedente di Linux puoi provare questo: http://blog.chaselambda.com/2014/10/09/apple-keyboard-on-linux-3.8.html


Anche se le altre risposte funzionano, questa è la soluzione per Mac Books; ha funzionato come un fascino!
sinisterstuf,

1
Perché questo non è il valore predefinito ?!
John Franklin,

Non ho accesso in scrittura a questo file. :-(
itmuckel

1
@ Micha90 - devi usare tee: echo "1" | sudo tee /sys/module/hid\_apple/parameters/swap\_opt\_cmd
jaustin

2
Trascorri un'ora a configurare xmodmap. Funziona. Quindi vedi la seconda risposta ...
Bilow,

17

Se vuoi solo scambiare l'alt sinistra e il tasto super, esegui il comando nel tuo terminale:

setxkbmap -option altwin:swap_alt_win

Per ripristinare il comportamento predefinito basta usare:

setxkbmap -option

Nota: questo è temporaneo. Se vuoi che gli effetti lo aggiungano permanentemente al tuo file di avvio.


4
Questa dovrebbe essere la soluzione accettata, in quanto è pulita e utilizza una funzione integrata. Avresti dovuto menzionare che per ripristinare il comportamento predefinito potresti semplicemente usare setxkbmap -option. E se si desidera solo di swap sinistra alt e la chiave eccellente , quindi utilizzare questo comando: setxkbmap -option altwin:swap_lalt_lwin.
erik,

1
Ho la tastiera Logitech e questo ha funzionato per cambiare il mio tasto Windows (Super_L) con l'alt sinistra (Alt_L). Grazie!
Derek,

4
$ xmodmap -pke

Prendi nota dei codici chiave a cui sono associati alt e super, quindi apri / crea un nuovo file .xmodmaprc nella cartella home. Ad esempio, i miei tasti super / alt sono associati come tali

keycode  64 = Alt_L Meta_L Alt_L Meta_L
keycode 108 = Alt_R Meta_R Alt_R Meta_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

Ma per scambiare le chiavi, dovresti inserire quanto segue in .xmodmaprc

keycode  64 = Super_L NoSymbol Super_L
keycode 108 = Super_R NoSymbol Super_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R

Sovrascrivere il keycode / le associazioni di ruolo ... semplice e funziona. Mi chiedo se ci sia qualche svantaggio rispetto alla remove ...soluzione.
Anello Ø

Ricorda che puoi utilizzare grepper filtrare l'output, quindi xmodmap -pke | grep -i "super\|alt"dovrebbe essere più facile vedere ciò di cui hai bisogno.
Benjamin R,

0

Se sei una delle persone sfortunate come me che non sono riuscite a ottenere xmodmap per cambiare a destra Alt con Ctrl destro, allora forse questo ti aiuterà.

Se premi Alt ed e a destra e ottieni é allora questa soluzione è per te (ha bisogno di miglioramenti).

Esegui questo nel terminale (controlla i tuoi codici chiave con xev):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

quindi inserisci questo codice nella tua .Xmodmap:

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

Questo codice imposta il tasto Alt_Gr su Alt_R, quindi scambia Alt_r con Ctrl_R.

Se si desidera che questo rimanga dopo il logout, inserire i seguenti comandi in uno qualsiasi dei file della shell di avvio, ad esempio ~ / .profile:

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

fonti: domanda1 domanda2

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.