Comment changer la touche de commande et la touche de contrôle sur un MacBook Pro?


60

J'ai parcouru le Web et je n'arrive pas à faire en sorte que Xmodmap ou quoi que ce soit fonctionne correctement. Je veux échanger À LA FOIS mes clés de commande avec ma clé de contrôle - pour l’inverse, inverser ce qu’elles font actuellement.

Comment je ferais ça?

J'ai essayé xmodmap -e "keycode 133 = Control_L"et les commandes correspondantes pour les codes clés 134 (commande à droite) et 37 (contrôle à gauche). J'ai même essayé ces commandes, plus xmodmap -pke > ~/.Xmodmapet xmodmap ~/.Xmodmapdans .xinitrc.

Mon objectif final est que je souhaite que HUD / Dash apparaisse lorsque je clique controlet que je mette un commandcontrôle fonctionnel, c’est-à-dire qu’il control-vs’agisse d’un raccourci à coller, je cliquecommand-v

Réponses:


64

Je l'ai compris. Mettez ce qui suit dans ~/.Xmodmap:

clear control
clear mod4

keycode 105 =
keycode 206 =

keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Control_R NoSymbol Control_R
keycode 37 = Super_L NoSymbol Super_L

add control = Control_L
add control = Control_R
add mod4 = Super_L

Pour tester, exécutez la commande:

xmodmap ~/.Xmodmap

Pour le faire fonctionner à chaque fois, ajoutez-le aux applications de démarrage.

Cela devrait fonctionner sur n'importe quel MacBook Pro. le problème était que Xmodmap affectait Super_L aux touches de commande gauche et droite et Control_L à la touche de contrôle gauche. Pour certaines raisons, par défaut, Ubuntu pense que le MacBook Pro possède un clavier standard à 105 touches (pensant probablement au clavier Apple complet), mais c'est une erreur. Quoi qu'il en soit, j'ai réaffecté les codes de clé aux bons clés, puis les ai attribués à controlet mod4.


J'ai une question supplémentaire: comment puis-je changer la touche de contrôle gauche pour qu'elle devienne la touche alt, et vice-versa, la touche alt située à côté de la touche de contrôle gauche pour devenir la touche de contrôle gauche?
719016

Comment puis-je garder le bouton droit de gagner gagnant?
arcanine

Notez que cela ne fonctionne pas bien avec le changement de disposition du clavier. Ainsi, si vous utilisez plusieurs modèles, vous devrez exécuter xmodmap après chaque changement de modèle. La réponse ci-dessous suggère que l’édition de / usr / share / X11 / xkb / symboles / pc est à l’abri de cela.
Clorz

Est-ce qu'il fonctionne sur VNCViewer. J'utilise Gnome Desktop et souhaite remplacer mon clavier Apple (touche de commande) par la touche Ctrl.
ahmed le

32

Je viens d'installer Ubuntu 16.04 dual boot sur mon MBP13 "hier. Pour Ubuntu 16.04, voici comment je l'ai fait:

Étape 1: lancement du terminal

Étape 2: Modifier l'extension du clavier X

sudo nano /usr/share/X11/xkb/symbols/pc

Étape 3: Apportez les modifications suivantes. Assurez-vous que votre fichier ressemble à ceci:

key <LCTL> {    [ Super_L       ]   };
key <LWIN> {    [ Control_L     ]   };

...

key <RCTL> {    [ Super_R       ]   };
key <RWIN> {    [ Control_R     ]   };

Étape 4: Vider le cache de xkb

sudo rm -rf /var/lib/xkb/*

Étape 5 (conditionnelle): Si les clés ne sont pas échangées après l'étape 4, redémarrez votre ordinateur. Cela a fonctionné pour moi après cela.

J'espère que ça aide, bonne chance!


C'est une bien meilleure solution que la réponse acceptée.
M. Axilus

N'a pas travaillé pour moi.
Chovy

C'est la réponse réelle (2017).
CESCO le

C'est la réponse Doit être redémarré après le changement. Merci
racémique

Cela a fonctionné pour moi! Enfin, basculer entre Mac OS et Linux n'implique pas autant de reprogrammation de la mémoire musculaire :)
JoLoCo

15

Entrer dans System -> Preferences -> Keyboard

Cliquez sur l'onglet "Layouts", puis sur le bouton "Layout Options".

Cliquez sur "Comportement touche Alt / Win"

Sélectionnez "Le contrôle est associé aux touches Windows (et à la touche Ctrl habituelle).

depuis http://ubuntuforums.org/showthread.php?t=1293081


9
Juste une note - cela ne veut pas échanger les clés, il est tout simplement les touches de commande des touches de commande supplémentaires.
Fabian Tamp

Cela ne fonctionne pas pour Ubuntu 16.04.
Unique

Cela semble conduire au comportement souhaité sous Ubuntu. 18.04
RM de Vos

J'ai utilisé "alt est échangé avec Win" car j'utilise un clavier Apple sur Ubuntu.
SM Adnan

6

Allez dans les paramètres du système, puis dans la disposition du clavier, puis dans les options, puis sur le comportement de la touche Win / Alt, puis cochez la case "Meta switches Ctrl" puis, dans la position Ctrl, cochez "Ctrl switches Meta" et le tour est joué!

sur 12.04.1 vous changez cela en:

Tout d’abord, allez dans «Paramètres système» puis cliquez sur «Clavier», puis «Paramètres d’agencement» (en bas à gauche), puis «Options» en bas à droite, puis développez l’onglet "Comportement des touches Alt / Win", puis sélectionnez " Le contrôle est mappé pour gagner des clés (et les touches Ctrl habituelles) "


Travaillé pour moi en 12.04. Je ne peux vraiment pas y croire, mais ça a fonctionné. Après des heures à jouer avec .xmodmap
jyoseph

C'est génial, merci. J'ai le nouveau système (ce que vous décrivez dans le deuxième paragraphe). Ctrl est associé aux touches Windows, ce qui fait que Cmd se comporte comme Ctrl. Position de la touche Ctrl -> Ctrl gauche comme Meta fait le contraire. Également, je devais aussi aller dans Démarrage et arrêt -> Gestionnaire de services -> Services de démarrage et activer le démon de clavier (cette option était désactivée par défaut).
0__

14.04 ne semble pas avoir ce lien "Options".
Waldir Leoncio

Comme pour Ubuntu 15.04, cette option est maintenant disponible dans "Périphériques de saisie> Clavier> onglet Avancé> Section du comportement de la touche Alt / Win> Ctrl mappé pour gagner des clés (et les touches Ctrl habituelles)"
Serj Zaharchenko

2
Impossible de trouver cela sur Ubuntu 16.04
Houman

5

La page d'aide de la communauté Ubuntu pour les claviers Apple décrit les étapes suivantes pour effectuer ce changement de manière permanente: (testé le 2017-05-27)

Exécutez la commande suivante pour ajouter la ligne de configuration au fichier le /etc/modprobe.d/hid_apple.confcréant si nécessaire:

echo options hid_apple swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf

Déclencheur copiant la configuration dans le fichier de démarrage initramfs.

sudo update-initramfs -u -k all

Éventuellement, redémarrez

sudo reboot

Pour le tester temporairement, vous pouvez exécuter

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

5

Mis à jour pour 18.04 car aucune des réponses fournies ne semblait fonctionner sur mon système. J'ai fait une nouvelle installation du 18.04 et j'ai essayé d'utiliser un clavier Apple filaire en aluminium. Le comportement par défaut de Left Super sur l'anglais américain est mappé sur Gnome Desktop Dashboard. Outil Tweak avait tous les paramètres nécessaires dans une interface graphique facile à utiliser!

sudo apt install gnome-tweak-tool

D'abord, j'ai échangé le raccourci clavier du tableau de bord sur le côté droit, puis sous "Options de disposition supplémentaires", vous pouvez utiliser "Position Ctrl / Échanger la victoire à gauche avec la touche Ctrl gauche " à bon escient.


gnome-tweak-tool est incroyable, merci!
Dennis Golomazov

Cela devrait être la réponse acceptée. Pour le Mac, je constate actuellement que Gnome Tweak Tools a le paramètre souhaité sous Keybord & Mouse> Options de disposition supplémentaires> Position Ctrl> Basculer vers la gauche avec Ctrl gauche. La touche de commande du clavier Mac semble être appelée "Win".
Bhaller

En 2019, dans Gnome, c'est la solution la plus simple. Merci
jymbob

1

Dupliquer Comment échanger étape par étape les clés de commande et de contrôle avec xkb?

En 16.04, voici comment j'ai finalement réussi à faire fonctionner cela. Xmodmap ne fonctionne pas universellement dans toutes les applications, l'outil de modification de gnome manquait de la fonction, la modification par dconf d'un échange de clé altwin2 personnalisé (comme pour la réponse principale ici) a échoué. et solution élégante:

gksudo gedit /usr/share/X11/xkb/symbols/pc

changez le en:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC>  {    [ Escape        ]   };

// The extra key on many European keyboards:
key <LSGT> {    [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> {    [ backslash,    bar ]   };
key <SPCE> {    [    space      ]   };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {    [ BackSpace, BackSpace  ]   };

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return        ]   };

key <CAPS> {    [ Caps_Lock     ]   };
key <NMLK> {    [ Num_Lock      ]   };

key <LFSH> {    [ Shift_L       ]   };
key <LCTL> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_R     ]   };
key <RWIN> {    [ Super_R       ]   };
key <MENU> {    [ Menu          ]   };

// Beginning of modifier mappings.
modifier_map Shift  { Shift_L, Shift_R };
modifier_map Lock   { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2   { Num_Lock };
modifier_map Mod4   { Super_L, Super_R };

// Fake keys for virtual<->real modifiers mapping:
key <LVL3> {    [ ISO_Level3_Shift  ]   };
key <MDSW> {    [ Mode_switch       ]   };
modifier_map Mod5   { <LVL3>, <MDSW> };

key <ALT>  {    [ NoSymbol, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
modifier_map Mod1   { <META> };

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

key <HYPR> {    [ NoSymbol, Hyper_L ]   };
modifier_map Mod4   { <HYPR> };
// End of modifier mappings.

key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> {    [  Scroll_Lock      ]   };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key  <INS> {    [  Insert       ]   };
key <HOME> {    [  Home         ]   };
key <PGUP> {    [  Prior        ]   };
key <DELE> {    [  Delete       ]   };
key  <END> {    [  End          ]   };
key <PGDN> {    [  Next         ]   };

key   <UP> {    [  Up           ]   };
key <LEFT> {    [  Left         ]   };
key <DOWN> {    [  Down         ]   };
key <RGHT> {    [  Right        ]   };
};

Sauver.

rm -rf /var/lib/xkb/*

(Je ne sais pas si cela est nécessaire, mais je l'ai fait.)

Redémarrer.


C'était bien, mais je ne peux pas utiliser le même truc pour changer mes touches ALT en tant que touche de contrôle gauche. Il semble que les touches ALT fonctionnent différemment. Savez-vous comment puis-je le faire?
Pierre Thibault

Le même truc fonctionne pour n'importe quoi. Vous devez basculer les mappages de clé ainsi que ceux de modificateur_map. Vous pouvez également sauter dans les réglages de gnome ou gconf, je l’oublie, et il existe plusieurs paramètres de basculement tels que "swap ctrl et alt".
Tom Mercer

Nous ne pouvons pas faire une: clé <LALT> {[Control_L]}; clé <RALT> {[Control_L]}; Alt est traité différemment. J'ai donc utilisé Gnome Tweaks. Je n'ai pas pu avoir exactement ce que je voulais mais ce n'est pas si grave.
Pierre Thibault

Je ne suis pas sûr de comprendre votre problème. Si vous voulez simplement que les deux alt se comportent comme des contrôles, le fichier exactement comme ci-dessus fera que les deux touches de raccourci se comportent comme des contrôles et que les deux touches de contrôle se comportent comme des alt. Si vous pouvez spécifier ce que vous voulez que chaque clé soit, peut-être que je peux vous aider? Avez-vous essayé ce fichier? Quelle machine utilisez-vous et quel clavier? La disposition du clavier français pourrait nous causer des problèmes.
Tom Mercer

Non, je n'ai pas essayé le fichier. Je peux voir que plus tard dans le fichier vous effectuez le basculement de deux alt en deux ctrl. J'ai manqué ça. Merci de l'avoir signalé. Je vais essayer.
Pierre Thibault

0

Vous trouverez peut-être que Kinto est utile. C'est un projet que j'ai récemment créé, après quelques années consacrées à résoudre ce problème de différentes manières et je sens maintenant qu'il est assez solide pour être partagé.

Le programme d’installation de Kinto utilise simplement python pour effectuer l’installation initiale. Il ne s’agit que d’un service systemd, bash, xprop, setxkbmap et xkbcomp. En ce qui me concerne, c’est la solution la plus rapide et la plus native à ce problème que vous allez trouver.

https://github.com/rbreaves/kinto

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

Voici également un résumé, si vous voulez juste voir ce qui est au cœur de tout cela, il n’y aura pas d’alternance de votre clavier en cas de besoin. De plus, Gist n'inclut pas les fichiers de keymap xkb personnalisés qui configurent les curseurs de style macOS / les manipulations basées sur les mots qui utilisent Cmd et les touches de direction.

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!
#
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.