diff --git a/misc.markdown b/misc.markdown index 0eab136..e7b748c 100644 --- a/misc.markdown +++ b/misc.markdown @@ -5,6 +5,71 @@ subtitle: Divers en_url: /en/misc --- +## Modifier une disposition clavier XKB (infos tirées du post de [madduck](https://web.archive.org/web/20170825051821/http://madduck.net:80/docs/extending-xkb/)) + +Les dispositions XKB sont construites à partir de fragments de définitions présentes dans `/usr/share/X11/xkb` (sous Fedora & co.), en suivant un genre de recette. On peut afficher la recette utilisée pour la disposition active avec + + setxkbmap -print + +ce qui donne par exemple + + xkb_keymap { + xkb_keycodes { include "evdev+aliases(azerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols { include "pc+fr+inet(evdev)" }; + xkb_geometry { include "pc(pc105)" }; + }; + +La ligne la plus intéressante est la ligne `xkb_symbols`, qui indique que cette disposition utilise les fichiers de définition `pc` et `fr`, ainsi que le fragment `evdev` du fichier `inet`. Tous ces fichiers sont présents dans `/usr/share/X11/xkb/symbols`. Si on regarde par exemple le premier fragement de `pc`: + + default partial alphanumeric_keys modifier_keys + xkb_symbols "pc105" { + + key { [ Escape ] }; + + // The extra key on many European keyboards: + key { [ less, greater, bar, brokenbar ] }; + + ... + + include "srvr_ctrl(fkey2vt)" + include "pc(editing)" + include "keypad(x11)" + + ... + + key { [ NoSymbol, Alt_L ] }; + include "altwin(meta_alt)" + + ... + + }; + +Sur la première ligne on peut voir : +- `default` : c'est le fragment qui sera utilisé si `pc` est inclus sans précision (sans parenthèses) +- `partial` : ce fragement ne définit pas toutes les touches +- `alphanumeric_keys` et `modifier_keys` : sont définies à la fois des caractères affichables et d'autres non. + +On peut construire une nouvelle définition de clavier en combinant des fragments déjà sur le système, mais on peut aussi ajouter nos propres +définitions. Avant de toucher aux fichiers système, on peut tester ses idées en créant un répertoire avec la structure suivante : + + xkb + ├── keymap/perso + └── symbols/perso + +- le fichier `keymap/perso` est similaire à celui [ci-dessus](#keymap), avec une ligne `xkb_symbols` modifiée, par exemple `"pc+fr+inet(evdev)+perso"`. +- `symbols/perso` contient nos nouvelles définitions. + +On supposant que la variable shell `xkb` pointe vers le répertoire `xkb`, on active la disposition comme ça : + + xkbcomp -I${xkb} ${xkb}/keymap/perso $DISPLAY + +Quand on est satisfait, met nos définitions dans `/usr/share/X11/xkb/symbols/perso` (par exemple), et on ajoute une entrée dans la section `! layout` de `rules/base.lst`, +on peut utiliser notre définition avec : + + setxkbmap -symbols "pc+fr+inet(evdev)+perso" + ## Dictionaire mathématique multilingue [C'est par là](/mmd/) (en travaux).