Disposition personnalisée xkb dans laquelle une clé crée deux points de code unicode

14

J'écris une nouvelle disposition de clavier personnalisée pour Xorg, mais il y a un glyphe particulier qui n'existe pas dans Unicode. Il est cependant facile de le créer en utilisant une lettre standard plus une combinaison de signes diacritiques.

Par exemple, si je veux la lettre vavec un macron ci-dessous, la séquence U0073+U0331crée le caractère que je veux.

Dans ma définition de disposition xkb, je peux spécifier un seul point Unicode (ici altgr+dest lié à ḏ et altgr+shift+dà Ḏ):

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

Mais je ne semble pas être en mesure de spécifier un glyphe Unicode «combiné» pour une seule clé:

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

Est-il possible de créer une définition xkb à l'échelle du système comme celle-ci?

SigueSigueBen
la source

Réponses:

11

ÉDITER:

En train d'essayer...

Les tests montrent que le clavier ne prendra qu'une seule clé dans chaque position.

MAIS, si vous utilisez un keyym rare / jamais utilisé dans la définition de keymap, puis un Xmodmap global pour que CE keyym produise les différents caractères unicode dont vous avez besoin, cela fonctionnera.

Dans le clavier:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

Dans un Xmodmap global: (peut-être chargé à partir de /etc/profile.d?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Il y a pas mal de keyymes non utilisés / à usage spécial, j'ai choisi le LaunchA / B comme exemple.

lornix
la source
Merci d'avoir répondu. Un inconvénient est que ce serait un paramètre d'utilisation, non? Le faire avec xkb le rendrait à l'échelle du système et signifie qu'il peut être distribué dans un seul fichier. Bien sûr, ces conditions étaient dans ma question d'origine!
SigueSigueBen
2
J'ai fouillé le code source, il ne semble pas y avoir de prise en charge pour inclure plusieurs frappes dans les définitions clés du clavier. Bien sûr, vous pouvez le réécrire vous-même pour implémenter cette capacité!
lornix
Ce n'est pas la réponse que je voulais, mais c'est quand même la réponse. Je vais fouiller un peu le code source et regarder les options que vous avez suggérées. Merci.
SigueSigueBen
4

D'autre part, vous pouvez attacher à une clé donnée le caractère unicode combinant le caractère diactityique lui-même, puis vous pouvez le taper après n'importe quel autre caractère. En effet, c'est ainsi que les caractères de combinaison unicode sont censés fonctionner.

Dans X11, il y a des clés mortes, les clés mortes fonctionnent dans l'autre sens: d'abord la clé morte, puis la lettre de base. Il y a un <dead_belowmacron>, vous pouvez le joindre à une clé.

Ensuite, vous devez modifier le fichier Compose pour vos paramètres régionaux (si quelqu'un sait comment ajouter des définitions au fichier Compose à partir d'un emplacement défini par l'utilisateur, je l'apprécierais) et ajouter des lignes comme:

# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"

le fichier de composition à utiliser est défini par les paramètres régionaux dans le fichier /usr/share/X11/locale/compose.dir (le chemin peut varier).

Pablo Saratxaga
la source