Les problèmes modernes exigent des solutions modernes. Je me suis récemment procuré un nouvel ordinateur portable de test Linux, un IdeaPad 3, que j'ai acheté (malheureusement, en raison de pénuries sur le marché) avec la disposition du clavier britannique au lieu de la disposition américaine. Cela signifie un placement des touches physiques sous-optimal - même si vous utilisez une variante de clavier différente. À savoir, les touches de barre et de retour arrière, etc., sont mal placées, et la touche Entrée est trop petite.
De plus, cela signifie également, mémoire musculaire et tout, vous finissez par taper \ alors que vous voulez réellement sauter à une nouvelle ligne, et cela peut être assez ennuyeux. Alors j'ai pensé, peut-être que je pourrais remapper les touches du clavier d'une petite manière ? Mais je ne voulais pas simplement remapper la touche de retour arrière (portant les symboles tilde et dièse britanniques) sur une "seconde" entrée, créant ainsi une touche Entrée plus grande, je voulais toujours que les touches de barre et de retour arrière soient disponibles. D'où un exercice plus complexe. Laissez-moi vous montrer comment vous pouvez cette configuration quelque peu alambiquée mais super agréable.
Tâche à accomplir
Alors, laissez-moi vous expliquer clairement ce que j'ai en tête :
- Le clavier physique de l'IdeaPad 3 mappé au Royaume-Uni a la touche dièse/tilde près de la touche Entrée. Il a la barre/barre oblique inverse près du décalage gauche (ce qui le rend effectivement plus petit).
- Lorsque vous utilisez la disposition américaine sur ce clavier, vous vous retrouvez avec :une barre/barre oblique inverse mappée sur un dièse/tilde près de la touche Entrée, et la touche avec le symbole barre/retour arrière mappé sur des crochets gauche et droit (
). Mais ceux-ci sont déjà remplis par la fonction Shift sur les touches point et virgule sur la mise en page américaine, il y a donc un surplus de touches - soit des crochets, soit une combinaison barre/retour arrière.
Par conséquent, je veux faire ce qui suit :
- Remappez la clé avec l'étiquette de symbole physique de hachage/tilde - utilisé comme barre/barre oblique inverse - à une SECONDE entrée. Cela rendra la touche Entrée plus grande, et je voulais cette grande entrée en forme de L inversé comme vous le feriez normalement sur un clavier américain.
- Remappez la touche séparée avec le symbole barre/barre oblique inverse près du décalage gauche - utilisé comme flèche gauche et droite dans la mise en page américaine - en barre/barre oblique inverse, car je les perds par le remappage dans la première puce.
Remarquez le décalage gauche "cassé" et l'entrée. Juste à cause d'une disposition physique inefficace.
Ma tâche nécessite deux remappages :d'abord l'entrée, puis la barre/barre oblique inverse. Maintenant, il est important de faire les remappages de cette façon, sinon, si nous remappons d'abord la barre/barre oblique inverse, la touche à côté d'Entrée n'aura aucun mappage. Est-ce logique ?
Outils du métier :xev et xmodmap
Nous avons besoin de deux utilitaires qui font partie du bundle X - je n'ai aucune idée si et comment on ferait cela sur Wayland, mais je n'utilise pas Wayland en général, car il n'a pas de parité fonctionnelle avec X, plus Xorg est la session par défaut sur la plupart des distributions que j'utilise réellement, comme par exemple Ubuntu ou Kubuntu.
Nous remapperons avec xmodmap, mais nous devons "capturer" les symboles clés réels afin de pouvoir effectuer le remappage. À cette fin, exécutez xev à partir d'une fenêtre de terminal. L'outil ouvrira une petite fenêtre dans le coin de votre écran et commencera à capturer les entrées. Si vous appuyez sur une touche du clavier, vous verrez la sortie suivante dans la fenêtre du terminal - juste un exemple :
Événement KeyRelease, série 40, NON synthétique, fenêtre 0x5a00001,
racine 0x6a9, subw 0x0, heure 2784437, (1131,438), racine :(1131,475),
état 0x0, code clé 94 (keysym 0x3c, less), same_screen YES,
XLookupString donne 1 octet :(3c) "<"
XFilterEvent renvoie :False
Faites cela pour saisir le keysym pour la barre / retour arrière et les touches fléchées. N'oubliez pas de saisir la "deuxième" touche mappée (avec Maj), afin de pouvoir mapper les deux et pas une seule. Sinon, nous n'aurons que la barre ou les touches antislash, mais pas les deux disponibles.
Avant de faire cela, laissez-moi vous montrer comment remapper les clés. Avec xev en cours d'exécution, appuyez une fois sur la touche que vous souhaitez remplacer et sur la touche par laquelle vous souhaitez la remplacer. Exécutez ensuite xmodmap comme ceci :
xmodmap -e "keysym HEX =NOM"
Vous allez remapper une clé avec la valeur HEX pour faire ce que la clé avec la valeur NAME doit faire. Par exemple :
xmodmap -e "keysym 0x5c =Retour"
Cette commande mappe le symbole de clé 0x5c (qui correspond à barre/barre oblique inverse) sur Entrée. Ainsi, une fois cette commande terminée, dans mon cas, la touche physique britannique marquée du symbole dièse/tilde, mappée à la fonction barre/retour arrière dans la disposition américaine, agira désormais comme une deuxième touche Entrée. Génial.
Mais maintenant, nous devons également mapper la fonction barre/retour arrière.
Modificateur
En effet, pour mapper à la fois la fonctionnalité standard et la deuxième fonctionnalité (Shift) pour une touche, nous aurons besoin d'un modificateur. Vous pouvez vérifier les modificateurs existants avec :
xmodmap -pm
xmodmap :jusqu'à 4 touches par modificateur, (codes clés entre parenthèses) :
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
contrôle 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)
Maintenant, pour remapper une clé avec DEUX fonctions, la syntaxe est la suivante :
xmodmap -e "keysym HEX MOD =NOM1 NOM2"
Dans notre exemple :
xmodmap -e "keysym 0x3c Shift_L =barre oblique inverse"
Nous remappons une touche qui correspond à 0x3c - il s'agit de la touche marquée d'une barre/retour arrière sur le clavier physique britannique, associée aux flèches gauche et droite sur le clavier américain - pour qu'elle fonctionne réellement comme barre/retour arrière. Le modificateur est la touche Maj gauche. Donc, si vous appuyez sur la touche seule, vous obtenez une barre oblique inverse, si vous l'utilisez avec le décalage gauche, vous obtenez le symbole de la barre (tuyau). Et nous avons maintenant la mise en page que nous voulons.
Encore une fois, rappelez-vous que nous ne perdons pas les touches fléchées car elles sont déjà associées aux touches virgule et point près de la touche Maj droite. En effet, la combinaison du clavier britannique physique et du clavier américain virtuel a donné lieu à deux paires de touches fléchées, nous nous en débarrassons donc d'une et gagnons une entrée supplémentaire.
Script de démarrage automatique
Ne vous inquiétez pas si vous faites une erreur. Redémarrez votre système et vous reviendrez à la normale. Par conséquent, pour rendre les remappages personnalisés permanents, nous devrons créer un script de démarrage automatique, qui s'exécute à chaque connexion d'utilisateur et apporte les modifications dont nous avons besoin.
Il existe de nombreuses façons de procéder. Je vais vous montrer comment créer un script de démarrage automatique pour le bureau Plasma, bien que les principes soient les mêmes pour à peu près tous les bureaux. C'est très similaire à ce que j'ai fait avec le bouton Afficher le bureau dans Gnome.
Ouvrez une fenêtre Konsole, allez dans ~/.config/autostart-scripts. Ici, créez un fichier texte avec le contenu suivant :
[Desktop Entry]
Name=Key swap
Exec=key-swap.sh
Terminal=false
Type=Application
Vous pouvez utiliser le nom de votre choix, et vous pouvez nommer le fichier comme vous le souhaitez, mais assurez-vous qu'il a un suffixe de bureau. Dans mon exemple, j'ai enregistré ceci sous le nom key-swap.desktop. Rendre ce fichier exécutable :
chmod +x ~/.config/autostart-scripts/key-swap.desktop
Maintenant, la ligne Exec dans le fichier de bureau fait référence à un script, qui n'existe pas encore. Normalement, si vous regardez les lignes Exec pour d'autres scripts de bureau (vous pouvez vérifier Firefox ou Chrome ou autre), vous remarquerez qu'une seule commande est écrite. Comme nous avons besoin de deux commandes xmodmap, la solution la plus simple consiste à les placer dans un script shell séparé, puis à utiliser le script comme commande Exec.
Dans le répertoire autostart-scripts, créez un fichier nommé key-swap.sh - rendez-le également exécutable.
#!/bin/bash
xmodmap -e "keysym 0x5c =Return"
xmodmap -e "keysym 0x3c Shift_L =backslash bar"
exit 0
C'est mon exemple. Vous pouvez avoir des besoins totalement différents et vous n'avez peut-être besoin que d'un seul xmodmap, voire de sept. Juste à titre de référence et d'exhaustivité, si vous deviez faire un seul changement xmodmap, vous pourriez ignorer le script shell et le mettre simplement dans le fichier de bureau.
[Desktop Entry]
Name=Key swap single key
Exec=xmodmap -e "keysym 0x5c =Return"
Terminal=false
Type=Application
Grâce à l'utilitaire Plasma Settings, vous pouvez en effet vérifier que tout va bien :
Si jamais vous changez d'avis, vous pouvez désactiver ou supprimer les scripts, utiliser différents mappages de clavier, et au prochain redémarrage, les choses reviendront à l'état par défaut ou au nouvel état personnalisé que vous désirez. De cette façon, vous avez la flexibilité nécessaire. Bien que les choses soient permanentes pour ainsi dire, vous pouvez toujours les changer.
Conclusion
Voilà. Ceci est mon petit tutoriel qui montre comment j'ai amélioré l'ergonomie par défaut de mon clavier Lenovo IdeaPad, en utilisant mieux sa disposition physique et en modifiant les mappages de touches en valeurs personnalisées. Ce qui rend le guide encore plus intéressant, c'est le fait que j'utilisais une mise en page américaine, il y a donc une autre petite particularité, mais cela sera certainement utile si vous utilisez également d'autres langues. N'oubliez pas que les marquages physiques sur les touches et la fonction réelle n'ont rien en commun. Il s'agit simplement d'une référence visuelle permettant aux utilisateurs de trouver plus facilement les bons symboles.
J'espère que c'était pratique. J'ai remarqué une amélioration instantanée de ma vitesse de frappe, et je fais beaucoup moins d'erreurs de retour arrière. Mes mains peuvent continuer à travailler rapidement, sans avoir à se recycler pour une autre disposition physique, qui est si radicalement différente de la plupart des autres ordinateurs portables et/ou claviers que j'ai. Avec xev et xmodmap, vous devriez bien vous amuser. Si vous avez des demandes similaires, ou peut-être mystérieuses, envoyez-moi un ping et je verrai ce que je peux faire. Bonne saisie.