Comment permuter les touches Alt et Windows avec xmodmap?

9

J'ai un clavier Mac où les touches Alt / Win (c'est-à-dire Option / Commande) sont inversées par rapport à un clavier PC ordinaire, et je voudrais les échanger. Je n'ai pas eu de chance avec xmodmap jusqu'à présent. La configuration standard est la suivante:

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)

Actuellement, les touches alt gauche / droite sont les codes clés 64 et 108, tandis que les touches fenêtres gauche / droite sont 133 et 134.

J'apprécie toute aide!

Daniel Schuler
la source
Pour moi, ce permute les deux paires de Alt et Win: setxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocaps. Je veux seulement que les bons Alt et Win soient échangés. Cela ne veut pas « annulent » l'échange gauche: setxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocaps. Il n'y a apparemment aucune altwin:swap_ralt_rwinoption, selon man xkeyboard-config.
Peter Becich

Réponses:

11

Voici mon 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

Vous devrez modifier votre .xsession ou .xinitrc pour appeler xmodmap .Xmodmaprc

Christophe Devine
la source
7

J'ai réussi cela dans Ubuntu 13.04 en combinant la réponse de Christophe (ce qui m'a aidé, mais n'a pas fonctionné pour les modificateurs et je n'ai pas besoin que grave et tilde soient des clés mortes), une autre réponse sur setxkbmap , jouant avec différentes options dans les paramètres - clavier-disposition-options (même en regardant le code source ) et en inspectant la configuration actuelle en utilisant la commande setxkbmap -query(que vous devez également exécuter, pour vérifier votre modèle de clavier spécifique et les codes de disposition car ils peuvent différer).

J'ai un script que j'appelle lorsque je passe à un clavier Apple (l'option cruciale étant altwin:swap_lalt_lwind'échanger les touches de modification Alt et 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"

Et un autre que j'appelle quand je suis de retour sur un clavier normal:

# 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"

Notez que j'ai ajouté les paramètres

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

pour activer la terminaison de la session Gnome ctrl + alt + backspace, l'accès aux touches de niveau 3 à l'aide de la bonne touche de victoire, le changement de disposition en appuyant sur les deux touches Maj et transformé mon verrouillage des majuscules en Ctrl supplémentaire (respectivement). Vous voudrez peut-être en exclure certains ou tous.

Vous pouvez utiliser AutoKey pour lier l'appel à un raccourci clavier, ou l'appeler depuis votre .profileou .bashrcsi vous utilisez tout le temps le clavier Apple.

metakermit
la source
1
Beaucoup de bla bla. Si vous voulez juste échange alt gauche et super clé , utilisez cette commande: setxkbmap -option altwin:swap_lalt_lwinet si vous voulez passer à la fois alt gauche et à droite et les touches super, utilisez cette commande: setxkbmap -option altwin:swap_alt_win.
erik
Bonne réponse. Mais comment faire exactement cela juste pour la bonne victoire et la bonne alt (AltGr)? J'ai récemment obtenu un unicomp, où la bonne victoire est à côté de la barre d'espace au lieu d'AltGr, comme je suis habitué
cessor
6

J'ai trouvé que sur Ubuntu 16.04 qui utilise xkb et gnome, vous avez besoin de quelques étapes supplémentaires par rapport à la réponse de Christopher Devine ci-dessus si vous souhaitez conserver tout le comportement de raccourci pour les touches alt et super. C'était la solution la plus simple que j'ai trouvée.

Pour obtenir vos numéros de code, sur la ligne de commande $ xev et tapez les clés pour lesquelles vous souhaitez obtenir le numéro. Pour plus d'informations à ce sujet, consultez cet article: utilisation de xev et xmodmap

Cela me donne: Super_La le code clé 133 Alt_La le code clé 64

Donc, pour échanger la commande Windows aka Command (sur Mac) aka Super avec la touche Alt gauche, je le fais:

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

Les deux dernières lignes ajoutent le mod1 et le mod4 dans le keysym pour Alt_L et Super_L juste comme ils ont été supprimés. Si cela n'est pas fait, je perds les raccourcis associés à la super clé (recherche) et cela brise également le combo alt + tab pour basculer entre les fenêtres.

Vous pouvez ajouter ces commandes dans un fichier comme .xmodmap, puis $ xmodmap .xmodmaples exécuter.

Alternativement, vous pouvez les exécuter séquentiellement sur la ligne de commande comme: $ xmodmap -e <expression here>

Si vous souhaitez revenir aux mappages de touches par défaut, vous pouvez inverser les nombres dans le code ci-dessus, comme:

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

ou dans Ubuntu je lance juste: $ setxkbmap

Trevor Owens
la source
eu un problème à l'intérieur d'intellij où la touche alt n'est pas reconnue lors du simple échange de clés avec mod1 et mod4. Mais cela réinitialise le travail du code clé magnifiquement dans intellij. Excellent travail
Jimubao
2

Vous pouvez également définir les hid_appleoptions du module du noyau pour modifier uniquement votre clavier Apple, mais pas les claviers PC normaux. Pas besoin d'utiliser xkbmap ou Xmodmapr. Il suffit de créer le fichier /etc/modules.d/hid_apple.confavec le contenu

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2mappe les touches de fonction F1...F12sans avoir à appuyer sur Fn. Omettez-le si vous préférez les clés multimédias. Voir l' Arch Wiki pour plus.

En permanence sur 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
Sébastien
la source
0

Je recommanderais de ne pas utiliser xmodmap à l'avenir car il ne fonctionne pas dans Wayland, mais à part setxkbmap ou xkbcomp serait la meilleure méthode à utiliser à l'avenir et mon projet Kinto l'utilise.

Kinto échangera les clés que vous souhaitez, mais il écoutera également l'application que vous utilisez, afin que vous puissiez conserver la bonne carte des touches pour les applications de terminal afin qu'elle corresponde à votre expérience avec un Mac.

Voici les liens pertinents, mais j'inclurai également le cœur de ce que Kinto fait également - moins les cartes de touches personnalisées et la capacité de carte de touches alternée, de sorte que vous avez une idée de ce que Kinto fait réellement.

https://github.com/rbreaves/kinto

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

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

Contenu essentiel

# 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!
#
R Ben R
la source