"1. Alors, que fait le modificateur de 5ème niveau? "
Il choisit le cinquième niveau. Le modificateur de 2e niveau (juste un changement régulier) choisit le deuxième niveau et le 3e niveau choisit le troisième niveau.
La raison pour laquelle le modificateur de 5e niveau choisit le cinquième niveau au lieu du quatrième niveau (juste après le modificateur de 3e niveau) est que ces trois modificateurs peuvent être combinés de différentes manières pour choisir huit niveaux différents (cela inclut de n'utiliser aucun des modificateurs, qui est juste en appuyant sur une touche sans ces modificateurs). Il y a huit combinaisons depuis 2 ↑ 3 = 8. Pour les deux premiers modificateurs, il y a quatre combinaisons:
- Pas de modificateurs (niveau 1)
- Modificateur de 2e niveau, alias shift (niveau 2)
- Modificateur de 3e niveau (niveau 3)
- 2e + 3e modificateur (niveau 4)
L'ajout du troisième modificateur (5e niveau) ajoute quatre niveaux supplémentaires.
«2. Comment puis-je le configurer pour que je puisse obtenir 5 ou six caractères différents sur une seule clé (modifiée par Shift, Alt Gret Right
Ctrlpar exemple)? "
Tout d'abord, vous avez besoin d'une mise en page qui utilise cinq caractères ou plus par touche. Vous pouvez choisir une disposition existante, mais si vous souhaitez simplement ajouter plus de niveaux à la disposition que vous utilisez actuellement, cela peut ne pas être optimal. Par exemple, il y a la disposition du clavier Neo († 1), mais elle est «optimisée pour la langue allemande», donc pas géniale pour la plupart des anglophones.
Néanmoins, il pourrait être instructif de voir quelles touches Neo a choisies pour le modificateur de niveau 5.
Neo appelle apparemment le modificateur de niveau 5 pour «Mod4». Comme vous pouvez le voir, il utilise la touche à droite de la touche Maj gauche ( LSGT
) et la touche Alt droite / AltGr
touche. Il s'agit d'un clavier européen (105 touches) qui, par rapport au clavier américain (104 touches), a un décalage vers la gauche étroit et une touche de retour haute et fine. Pour une disposition de clavier basée sur le clavier américain, il peut être nécessaire ou préférable de choisir d'autres touches.
Choisir une touche de modification de niveau 5
Dans la réponse de sup, il choisit d'utiliser Xmodmap. De nos jours, des outils comme Setxkbmap sont recommandés par rapport à Xmodmap. Xkb est livré avec de nombreuses options prédéfinies pour des choses comme le choix du modificateur de niveau 5. Si vous consultez
man xkeyboard-config et recherchez, lv5
vous trouverez ces options:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Les options documentées sont donc la LSGT
clé, la touche alt droite, la touche Windows droite et la touche Windows gauche. Comme nous l'avons vu, Neo utilise les deux premières options.
Disons que vous souhaitez utiliser l' lv5:ralt_switch_lock
option avec une mise en page. Cette commande configure la us
mise en page avec cette touche de modification de niveau 5:
setxkbmap -option "lv5:ralt_switch_lock" us
Donc, pour l'une des options décrites dans man xkeyboard-config
, utilisez-la comme argument -option
lors de l'utilisation de Setxkbmap.
Dans le cas où ces options ne sont pas suffisantes et que vous souhaitez définir une autre clé pour être le modificateur de niveau 5, il est instructif de regarder les déclarations de ces options. Ils semblent être dedans
/usr/share/X11/xkb/symbols/level5
. La déclaration de
lv5:ralt_switch_lock
ressemble à ceci:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
Le côté droit de symbols[Group1]
déclare quelle clé ou caractère chaque niveau de la clé doit produire. Cela utilise les huit niveaux possibles car il est censé verrouiller le modificateur de niveau 5 lorsqu'il est enfoncé avec une autre touche de décalage de niveau 5. Ainsi, les niveaux 5 à 8 sont émis
ISO_Level5_Lock
car tous ces niveaux sont accessibles en maintenant enfoncé le décalage de niveau 5 et une combinaison des autres touches de décalage (aucune pour toutes). Si vous ne souhaitez que le comportement de décalage et pas également le comportement de verrouillage si vous appuyez deux fois, vous pouvez faire une déclaration plus simple (à partir du même fichier):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Ajout de niveaux supplémentaires à une mise en page
Les mises en page Xkb sont assez modulaires. Vous pouvez inclure des dispositions existantes et les modifier. Nous pouvons donc choisir une disposition existante avec moins de 5 niveaux et y ajouter quelques niveaux.
Vous pouvez créer de nouvelles mises en page en copiant le fichier avec vos mises en page
/usr/share/X11/xkb/symbols/
, ou partout où vos outils Xkb recherchent des mises en page. Mais cela nécessite le privilège sudo, ce n'est donc pas la meilleure solution. Alternativement, vous pouvez copier la structure du répertoire de xkb/
et placer vos présentations dans le répertoire approprié sous xkb/
, à savoir
symbols/
. Disons que vous avez créé un fichier xkb-tree/symbols/my-layouts
. Pour utiliser les dispositions définies dans ce fichier, vous pouvez utiliser l' -print
option de setxkbmap
, puis diriger la sortie vers xkbcomp
. Ce script wrapper prend les dispositions en entrée:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
En ce qui concerne le fichier avec la mise en page, disons que nous voulons étendre la mise en page «US international», qui utilise quatre niveaux. Tout d'abord, nous configurons les touches de décalage de niveau 3 et de niveau 5 de la même manière que Neo:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Maintenant, nous voulons ajouter quelques caractères supplémentaires. Prenons simplement les quatre premières clés des dispositions Qwerty comme exemple. Ces touches sont Q
à R
, qui correspondent <AD01>
à <AD04>
. Nous devons d'abord rendre les touches capables d'utiliser jusqu'à huit niveaux:
key.type[Group1] = "EIGHT_LEVEL";
Pour les quatre premiers niveaux, afin de ne pas les redéfinir, nous les mappons NoSymbol
. Ensuite, nous ajoutons deux niveaux. Au niveau 5, nous ajoutons les flèches ←↓↑→
(† 2). Au niveau 6, nous ajoutons les touches de direction. Notre mise en page finit par ressembler à ceci:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Pour l'utiliser, nous pouvons utiliser le script wrapper que nous avons créé:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo est de(neo)
en Xkb; setxkbmap "de(neo)"
.
† 2: afin de trouver les noms symboliques utilisés par Xkb, recherchez un fichier nommé keysymdef.h
. Il doit se trouver sous un répertoire nommé X11/
. Vous pouvez également utiliser des noms Unicode, par exemple U2192
pour U + 2192.