Puisque vous souhaitez remapper les clés pour toutes les applications, la meilleure option est d'utiliser xmodmap. Il est flexible et très puissant mais implique de taper quelques commandes dans un terminal.
Étape 0 - L'approche
Le serveur X gère le clavier et tous les événements clés et les traduit en codes clés pour toutes les applications.
L'approche consisterait à mapper une touche de modification (comme la touche Super ou Alt droite) comme touche de "changement de mode" et à dire au serveur X de générer des codes différents selon que l'on appuie sur une touche avec la touche Mode enfoncée ou non.
Par défaut, aucune touche de changement de mode n'est définie et toutes les touches sont également configurées pour générer le même code lorsqu'elles sont enfoncées avec ou sans changement de mode. C'est bien car cela signifie que, sauf pour les clés que vous remplacez explicitement, aucune autre clé ne se comportera différemment ou n'aura besoin d'une configuration supplémentaire.
Cependant, je voudrais que vous envisagiez d'utiliser la touche Alt droite comme commutateur de mode, surtout si vous utilisez également Compiz, car certains plug-ins Compiz mappent les raccourcis de super-clés (par exemple, sélecteur de fenêtre, commutateur de changement de vitesse, etc.). Si vous ne souhaitez pas contrôler la compiz via le clavier, Super est très bien.
Pour xmodmap, les super clés sont identifiées comme Super_L ou Super_R. Vous devez en choisir un à utiliser comme touche de changement de mode. Alternativement, la touche alt droite est Alt_R. Vous pouvez les confirmer en exécutant xev et en appuyant sur les touches nécessaires de votre clavier. Voir cet article pour les étapes.
Étape 1 - Configuration de la carte des modificateurs
Ouvrez un terminal ( Applications -> Accesories -> Terminal
) et exécutez la commande suivante pour créer un fichier avec les raccourcis clavier actuels . Nous l'utiliserons comme point de départ.
xmodmap -pke > curkeys.map
xmodmap -pm >> curkeys.map
Ouvrez-le dans votre éditeur de texte préféré. gedit curkeys.map &
l'ouvre dans gedit. Vers la fin du fichier, vous verrez quelques lignes comme celle-ci:
keycode 253 =
keycode 254 =
keycode 255 =
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
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)
Supprimez la ligne commençant par "xmodmap: jusqu'à 4 ..."
Modifiez la carte des modificateurs pour qu'elle ressemble à ceci. Mettez le mot "ajouter" au début de chaque ligne et insérez "=" après le nom du modificateur. Supprimez ensuite les codes entre parenthèses et virgules. Notez également que je suis passé Mode_switch
d'une mod5
ligne à l'autre mod3
car elle était vide. Le tableau modifié devrait ressembler à ceci - le contenu réel variera légèrement dans votre cas de ceux ci-dessous (dépend de la disposition de votre clavier).
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L Alt_R
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift
Remapper la touche de changement de mode physique. Ajoutez une ligne comme celle-ci à la fin (remplacez Super_L par Super_R ou Alt_R si nécessaire).
keysym Super_L = Mode_switch
Supprimez le nom de clé (Super_L) de toute définition de modificateur. Pour Super_L, cela signifie le supprimer de la ligne mod4.
add mod4 = Super_R Hyper_L
Maintenant, la touche "Super" droite agira toujours comme une super touche normale tandis que la touche gauche aura des propriétés spéciales.
Maintenant, nous devons remapper les touches pour produire des codes différents, qu'ils soient enfoncés tout en maintenant Super_L enfoncé ou non. Chaque ligne de notre fichier commençant par keycode
spécifie 4 clés pour chaque touche à générer, selon que les touches Mod1 (touches Maj) et Changement de mode sont enfoncées. ( Lien )
!...........................................................................
! Key Base Shift Mode Mode+Shift
!---------------------------------------------------------------------------
keycode 13 = 4 dollar 4 quotedbl
keycode 14 = 5 percent 5 colon
keycode 15 = 6 asciicircum 6 comma
keycode 16 = 7 ampersand 7 period
...
keycode 45 = k K k K
Si nous voulons que la touche Super_L + k génère une touche "+", nous devons la modifier pour la lire
keycode 45 = k K plus plus
Le plus final mappe également Shift + Super_L + k à plus, mais cela peut être mappé à autre chose. Pour chaque touche, il y a exactement 1 ligne à modifier. Modifiez plus de lignes pour remapper plus de touches - laissez les 2 premières entrées intactes pour conserver le comportement normal de la touche.
Enregistrez le fichier et quittez l'éditeur.
Installez le clavier en exécutant les commandes suivantes dans un terminal. Le premier le configure pour cette session, le second le rend permanent pour les sessions futures.
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Vous pouvez immédiatement le tester en appuyant sur les touches modifiées (Super_L + k par exemple).
Étape 3 - Ajout / révision de la carte
Une fois la carte modifiée installée, il est facile d'ajouter de nouvelles clés.
Utilisez xev pour trouver les codes et les keyymes
testez-le en exécutant cette commande pour mapper la clé:
xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
Remplacez les éléments entre crochets (comme <code>
<base>
etc.) par les valeurs appropriées.
Sauvegardez le curkeys.map
fichier.
- Ouvrez le
curkeys.map
et modifiez la ligne du code clé correspondant.
Réappliquez avec les commandes ci-dessous (la première n'est pas nécessaire si vous avez fait l'étape 2)
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Remarque: 1 : les modifications apportées aux raccourcis clavier (par exemple, System -> Preferences -> Keyboard Shortcuts
) affectent la carte des modificateurs et seront généralement perdues lors de la prochaine connexion. Veuillez donc éviter cela.
Remarque: 2 : Je reçois parfois des messages d'erreur comme celui-ci lorsque j'utilise cette méthode. Je ne sais pas ce que cela signifie, cependant, ceux-ci sont généralement inoffensifs.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 263
Current serial number in output stream: 263
Une aide détaillée pour xmodmap est disponible ici .