Come posso scambiare i tasti Alt e Windows con xmodmap?


9

Ho una tastiera Mac in cui i tasti Alt / Win (ovvero Opzione / Comando) sono invertiti rispetto a una normale tastiera per PC e vorrei scambiarli. Finora non ho avuto fortuna con xmodmap. La configurazione standard è la seguente:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Attualmente, i tasti alt sinistro / destro sono i codici chiave 64 e 108, mentre i tasti sinistro / destro della finestra sono 133 e 134.

Apprezzo qualsiasi aiuto!


Per me, questo scambia entrambe le coppie di Alt e Win: setxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocaps. Voglio solo scambiare Alt e Win giusti. Questo non "annullano" swap sinistra: setxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocaps. Apparentemente non esiste alcuna altwin:swap_ralt_rwinopzione, secondo man xkeyboard-config.
Peter Becich,

Risposte:


11

Questo è il mio Xmodmaprc:

! Exchange left Alt and left Win
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
! Exchange tilde and lesser/greater
keycode  94 = grave asciitilde dead_grave dead_tilde grave asciitilde
keycode  49 = less greater less greater bar brokenbar bar brokenbar
! Steve, your keyboard sucks

Dovrai modificare la tua .xsession o .xinitrc per chiamare xmodmap .Xmodmaprc


7

L'ho raggiunto in Ubuntu 13.04 combinando la risposta di Christophe (che mi ha aiutato, ma non ha funzionato per i modificatori e non ho bisogno di grave e tilde per essere chiavi morte), un'altra risposta su setxkbmap , giocando con diverse opzioni nelle impostazioni- keyboard-layout-options (anche guardando il codice sorgente ) e ispezionando la configurazione corrente usando il comando setxkbmap -query(che dovresti anche eseguire, per controllare il tuo modello di tastiera e i codici di layout specifici in quanto potrebbero differire).

Ho uno script che chiamo quando passo a una tastiera Apple (l'opzione cruciale è altwin:swap_lalt_lwinscambiare i tasti modificatore Alt e Super):

# clear all options
setxkbmap -model "pc105" -layout "hr,us" -option ""  

# set the Apple keyboard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier,altwin:swap_lalt_lwin"

# swap the grave-tilde with less-greater key
#  - variant without dead keys
xmodmap -e "keycode  94 = grave asciitilde"
xmodmap -e "keycode  49 = less greater less greater bar brokenbar bar brokenbar"

E un altro che chiamo quando torno su una tastiera normale:

# clear settings
setxkbmap -model "pc105" -layout "hr,us" -option ""

# pc keyobard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier"

Nota che ho aggiunto le impostazioni

terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier

per abilitare ctrl + alt + backspace Terminazione sessione Gnome, accesso al tasto livello 3 usando il tasto win destro, spostamento del layout premendo entrambi i tasti shift e trasformato il mio maiuscolo in un Ctrl aggiuntivo (rispettivamente). Potresti voler escludere alcuni o tutti.

Puoi utilizzare AutoKey per associare la chiamata ad alcune scorciatoie da tastiera o chiamarla dalla tua .profileo .bashrcse usi sempre la tastiera Apple.


1
Un sacco di bla bla. Se si desidera solo per scambiare sinistra alt e la chiave eccellente , utilizzare questo comando: setxkbmap -option altwin:swap_lalt_lwine se si desidera passare sia le chiavi di super sinistra e destra e alt, utilizzare questo comando: setxkbmap -option altwin:swap_alt_win.
erik,

Buona risposta. Ma come posso fare esattamente solo per la vittoria giusta e l'alt destra (AltGr)? Recentemente ho ottenuto un unicomp, dove la vittoria giusta è accanto alla barra spaziatrice invece di AltGr, come sono abituato
cessatore

6

Ho scoperto che su Ubuntu 16.04 che utilizza xkb e gnome sono necessari alcuni passaggi aggiuntivi rispetto alla risposta di Christopher Devine sopra se si desidera mantenere tutto il comportamento di scelta rapida per i tasti alt e super. Questa è stata la soluzione più semplice che ho trovato.

Per ottenere i numeri del tuo codice $ xev chiave , nella riga di comando e digita i tasti per i quali desideri ottenere il numero. Per maggiori informazioni a riguardo vedi questo post: utilizzo di xev e xmodmap

In questo modo mi dà: Super_Lha il codice chiave 133 Alt_Lha il codice chiave 64

Quindi per scambiare il tasto Windows aka Command (su Mac) aka tasto Super con il tasto Alt sinistro lo faccio:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 133 = Alt_L
keycode 64 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

Le ultime due righe aggiungono nuovamente mod1 e mod4 nel keyym per Alt_L e Super_L proprio come sono state rimosse. Se ciò non viene fatto, perdo le scorciatoie associate al tasto super (ricerca) e si rompe anche la combinazione alt + tab per passare da una finestra all'altra.

È possibile aggiungere questi comandi in un file come .xmodmap e quindi $ xmodmap .xmodmapeseguirli.

In alternativa, puoi eseguirli in sequenza sulla riga di comando come: $ xmodmap -e <expression here>

Se vuoi tornare ai mapping dei tasti predefiniti, puoi invertire i numeri nel codice sopra, come:

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 64 = Alt_L
keycode 133 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

o in Ubuntu ho appena eseguito: $ setxkbmap


ha avuto un problema all'interno di Intellij in cui il tasto alt non è riconosciuto quando si scambiano semplicemente i tasti con mod1 e mod4. Ma questo ripristina il keycode funziona magnificamente in intellij. Ottimo lavoro
Jimubao

2

Puoi anche impostare le hid_appleopzioni del modulo del kernel per modificare solo la tastiera Apple ma non le normali tastiere per PC. Non è necessario utilizzare xkbmap o Xmodmapr. Basta creare il file /etc/modules.d/hid_apple.confcon il contenuto

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2associa i tasti funzione a F1...F12senza la necessità di premere Fn. Omettilo se preferisci le chiavi multimediali. Vedi Arch Wiki per di più.

Permanentemente su Ubuntu :

echo options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all

0

Consiglio di non usare xmodmap in futuro perché non funziona in Wayland, ma a parte setxkbmap o xkbcomp sarebbe il metodo migliore da usare in futuro e il mio progetto Kinto lo usa.

Kinto cambierà le chiavi desiderate, ma ascolterà anche quale app stai utilizzando, in modo da poter mantenere la giusta mappa dei tasti per le app terminali in modo che corrisponda alla tua esperienza con un Mac.

Qui ci sono i collegamenti pertinenti, ma includerò anche il cuore di ciò che fa Kinto - meno mappe dei tasti personalizzate e capacità di mappatura dei tasti alternata, quindi hai un'idea di ciò che Kinto effettivamente fa.

https://github.com/rbreaves/kinto

https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

Contenuto essenziale

# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all

# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd

# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win

# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win

#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#
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.