Tout d'abord, excusez mon ignorance de X et XKB; J'ai essayé de pirater ensemble une solution dans l'espoir de pouvoir réaliser ce que je veux sans en avoir besoin d'une compréhension détaillée.
J'essaie de créer une carte de clavier XKB sur Ubuntu 12.04 qui me permet de stipuler laquelle des deux touches Maj constitue le modificateur Level2. Plus précisément, la 4touche ne doit produire un $
lorsque le décalage vers la droite est maintenu, pas la gauche.
Ma lecture jusqu'à présent:
- http://www.charvolant.org/~doug/xkb/html/node5.html
- http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
- http://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html
- Beaucoup de recherches!
J'ai essayé de définir un type personnalisé, puis de me référer explicitement à lui dans une carte de symboles:
/usr/share/X11/xkb/types/mbfisher
:
default xkb_types "mbfisher" {
type "RIGHT_SHIFT" {
modifiers = None+Shift_R;
map[None] = Level1;
map[Shift_R] = Level2;
};
}
/usr/share/X11/xkb/symbols/mbfisher
:
default
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "mbfisher";
key <AE04> {
type= "RIGHT_SHIFT",
symbols[Group1]= [ 4, dollar ]
};
};
Je sélectionne ensuite la carte avec l'interface graphique de mise en page du clavier Ubuntu.
Cela désactive évidemment le clavier alphanumérique en dehors de la 4touche, mais le signe dollar peut toujours être tapé avec l'une ou l'autre touche Maj.
Je suis conscient d'écrire une énorme question avec beaucoup d'informations inutiles, alors je m'arrête ici; veuillez demander tout ce que j'ai manqué.
Des idées?
# xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
Voici ce qui a finalement fonctionné! J'ai utilisé
xmodmap
et un~/.Xmodmap
fichier plutôt que la configuration xkb.~/.Xmodmap
:Les 2 lignes commentées (regardant avec
!
) montrent les en-têtes de colonne avant et après mes modifications. Cela m'a permis de spécifier le col 2 comme Shift_L et le col 3 comme Shift_R, car j'ai mappé shift_R comme Mode_switch.Les modifications sont effectuées en exécutant:
setxkbmap us
définit la carte US par défaut de sorte que vous travaillez à partir d'une table rase et yxmodmap
ajoute les modifications personnalisées.Lorsque la mise en œuvre
!
,@
,#
,$
et les%
personnages ne peuvent être tapés avec la touche de décalage vers la droite, et^
,&
,*
,(
et)
ne peuvent être tapés avec la touche de décalage vers la gauche.Je peux maintenant continuer en mappant toutes les touches du côté gauche du clavier pour qu'elles ne soient modifiées que par la touche Maj droite (c'est-à-dire les caractères aplhabétiques et leurs modifications majuscules) et vice versa; cette solution signifie que je dois seulement remapper le côté gauche.
Autres liens utiles trouvés en cours de route:
Merci beaucoup à @Trudbert de m'avoir aidé à trouver la réponse!
la source