[misc] infos xkb

This commit is contained in:
Gaspard Jankowiak 2022-01-27 10:13:00 +01:00
parent a8909f418e
commit 6143ce22dc

View file

@ -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 <a name="keymap"></a>
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 <ESC> { [ Escape ] };
// The extra key on many European keyboards:
key <LSGT> { [ less, greater, bar, brokenbar ] };
...
include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"
...
key <ALT> { [ 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).