Comment faire de la touche de verrouillage des majuscules une troisième touche Maj?

19

Comment faire fonctionner la touche de verrouillage des majuscules comme une autre touche Maj?

Il y a beaucoup de questions ici sur la réaffectation ou le lancement d'une commande personnalisée. Je veux juste que cela fonctionne comme une autre touche Maj. Je ne veux pas que d'autres touches changent ce qu'elles font, juste celle-là.

Disposition du clavier / Le comportement des touches de verrouillage des majuscules ne le fera pas, je ne comprends pas comment le remapper dans CCSM.

J'utilise un clavier britannique maintenant mais j'ai appris à taper sur un clavier américain, la plus petite touche Maj gauche est DRIVING ME NUTS.

Tom Brossman
la source
1
@ David-yourfriend OP a spécifiquement dit que xmodmapcela ne fonctionne pas.
TheWanderer
1
Dans xkb, cela semble avoir quelque chose à voir avec les cartes de compatibilité qui traduisent certaines combinaisons de touches en actions, plutôt qu'en symboles. Cela prendra plus de temps de recherche et de test que je n'en ai actuellement. Si j'en ai l'occasion, je creuserai davantage, sinon peut-être que cette mie de pain mènera quelqu'un d'autre dans la bonne direction.
Elder Geek

Réponses:

14

Étendre la réponse @ Zacharee1:

faire une sauvegarde avec cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

puis éditez avec gksu gedit /usr/share/X11/xkb/symbols/pcou votre éditeur préféré.

Trouvez la ligne (22) qui dit:

key <CAPS> { [ Caps_Lock ] };

et changez-le en

key <CAPS> { [ Shift_L ] };

et la ligne (36) qui dit:

modifier_map Lock { Caps_Lock };

et changez-le en

//modifier_map Lock { Caps_Lock }; (ce qui devrait le commenter en désactivant le verrouillage)

Les tests indiquent que le Num Lockfonctionne toujours comme prévu. Des tests supplémentaires indiquent que les voyants du clavier semblent être un peu dyslexiques en 16.04, même sur un système non modifié. Indicateur de verrouillage du défilement allumé à la connexion mais verrouillage du défilement désactivé et verrouillage du verrouillage numérique éteints, mais verrouillage numérique activé. Appuyer sur la Ctrltouche gauche semble résoudre ce problème et je ne sais pas si cela est lié à mon utilisation d'un commutateur KVM (ce qui est possible)

Remarque: Des tests supplémentaires montrent que le voyant NumLock est feuilleté même sans commutateur KVM et doit être tapoté deux fois pour revenir en synchronisation avec NumLock Si vous le laissez toujours allumé, vous pouvez ignorer la lumière ou s'il vous dérange, vous pouvez le toucher deux fois pour le synchroniser. Pourquoi cela se produit est probablement une base pour une nouvelle question ...

Une autre solution simple à votre problème d'origine serait d'obtenir simplement un clavier américain peu coûteux et d'utiliser la cartographie du clavier américain.

Sources: @ Zacharee1 réponse et analyse /usr/share/X11/xkb/symbols/pcet essais et essais d'erreurs

Elder Geek
la source
Vous avez donc dû désactiver cette ligne 36? Le Shift_Lsimple fait de passer à était suffisant pour désactiver complètement le verrouillage des majuscules pour moi.
TheWanderer du
@ Zacharee1 J'ai pensé que cela pourrait être la cause de l'impact sur Numlock que Tom Brossman a mentionné dans un commentaire sur votre message et que je l'ai retiré pour cette seule raison.
Elder Geek
Hmm. Ça pourrait être ça. Je vois si je peux faire tester Zanna avec une machine virtuelle, car elle a une carte britannique.
TheWanderer du
@ Zacharee1 Ce serait cool car je n'ai pas ce matériel disponible pour les tests et je me fie souvent à la logique dans les cas où des tests complets ne sont pas possibles.
Elder Geek
Cela l'a finalement fait, testé et fonctionnel (pour l'instant du moins). Il est étrange que le voyant Verr Num de mon clavier soit éteint, mais les touches numériques supplémentaires sont activées par défaut lorsque je me connecte et c'est ce que je recherchais. Merci!
Tom Brossman
10

Vous pouvez y arriver en adaptant Comment changer la clé CapsLock pour produire «a»? (par exemple).

Supprimez le Lockmodificateur (= Verr Maj) de la Caps Lockclé et déclarez que cette clé envoie le Shift_Lsymbole de clé .

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

Vous pouvez également supprimer le Lockmodificateur et ajouter le Shiftmodificateur.

remove Lock = Caps_Lock
add Shift = Caps_Lock

Quoi qu'il en soit, ces lignes vont dans le fichier ~/.Xmodmap. Testez en le chargeant avec xmodmap ~/.Xmodmap; le fichier est lu automatiquement lorsque vous vous connectez sous l'environnement par défaut (ou du moins c'était dans les jours Gnome).

Gilles 'SO- arrête d'être méchant'
la source
2
Parfait, ça a marché. J'ai créé un nouveau document vide dans mon répertoire personnel appelé '.Xmodmap', et y ai collé votre premier exemple. Ensuite, j'ai tapé 'xmodmap ~ / .Xmodmap' dans le terminal pour qu'il prenne effet immédiatement. Ces deux éléments sont expliqués dans la réponse liée. Je vous remercie.
Tom Brossman
Le deuxième ensemble de commandes ne fonctionne pas pour moi, mais le premier fonctionne très bien. Appuyer sur Caps Lock n'allume même pas la lumière du clavier, donc il ne déclenche même pas mon TOC latent.
Waldir Leoncio
Bonne réponse, Gilles! Juste pour ajouter à votre réponse, cela peut aussi être fait en une seule commande: xmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" et annulé avec setxkbmap -option , qui n'écrit pas dans le ~/.Xmodmapfichier, mais peut être utilisé si nécessaire et ajouté aux applications de démarrage. Très bonne réponse!
Sergiy Kolodyazhnyy
7

Ignorant mes précédentes tentatives de réponse qui ont échoué, j'ai trouvé quelque chose qui transforme complètement le verrouillage des majuscules en décalage à gauche. Pas de basculement, je pense que c'est persistant, et c'est assez simple.

Tout d'abord, je vous recommande de faire une sauvegarde, avant de vous expliquer comment la modifier.

Courir sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Maintenant qu'il y a une sauvegarde, passons à l'édition.

Utilisez votre éditeur de texte préféré pour éditer ce fichier en tant que root:

/usr/share/X11/xkb/symbols/pc

Trouvez le segment qui ressemble à ceci (il est près du haut, ligne 22 pour moi):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

Éditer

key <CAPS>  {   [ Caps_lock             ]   };

être

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

au lieu. (L' Caps_Lockaprès Shift_L,peut être inutile.)

Redémarrez votre gestionnaire d'affichage (généralement sudo service lightdm restart) et le verrouillage des majuscules sera désormais déplacé vers la gauche. ( Remarque: ma machine de test utilise GNOME, j'ai donc dû redémarrer gdm. Cependant, cela a provoqué un scintillement étrange dans le TTY de secours, et gdmn'a jamais redémarré. J'ai dû redémarrer complètement.)

Celui-ci, j'ai pu le tester et je peux confirmer qu'il fonctionne.

Adapté de xmodmap permanent dans Ubuntu 13.04

Le vagabond
la source
Merci, mais cela interfère avec Num Lock que je laisse en permanence. Lors de mon premier dépannage, la modification de Caps_lock> Shift_L a /usr/share/X11/xkb/symbols/capslockégalement interféré avec Num Lock. Il y a quelque chose de différent à propos de 16.04, par exemple le voyant Num Lock restait allumé au démarrage mais maintenant il s'éteint lors de la connexion LightDM. Lorsque je teste votre solution, il change le verrouillage des majuscules en Maj, mais la première fois que j'appuie sur le verrouillage des majuscules, le verrouillage numérique est désactivé et je dois appuyer sur le verrouillage numérique DEUX FOIS pour le réactiver (uniquement la première fois). Bizarre. Mais apprécions vraiment l'aide jusqu'à présent.
Tom Brossman du
Peut-être ai-je besoin de poser une nouvelle question "Comment éviter les interférences de remappage du verrouillage des majuscules avec le verrouillage numérique du 16.04?" mais j'aimerais trouver la cause profonde ici. Soit ça, soit il est temps d'ouvrir le clavier et d'y apporter des modifications physiques ...
Tom Brossman
C'est bizarre. Numlock fonctionne-t-il à nouveau si vous exécutez xkbset nullify lock?
TheWanderer
@TomBrossman Je ne sais pas si cela change quelque chose pour vous, mais cela fonctionne pour moi. Au lieu de simplement Shift_L, insérez Shift_L, Caps_Lock. Assurez-vous que les supports sont alignés.
TheWanderer
1
@TomBrossman J'aime utiliser sudo si ce n'est pas dangereux, juste pour être sûr: p. Lorsque j'ai édité le fichier, le L pour shift était majuscule, tout comme le verrouillage des majuscules. Bizarre. La chose NumLock est également bizarre, car cela fonctionne bien pour moi. Tout cela est bizarre: p
TheWanderer
3

Pour 14.04

Un one-liner:

xmodmap -e 'keycode 66=Shift_L'

MAIS , dans le cas inattendu, ce 66n'est pas le bon code, exécutez d'abord xevdans la console et appuyez sur CapsLock. Ensuite, vous verrez quelque chose comme:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Le code de touche correct est celui indiqué dans le XX.

Elder Geek
la source
1
Regardez le message de primes: Xmodmap trick no longer works and xkb handles this now..
TheWanderer
Oh mon! est-ce à cause du 16.04? Cela fonctionne sur mon 14.04. Le commentaire sur la prime ne semble pas préciser.
Je n'ai pas fait de prime donc je ne sais pas vraiment.
TheWanderer
Désolé, c'est pour une nouvelle installation 16.04. La touche Maj gauche ou droite serait bien, j'ai choisi gauche pour la question car elle est adjacente et les xevvoit comme des touches différentes.
Tom Brossman