« Trucs et astuces » : différence entre les versions
(10 versions intermédiaires par 6 utilisateurs non affichées) | |||
Ligne 122 : | Ligne 122 : | ||
</source> | </source> | ||
Et voici un petit script python (https://gist.github.com/jrd/7b75612d566b063eaeb85b276d565522) qui fait ça tout seul. Attention il faut l'exécuter à chaque fois que votre distribution met à jour le paquet xkb ou équivalent. | |||
==== Je voudrais avoir une espace insécable automatique avec les guillemets==== | ==== Je voudrais avoir une espace insécable automatique avec les guillemets==== | ||
Ligne 169 : | Ligne 170 : | ||
* de Tiger à Mountain Lion ''i.e'' OS X 10.4 à 10,9, on peut installer et utiliser le panneau de Préférences Systèmes [http://pqrs.org/macosx/keyremap4macbook KeyRemap4macbook] (qui n’est pas que pour les MacBook, malgré son nom !) | * de Tiger à Mountain Lion ''i.e'' OS X 10.4 à 10,9, on peut installer et utiliser le panneau de Préférences Systèmes [http://pqrs.org/macosx/keyremap4macbook KeyRemap4macbook] (qui n’est pas que pour les MacBook, malgré son nom !) | ||
* de Mountain Lion à El Capitan, KeyRemap4macbook a été remplacé par Karabiner également téléchargeable sur le site | * de Mountain Lion à El Capitan, KeyRemap4macbook a été remplacé par Karabiner également téléchargeable sur le site | ||
* pour Sierra, | * pour Sierra, High Sierra et Mojave, on utilisera [https://pqrs.org/osx/karabiner/ Karabiner Elements]. | ||
Ces outils permettent de changer tout ce qu’on veut ou presque (plusieurs centaines de réglages disponibles, et on peut facilement apprendre comment en créer d’autres). | Ces outils permettent de changer tout ce qu’on veut ou presque (plusieurs centaines de réglages disponibles, et on peut facilement apprendre comment en créer d’autres). | ||
Ligne 187 : | Ligne 188 : | ||
* http://forum.bepo.fr/viewtopic.php?id=32 et http://bepo.fr/wiki/Pilote_Windows, | * http://forum.bepo.fr/viewtopic.php?id=32 et http://bepo.fr/wiki/Pilote_Windows, | ||
* http://accentuez.mon.nom.free.fr/Clavier-CreationClavier.htm | * http://accentuez.mon.nom.free.fr/Clavier-CreationClavier.htm | ||
Une solution assez simple pour inverser n’importe quelles touches de sa disposition, et qui ne demande pas de connaissances, est d’utiliser l’application [https://learn.microsoft.com/fr-fr/windows/powertoys/ Windows PowerToys]. Dans l’onglet Keyboard Manager, remapper les touches. Cette solution est pratique pour changer la disposition de quelques touches car elle très facilement désactivable. Elle nécessite tout de même d’avoir les droits administrateur pour installer l’application et la dispositon. | |||
Ligne 260 : | Ligne 263 : | ||
=== Pour Windows === | === Pour Windows === | ||
Il est possible d'avoir cette fonctionnalité en utilisant [[Windows_portable#Touche_.C2.AB_extend_.C2.BB|PKL]]. | Il est possible d'avoir cette fonctionnalité en utilisant [[Windows_portable#Touche_.C2.AB_extend_.C2.BB|PKL]]. | ||
Il est aussi possible d’utiliser l’application [https://learn.microsoft.com/fr-fr/windows/powertoys/ Windows PowerToys] et d’ajouter des raccourcis dans l’onglet Keyboard Manager (un pour chaque flèche par exemple). | |||
== Modifier le comportement des touches mortes == | == Modifier le comportement des touches mortes == | ||
Ligne 417 : | Ligne 422 : | ||
Pour remplacer les espaces insécables par des espaces : <code>bind $'"\u00a0":" "'</code>. | Pour remplacer les espaces insécables par des espaces : <code>bind $'"\u00a0":" "'</code>. | ||
==== | ==== zsh (et csh, tcsh) ==== | ||
Dans fish, la commande <code>bind <i>caractère_à_éviter</i> "commandline -i '<i>caractère_de_remplacement</i>'"</code> peut être utilisée. De même | Dans zsh, la commande <code>bindkey -s $'<i>caractère_à_éviter</i>' '<i>caractère_de_remplacement</i>'</code> peut être utilisée. De même qu'en bash, cette commande s'applique au shell courant jusqu'à sa fermeture et peut être placée dans le fichier <code>~/.zshrc</code> pour l'appliquer à toutes les sessions. | ||
Pour remplacer les espaces insécables par des espaces : <code>bindkey -s $'\u00a0' ' '</code>. | |||
==== fish ==== | |||
Dans fish, la commande <code>bind <i>caractère_à_éviter</i> "commandline -i '<i>caractère_de_remplacement</i>'"</code> peut être utilisée. De même que sur les précédents interpréteurs de commandes, cette commande s’applique au shell courant jusqu’à sa fermeture. | |||
Pour remplacer les espaces insécables par des espaces : <code>bind \u00A0 "commandline -i ' '"</code>. | |||
Pour rendre ce changement permanent, il suffit de créer ou d’éditer la fonction <code>fish_user_key_bindings</code> : | |||
<code> | |||
function fish_user_key_bindings | |||
bind \u00A0 "commandline -i ' '" | |||
end | |||
funcsave fish_user_key_bindings | |||
</code> | |||
La fonction est sauvegardé dans le fichier <code>$HOME/.config/fish/functions/fish_user_key_bindings.fish</code>. | |||
Voir la documentation sur [http://fishshell.com/docs/current/commands.html#bind le site officiel] | |||
== Combinaisons de touches particulières == | == Combinaisons de touches particulières == | ||
Ligne 432 : | Ligne 459 : | ||
[[Catégorie:Version 1.0]] | [[Catégorie:Version 1.0]] | ||
[[Catégorie:Installation]] |
Dernière version du 22 mars 2024 à 19:06
Ces trucs et astuces vous permettent de bidouiller les fichiers de configuration (Linux) et autres drivers et clé de registre (Windows) gérant le comportement du clavier.
Modifier la place des touches
Changer la disposition des touches système sous Linux
La définition de chaque caractère pour xkb se trouve dans le fichier /usr/include/X11/keysymdef.h
.
Pour localiser le fichier xkb de la disposition de clavier, taper locate xkb/symbols
en console. Ainsi sous Ubuntu, il vous suffira de modifier le fichier /usr/share/X11/xkb/symbols/fr
avec votre éditeur préféré. Attention : depuis Ubuntu 13.10, pour que les modifications soient effectives, il faut supprimer les dispositions pré-compilées en tapant :
sudo rm /var/lib/xkb/*.xkm
puis fermer et ouvrir votre session si vous utilisez un environnement graphique.
Vous pouvez également vous créer des alias pour passer très rapidement d'une disposition à l'autre :
alias azerty='setxkbmap fr' alias bepo='setxkbmap fr bepo'
En console tty, la commande est :
loadkeys fr-bepo
Utiliser les Options de xkb
La liste des options se trouve généralement dans /usr/share/X11/xkb/rules/base.lst
Quelques options intéressantes :
caps:swapescape inverse ESC et Capslock. shift:breaks_caps Shift annule CapsLock. compose:lwin La touche windows gauche devient Compose. compose:rwin La touche windows droit devient Compose. compose:menu La touche menu devient Compose. compose:caps La touche capslock devient Compose. compose:102 La touche Less-than/Greater-than (êÊ/¦) devient Compose.
Pour activer les options sur une session il suffit de taper :
setxkbmap fr bepo Option1,Option2
Pour désactiver toutes les options :
setxkbmap -option
Pour activer les options à chaque redémarrage il faut rajouter dans la section input device dotée de l'identifiant keyboard :
Option "XkbOptions" "Option1,Option2"
Je voudrais avoir les < et > en accès direct
Sous GNU/Linux, dans le fichier xkb de la disposition, déplacer less (<) et greater (>) en première colonne en les inversant avec guillemotleft («) et guillemotright (»). Le code :
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ”
devient :
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ less, 2, guillemotleft, leftdoublequotemark ] }; // < 2 « “
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ greater, 3, guillemotright, rightdoublequotemark ] }; // > 3 » ”
Je voudrais avoir les chiffres en accès direct
La méthode présentée ici va uniquement intervertir la couche en accès direct avec celle en majuscule des touches sur lesquelles se trouvent les chiffres (les autres touches sont inchangées, de même que les autres couches, tel qu'altgr). En complément de cette modification, je vous conseille d'utiliser la touche verr-maj comme un deuxième altgr, et de dupliquer certains symboles en altgr main droite (notament les parenthèses).
Le moyen le plus simple de le faire, est de créer une disposition basé sur le bépo, en ajoutant ceci à la fin du fichier /usr/share/X11/xkb/symbols/fr :
partial alphanumeric_keys
xkb_symbols "bepo_invert_number" {
// First row
key <AE01> { [ 1, quotedbl ] };
key <AE02> { [ 2, guillemotleft ] };
key <AE03> { [ 3, guillemotright ] };
key <AE04> { [ 4, parenleft ] };
key <AE05> { [ 5, parenright ] };
key <AE06> { [ 6, at ] };
key <AE07> { [ 7, plus ] };
key <AE08> { [ 8, minus ] };
key <AE09> { [ 9, slash ] };
key <AE10> { [ 0, asterisk ] };
};
partial alphanumeric_keys
xkb_symbols "bepo_modifie" {
include "keypad(oss)"
include "fr(bepo)"
include "fr(bepo_invert_number)"
};
Vous pourrez désormais utiliser votre disposition fraichement créé avec la commande :
setxkbmap fr bepo_modifie
Je voudrais intervertir l’apostrophe typographique ( ’ ) avec l’apostrophe dactylographique ( ' )
Sous GNU/Linux, dans le fichier xkb de la disposition, intervertir rightsinglequotemark avec apostrophe. Les lignes :
key <AC05> { [ comma, semicolon, rightsinglequotemark, dead_horn ] }; // , ; ’ ̛
et
key <AB06> { [ apostrophe, question, questiondown, dead_hook ] }; // ' ? ¿ ̉
deviennent :
key <AC05> { [ comma, semicolon, apostrophe, dead_horn ] }; // , ; ' ̛
et
key <AB06> { [ rightsinglequotemark, question, questiondown, dead_hook ] }; // ’ ? ¿ ̉
Et voici un petit script python (https://gist.github.com/jrd/7b75612d566b063eaeb85b276d565522) qui fait ça tout seul. Attention il faut l'exécuter à chaque fois que votre distribution met à jour le paquet xkb ou équivalent.
Je voudrais avoir une espace insécable automatique avec les guillemets
Il faut ajouter les lignes suivantes dans votre ~/.XCompose
. Assurez-vous que ce sont bien des espaces insécables qui sont après et avant les guillemets (autrement dit, méfiez-vous des copier-coller : certains éditeurs de texte vont les remplacer par des espaces normales, ou par un caractère quelconque). Les guillemets sans insécables sont encore accessibles avec <span class="touche" style="background: </>; ">clavier bépoCompose.
# Insécables automatiques
<guillemotleft> : "« "
<guillemotright> : " »"
Rendre capslock utile
Inverser Maj et CapsLock
Dans le fichier xkb de la disposition bépo :
key <CAPS> { [ Shift_L ], actions = [ SetMods(modifiers=Shift) ] };
key <LFSH> { [ Caps_Lock ], actions = [ LockMods(modifiers=Lock) ] };
Maj sur CapsLock en gardant CapsLock en AltGr au même endroit
Dans la section xkb_types
:
type "ALTGR_TWO" { modifiers = LevelThree; map[None] = Level1; map[LevelThree] = Level2; level_name[Level1] = "Base"; level_name[Level2] = "AltGr"; };
Puis :
key <CAPS> { type = "ALTGR_TWO", [ Shift_L, Caps_Lock ], actions = [ SetMods(modifiers=Shift), LockMods(modifiers=Lock) ] };
AltGr dupliqué à gauche
Choisir une touche, comme CAPS ou LFSH ou LWIN ou…
key <CAPS> { [ ISO_Level3_Shift ], actions = [ SetMods(modifiers=LevelThree) ] };
Mettre Backspace sur CapsLock
Sous linux à rajouter dans le xkb :
key <CAPS> { [ BackSpace ] };
Changer la disposition des touches sous Mac
Voir ConfigGenerator#Sous_Mac_OS_X
Changer la disposition des touches systèmes sur Mac
Sur un Mac :
- de Tiger à Mountain Lion i.e OS X 10.4 à 10,9, on peut installer et utiliser le panneau de Préférences Systèmes KeyRemap4macbook (qui n’est pas que pour les MacBook, malgré son nom !)
- de Mountain Lion à El Capitan, KeyRemap4macbook a été remplacé par Karabiner également téléchargeable sur le site
- pour Sierra, High Sierra et Mojave, on utilisera Karabiner Elements.
Ces outils permettent de changer tout ce qu’on veut ou presque (plusieurs centaines de réglages disponibles, et on peut facilement apprendre comment en créer d’autres).
Exemple de changements :
- transformer la touche Commande (= « Cmd » ou « Pomme ») qui est à droite de la barre espace en touche Alt (= « Option »), notamment pour les claviers de portables qui n’ont qu’une touche Alt (à gauche) : sélectionner « Change Command_R to Option_R » dans le sous-menu « Change Command_R Key » ;
- pour ceux qui ont branché un clavier PC sur le Mac, mais veulent retrouver la touche Commande immédiatement à gauche de la barre espace : inverser à gauche les touches Alt et Commande en cliquant sur « Option_L to Command_L » et sur « Command_L to Option_L » dans les sous-menus appropriés (« Change Option_L Key » et « Change Command_L Key ») ;
- échanger CapsLock et la touche Majuscule gauche (Shift_L) : 1. utiliser PCKeyboardHack pour mapper CapsLock sur Shift_L : cocher « Change CapsLock Key », et entrer à droite sur la même ligne le keycode correspondant à Shift_L (= 56, cf. liste indicative sur le panneau de Préférences Système de PCKeyboardHack) [note : sur certains modèles, il se peut que vous ayez à cocher d’abord l’option « Enable CapsLock LED Hack » dans KeyRemap4MacBook (dans le sous-menu « General ») pour que ça marche, cf. la page de PCKeyboardHack (en anglais)] ; 2. utiliser KeyRemap4MacBook pour mapper Shift_L sur CapsLock : dans le sous-menu « Change Shift_L Key », cocher l’option « Shift_L to CapsLock » ;
- tirer profit des touches spéciales Couper/Copier/Coller qui existent sur certains claviers (p. ex. TypeMatrix 2030) : le clavier envoie des « combos » à l’ordi — en l’occurrence : Shift+Delete, Control+Insert et Shift+Insert, respectivement —, vous pouvez remapper ces combos vers Command+X, Command+C et Command+V en cochant l’option « Use PC Style Copy/Paste #3bis », que vous trouverez dans le sous-menu « Device Specific Settings ». [Attention, bien sélectionner l’option 3bis, correspondant au bépo ! Vous avez aussi l’option « Use PC Style Copy/Paste #3 » pour réaliser la même chose en azerty ou qwerty. Ce second réglage est disponible au sein du même sous-menu « Device Specific Mixed Settings » pour le clavier TypeMatrix 2030, mais aussi dans le sous-menu « For PC Users », pour d’autres claviers.]
- bien entendu, vous pouvez faire en sorte que certains changements soient actifs sur un clavier, mais pas sur un autre (par exemple si vous branchez un chavier externe sur un portable : vous voulez peut-être que votre clavier interne fonctionne « normalement » — ou en tout cas différemment — quand vous débranchez le clavier externe) ;
- et même, en théorie [en pratique : peut-être à venir prochainement ?…], avoir des changements actifs pour le bépo, mais pas pour l’azerty ;
- si vous êtes un peu bidouilleur, vous pouvez facilement aller plus loin…
Changer la disposition des touches sous Windows
Voir
- http://forum.bepo.fr/viewtopic.php?id=32 et http://bepo.fr/wiki/Pilote_Windows,
- http://accentuez.mon.nom.free.fr/Clavier-CreationClavier.htm
Une solution assez simple pour inverser n’importe quelles touches de sa disposition, et qui ne demande pas de connaissances, est d’utiliser l’application Windows PowerToys. Dans l’onglet Keyboard Manager, remapper les touches. Cette solution est pratique pour changer la disposition de quelques touches car elle très facilement désactivable. Elle nécessite tout de même d’avoir les droits administrateur pour installer l’application et la dispositon.
Changer la disposition des touches systèmes sous Windows
Windows Server 2003 et Vista : Remapkey
Pour Windows XP et Windows Server 2003, il existe le programme remapkey.exe
disponible dans le Windows Server 2003 Resource Kit Tools.
Il n'a pas été « validé » pour Windows Vista, toutefois en le lançant en tant qu'administrateur (avec un clic droit sur l'exécutable), vous devriez être en mesure de réaliser des changements :
Windows 2000 et ultérieur : Scan code mapper
Fourni nativement avec Windows depuis 2000, le Scan code mapper for keyboards est configuré par la valeur Scancode Map
à ajouter dans une certaine clé Keyboard Layout
[1] du Registre. En présence de cette valeur (dont l’ajout nécessite un redémarrage pour devenir effectif) et en fonction de la chaîne binaire qui la constitue, tout scancode du clavier peut être remappé vers n’importe quel autre de Windows pour tous les utilisateurs du poste. Cela permet de permuter des touches, d’en désactiver ou d’en ajouter qui n’existent pas sur le clavier mais sont prévues pour la prise en charge d’autres claviers sous Windows.
À cause d’un problème de niveau d’implémentation, le scancode mapper peut ne pas fonctionner en mode terminal[2]. En plus, un bug a été relevé en lien avec le niveau Fonction du clavier intégré au portable[3]. L’utilisation de claviers externes n’est pas impactée par ce dysfonctionnement.
L’archive de la Mailing list renferme quelques exemples en pièce jointe[4] ainsi que plus de détails dans les corps des mails de plusieurs fils de discussion[5]. Notamment, la redisposition avec Majuscule sur Alt a été présentée par Julien (discussion) sur la ML, Tue, 03 Oct 2017 14:02:30 +0200.
Lors des mises à jour, Windows 10 ne conserve pas la valeur « Scancode Map », qu’il faudra donc exporter avant, surtout si elle a été modifiée directement dans le registre, afin de pouvoir la remettre après la mise à jour.
Sous Windows 10 (au moins sous la version 1709) les fichiers *.reg ne sont plus versés au registre à partir du fichier (panne à mettre en parallèle avec les nombreuses autres constatées). On peut les ajouter après avoir ouvert l’éditeur de registre regedit.exe, par Fichier > Importer.
Créer une touche de fonction Fn comme sur les portables
Pour XOrg (Linux, BSD, etc.)
Choisissez une touche comme Alt Gauche (LALT), Win Gauche ou droite (LWIN, RWIN), CAPS, etc. Puis
key <LALT> { [ VoidSymbol ], actions = [ SetControls(controls=Overlay1) ] };
Il ne vous reste plus qu’à choisir quelles touches vous voulez mettre en Fn: pavé numérique, flèches de déplacements, etc. Par exemple pour mettre une flèche de déplacement à gauche sur la touche clavier bépot:
key <AC07> {
type[group1]="FOUR_LEVEL_ALPHABETIC", [t, T, thorn, THORN], overlay1 = <LEFT> }
Vous trouverez un exemple complet ici (et ici une autre configuration plus adaptée pour les vimistes :-)).
Un exemple que l'on peut ajouter sur n'importe quel layout :
partial hidden alphanumeric_keys xkb_symbols "pc78" { key <CAPS> { [ VoidSymbol ], actions = [ SetControls(controls=Overlay1), LockControls(controls=Overlay1) ] }; key <AD07> { overlay1 = <HOME> }; key <AD08> { overlay1 = <UP> }; key <AD09> { overlay1 = <PGDN> }; key <AD11> { overlay1 = <BKSP> }; key <AC07> { overlay1 = <LEFT> }; key <AC08> { overlay1 = <DOWN> }; key <AC09> { overlay1 = <RGHT> }; key <AC10> { overlay1 = <PGUP> }; key <AC11> { overlay1 = <RTRN> }; key <AB07> { overlay1 = <END> }; };
dont le bépo :
partial alphanumeric_keys xkb_symbols "bepo-pc78" { include "fr(bepo)" include "fr(pc78)" };
(à mettre dans votre fichier fr.)
Pour Mac
Grâce à KeyRemap4MacBook, vous pouvez en théorie changer une touche quelconque en touche Fn ; en pratique, en ce moment (= version 6.8.1 de KR4MB), les réglages sont disponibles pour les touches suivantes : Command_R (= touche « Cmd »/« Pomme » de droite), Control_L (= touche Control de gauche), Enter, Option_L (= touche Alt/Option de gauche), Option_R (= la même, mais à droite), Shift_L (= touche majuscule à gauche), Shift_R (= idem à droite), la touche Application d’un clavier PC (ce dernier réglage est disponible dans le sous-menu « For PC Users », puis « Change PC Application Key »). Le réglage est à trouver chaque fois dans le sous-menu correspondant : « Change Command_R », « Change Control_L », etc.
Si cette liste ne suffit pas à vos besoins, on peut la compléter :
- soi-même, en apprenant la syntaxe (pas bien méchante + nombreux exemples dispos) du fichier XML de configuration de KR4MB (explications + tutoriel disponibles (en anglais) sur le site de KR4MB, page Source Code), et en envoyant ensuite sa contribution au développeur pour qu’elle soit intégrée aux prochaines versions (1. plus pratique, pour éviter de devoir recompiler/réinstaller quand on fait une mise à jour, 2. plus sympa, pour faire profiter les autres des additions créées) ;
- si on n’y arrive pas, en demandant gentiment au développeur ce qu’on veut (attention à ne pas abuser de sa disponibilité, même si elle est très grande !).
Pour Windows
Il est possible d'avoir cette fonctionnalité en utilisant PKL.
Il est aussi possible d’utiliser l’application Windows PowerToys et d’ajouter des raccourcis dans l’onglet Keyboard Manager (un pour chaque flèche par exemple).
Modifier le comportement des touches mortes
Je suis espérantiste et je voudrais que ^+v=ŭ et ^+V=Ŭ
Il faut ajouter ce qui suit dans votre ~/.XCompose
<dead_circumflex> <v> : "ŭ" U016D <dead_circumflex> <V> : "Ŭ" U016C
Je voudrais définir des touches mortes de modifieurs (Alt, AltGr, Ctrl,…) (X.Org)
Il vous faut avoir votre propre fichier .xkb pour pouvoir le modifier. Dans la section "xkb_symbols" rajoutez par exemple:
key <FK13> { actions = [ LatchMods(modifiers=Control) ] }; // dead ctrl key <FK14> { actions = [ LatchMods(modifiers=Shift) ] }; // dead shift key <FK15> { actions = [ LatchMods(modifiers=Alt) ] }; // dead alt key <FK16> { actions = [ LatchMods(modifiers=AltGr) ] }; // dead altgr
Il ne vous reste plus qu'à utiliser ces keycodes comme bon vous semblera !
Par exemple, si vous avez défini une couche overlay1 (voir astuce plus haut):
key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar, brokenbar ], overlay1 = <FK13> }; // b B | ¦
pour avoir un Control mort en fn+b :-)
GNU/Linux: configuration poussée
Vous pouvez consulter les différents documents concernant XKB.
Créer une disposition personnalisé
Attention, en modifiant la façon dont votre clavier est utilisé, il est possible que vous en perdiez l'usage (il m'est arrivé d'avoir de ne plus avoir accès à la touche `enter` ou `espace` en faisant de mauvaise manipulation) ! Faites donc des sauvegardes régulières dans des fichiers de backup, et ne redémarer pas votre ordinateur avec une disposition boggué.
1. Ce dont on va se servir :
- /usr/share/X11/xkb/symbols/fr : contient entre autre la définition du bépo
- /usr/include/X11/keysymdef.h : contient la liste des symboles (keysym)
- http://www.charvolant.org/~doug/xkb/html/img3.png Pour la liste des codes de touches (keycode)
2. Rappel : faite une copie de sauvegarde de /usr/share/X11/xkb/symbols/fr (avant, en cas d'erreur, et après pour ne pas perdre votre travail lors d'une mise à jour).
3. Fabrication d'une dispo perso basé sur le bépo :
Ajouter à la fin du fichier /usr/share/X11/xkb/symbols/fr les lignes suivantes :
xkb_symbols "bepo_test" { include "keypad(oss)" include "fr(bepo)" name[Group1]= "French (Bepo, ergonomic, Dvorak way, Test de modification de la disposition bepo)"; // ajoutez les différences entre votre disposition et le bépo ici }
Include "keypad(oss)" m'a permis de régler certain problèmes (j'avais par exemple déclacé ma touche majuscule et shift + majuscule ne fonctionnait plus. Include "fr(bepo)" permet de se baser sur la disposition bepo, et donc avoir un clavier utilisable dès le début des modifications.
Votre disposition est maintenant prête à l'emploi. Il suffit désormais de taper :
setxkbmap fr bepo_test
pour basculer vers votre disposition (actuellement c'est un clone du bépo, donc vous ne verrez pas de différence), et inversement
setxkbmap fr bepo
pour revenir en bépo.
Vous pouvez désormais ajouter vos changements en piochant dans la liste des exemples présenté précédement dans cette page. Vous pourrez également vous inspirer des dispositions de clavier existante situées dans /usr/share/X11/xkb/symbols/*.
/!\ Si vous enlevez certains symboles de votre clavier, vous ne pourrez plus les écrire. C'est particulièrement problèmatique s’il s'agit de la touche « espace » ou « entrée ». Je vous conseille lors des phases de tests de toujours avoir une console accessible à la souris (pour pouvoir faire du copier-coller avec le clic milieu), avec la commande suivante prête à être validée : « setxkbmap fr bepo ».
Exemple
- Un exemple complet se trouve ici.
- La disposition perso de Robin à également été construite de cette manière.
Utiliser une disposition personnalisée avec du matériel Razer
Étant possesseur d’un Razer Orbweaver (il s’agit globalement d’un clavier main gauche prévu pour les jeux vidéos), je souhaitais modifier la disposition des touches. L’outil RazerSynapse n’étant pas disponible sous Linux, voici le script que j’utilise :
orbweaver_id=$( xinput list | sed -n 's/.*Orbweaver.*id=\([0-9]*\).*keyboard.*/\1/p' ) [ "$orbweaver_id" ] || exit mkdir -p /tmp/xkb/symbols cat >/tmp/xkb/symbols/custom <<\EOF xkb_symbols "orbweaver" { name[Group1]= "English (US) for orbweaver"; key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, at ] }; key <AE03> { [ 3, numbersign ] }; key <AE04> { [ 4, dollar ] }; key <TAB> { type[group1] = "TWO_LEVEL", [ Tab, ISO_Left_Tab ] }; key <AD01> { [ q, Q ] }; key <AD02> { [ w, W ] }; key <AD03> { [ e, E ] }; key <AD04> { [ r, R ] }; key <CAPS> { type[group1] = "ONE_LEVEL", [ Caps_Lock ] }; key <AC01> { [ a, A ] }; key <AC02> { [ s, S ] }; key <AC03> { [ d, D ] }; key <AC04> { [ f, F ] }; key <LFSH> { type[group1] = "ONE_LEVEL", [ Shift_L ] }; key <AB01> { [ z, Z ] }; key <AB02> { [ x, X ] }; key <AB03> { [ c, C ] }; key <AB04> { [ v, V ] }; key <LALT> { type[group1] = "ONE_LEVEL", [ Alt_L ] }; key <UP> { [ Up ] }; key <LEFT> { [ Left ] }; key <DOWN> { [ Down ] }; key <RGHT> { [ Right ] }; key <SPCE> { [ space ] }; }; xkb_symbols "orbweaver_custom" { include "custom(orbweaver)" name[Group1]= "custom mapping for orbweaver"; key <CAPS> { [ Control_L ] }; }; EOF setxkbmap -device $orbweaver_id -print | sed 's/\(xkb_symbols.*"\).*\(".*\)/\1custom(orbweaver_custom)\2/' | xkbcomp -I/tmp/xkb -i $orbweaver_id -synch - $DISPLAY 2>/dev/null
Cela me permet de ne pas modifier la disposition de mon clavier (qui est en bépo), tout en ayant une disposition qwerty sur mon orbweaver. J'ai de plus ajouté une touche control à la place du caps-lock de mon orbweaver. Ces modifications s'inspirent de cet article du forum archlinux.
setxkbmap ne fonctionne qu’une seule fois
Imaginez le scénario suivant :
- vous créez un nouveau layout dans un fichier
/usr/share/X11/xkb/symbols/layout
; - vous l’activez à l’aide de la commande
setxkbmap layout variante
; - vous modifiez votre layout ;
- vous retapez
setxkbmap layout variante
; - vous vous apercevez que vos dernières modifications n’ont pas été prises en compte.
En fait, la première fois que vous exécutez setxkbmap layout variante
, la commande compile le clavier et le stocke dans /var/lib/xkb
sous forme d’un fichier .xkm avec un nom du genre server-1AAD618ED4955FE03F2E50661CFAE17F431BAE8A.xkm
Aux appels suivants de la commande setxkbmap, le fichier .xkm ne sera plus compilé.
La manière la plus simple d’obtenir sa recompilation à partir du code xkb que vous venez de modifier est d’effacer au préalable les fichiers .xkm avec la commande
rm /var/lib/xkb/*.xkm
si vous êtes su,
ou
sudo rm /var/lib/xkb/*.xkm
si vous êtes sudoer,
ou encore de renommer le fichier source.
Éviter les « fautes» de frappe de caractères invisibles dans les interfaces en ligne de commandes
En CLI, pour éviter les commandes infructueuses dues à des caractères invisibles – notamment l’espace insécable à la place de l’espace du fait de sa position en bépo sur clavier bépoMaj+clavier bépoEspace –, il est possible de remplacer ces caractères par d’autres à l’aide de raccourcis (bind).
bash
Dans bash, la commande bind $'"caractère_à_éviter":"caractère_de_remplacement"'
peut être utilisée. Elle s’applique au shell courant jusqu’à sa fermeture et peut être placée dans le fichier ~/.bashrc
pour l’appliquer à toutes les sessions.
Pour remplacer les espaces insécables par des espaces : bind $'"\u00a0":" "'
.
zsh (et csh, tcsh)
Dans zsh, la commande bindkey -s $'caractère_à_éviter' 'caractère_de_remplacement'
peut être utilisée. De même qu'en bash, cette commande s'applique au shell courant jusqu'à sa fermeture et peut être placée dans le fichier ~/.zshrc
pour l'appliquer à toutes les sessions.
Pour remplacer les espaces insécables par des espaces : bindkey -s $'\u00a0' ' '
.
fish
Dans fish, la commande bind caractère_à_éviter "commandline -i 'caractère_de_remplacement'"
peut être utilisée. De même que sur les précédents interpréteurs de commandes, cette commande s’applique au shell courant jusqu’à sa fermeture.
Pour remplacer les espaces insécables par des espaces : bind \u00A0 "commandline -i ' '"
.
Pour rendre ce changement permanent, il suffit de créer ou d’éditer la fonction fish_user_key_bindings
:
function fish_user_key_bindings
bind \u00A0 "commandline -i ' '"
end
funcsave fish_user_key_bindings
La fonction est sauvegardé dans le fichier $HOME/.config/fish/functions/fish_user_key_bindings.fish
.
Voir la documentation sur le site officiel
Combinaisons de touches particulières
Commande telnet
Sous windows, l'échappement du telnet se fait avec [Ctrl] + [$] en azerty. En bépo, c'est …………
Notes et références
- ↑ Le chemin complet est [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout].
- ↑ Citation de la page indiquée plus haut : « Note that if the mapping of a scan code is necessary on a keypress, the step is performed in user mode just before the scan code is converted to a virtual key. Doing this conversion in user mode can present certain limitations, such as mapping not working correctly when running under Terminal Services. » Keyboard and mouse class drivers, section « Scan code mapper for keyboards »
- ↑ Ce bug, apparu quand VerrCap était remappé en Maj gauche, a disparu quand c’est Alt qui a été remappé en Maj gauche. Il empêchait la sélection de texte par Maj+flèche, et la sélection de fichiers multiples par Maj+clic.
- ↑ La dernière version archivée est attachée à ce mail sous le nom de
Scancode_Map_2017-11-15T1658+0100.zip
. - ↑ Les deux fils à l’origine de l’envoi de cette suite de pièces jointes sont : Inversion Caps/Maj sous windows et Inversion Alt Gr/Maj sous windows. Ne pas hésiter à rechercher dans l’archive les autres occurrences du sujet : Remarques d'un néophyte sur la disposition bépo, Deux propositions, pour ne citer que les deux occurrences de "scancode map" trouvées par Google dans l’archive (le 15/10/2017).