Comment réactiver la touche de verrouillage des majuscules?

12

Je configure actuellement ma disposition de clavier par défaut comme ceci:

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

Il désactive la touche de verrouillage des majuscules et en fait une touche ctrl supplémentaire, ainsi qu'un essaim d'autres options.

Je voudrais faire ce qui suit pour changer les dispositions du clavier:

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

Cependant, il ne réactive pas la touche de verrouillage des majuscules; la touche de commande gauche et le verrouillage des majuscules restent des touches de commande pour autant que je puisse voir.

Je sais que je peux effacer toute la liste des options, mais dans l'intérêt de la maintenabilité, je préfère ne pas copypaste les options autour. Comment réactiver le verrouillage des majuscules?

Mise à jour: En regardant les touches avec xev (1), il apparaît ctrl: nocaps donne un Control_Lpour les deux touches, et ctrl: swapcaps "restaure" la touche de verrouillage des majuscules (en appuyant sur la touche donne Caps_Lock). Cependant, la LED de verrouillage des majuscules ne s'allume pas et ne fonctionne pas réellement.

L'examen du xkeyboard-config/symbols/ctrlfichier dans les sources X.org fait allusion au problème:

xkb_symbols "nocaps" {
    replace key <CAPS>  {  [ Control_L, Control_L ] };
    modifier_map  Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
    replace key <CAPS>  {  [ Control_L ] };
    replace key <LCTL>  {  [ Caps_Lock ] };
};

Cette dernière option n'a pas de ligne modifier_map, quoi que cela fasse

hahaamu
la source
Je suppose que tous ceux qui ont essayé de m'aider ont coincé leurs claviers sur dvorak = (
hhaamu
4
X est tellement vieux et complexe maintenant que peu de gens comprennent vraiment les divers mécanismes internes. Il y a même des sections dans la page de manuel qui disent (et je cite): " Personne ne veut dire comment cela fonctionne. Peut-être que personne ne sait ... ". Je suis également intéressé à voir une réponse à cette question, mais il se peut que personne ne le sache ...
jw013

Réponses:

14

Les commandes suivantes devraient fonctionner:

xmodmap -e 'keycode 0x42 = Caps_Lock'

ou

setxkbmap -option

Les commandes ci-dessus fonctionnent très bien pour restaurer le comportement par défaut, dont je n'ai presque jamais besoin, heureusement.

Je remappe normalement le verrouillage des majuscules à Control (heureusement, VI / VIM prend en charge CTRL-C au lieu de ESC) avec la commande suivante:

setxkbmap -option ctrl:nocaps -layout gb
Alex
la source
L'option "setxkbmap-option" pour effacer les paramètres est exactement ce que je cherchais. J'ai continué à essayer de changer mon comportement, mais il a continué d'ajouter des éléments en conflit à la liste des options.
m0j0
2

Essayer setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps

Depuis la page de manuel:

[...] If you want to
replace all previously specified options, use the -option  flag
with an empty argument first.

L'ironie, c'est qu'ici l' -option ctrl:swapcapsemporte réellement -option ctrl:nocaps- je suppose que le comportement a changé.

Edit: Comme l'OP l'a déclaré, il veut éviter d' effacer les options (comme cela est fait de la manière ci-dessus).

/usr/share/X11/xkb/rules/xorg.lstmontre l'option ctrl:aa_ctrl(contrôle en bas à gauche), qui semble réinitialiser le verrouillage des majuscules après nocapsici.

Je suppose que cela vaut la peine d'essayer, et vous pouvez également consulter la liste ( grep ctrl\:) et voir s'il y a quelque chose d'autre qui pourrait fonctionner, au cas où celui-ci ne fonctionnerait pas.

S'il n'y a pas d'option pour cela, je suppose que la solution est de pirater le clavier actuel, en associant à nouveau le verrouillage des majuscules à la touche de verrouillage des majuscules (mais je n'ai pas d'expérience avec cela, à part croire qu'il existe un outil qui vous permet de faire avec une doublure).

njsg
la source
Cela efface en effet la liste des options, mais je souhaite conserver les options non liées aux majuscules (comme je l'ai indiqué dans la question) telles que les clés de composition.
hhaamu
Oh, désolé, j'ai mal lu la question. Je ne peux pas être sûr que cela fonctionnera (comme je l'ai dit, swapcapsréactiver le verrouillage des majuscules ici), mais à partir de /usr/share/X11/xkb/rules/xorg.lst, je vois qu'il y a l'option ctrl:aa_ctrl(contrôle en bas à gauche), qui semble réinitialiser le verrouillage des majuscules après nocapsici.
njsg
Je pense que le programme magique est, xmodmapmais je ne sais pas trop comment l'utiliser
hhaamu
0

il y a une option "caps: capslock" (qui correspond à l'ajout de "+ capslock (capslock)" à xkb_symbols) qui active le capslock.

Cependant, cette option (peut-être toutes les majuscules: xxxxx?) Est ajoutée avant celles ctrl: xxxxx existantes; comme ctrl: swapcaps redéfinit la touche majuscule, cette option n'a aucun effet.

Donc, vous devez absolument supprimer toutes les options et mettre celles que vous souhaitez; la façon dont les options existent, elles ne sont pas censées annuler l'action d'une précédente, et ayant des options conflictuelles (par exemple, deux (ou plus) qui affinent une même clé), vous ne pouvez pas définir leur ordre.

Pablo Saratxaga
la source