Désactivez le verrouillage des majuscules lorsque vous appuyez sur Échap

10

Existe-t-il un moyen de désactiver CapsLockchaque fois que vous Escappuyez sur. Oui, j'utilise VIM! J'ai en fait une disposition de clavier alternative tout en majuscules, Ctrl-6mais je la trouve lourde et je préférerais simplement que le système d'exploitation désactive CapsLock chaque fois que vous Escappuyez sur. De plus, je me connecte souvent à d'autres serveurs pendant quelques heures, je suis donc sur un stock VIM là-bas.

Notez que j'ai déjà échangé les clés CapsLocket Esc. Cependant, lorsque la Esctouche est enfoncée (qui se trouve être étiquetée CapsLocksur le clavier et à côté A), j'en ai besoin pour exécuter les deux Escapeet Disable-CapsLock-If-It-Is-Enabled.

C'est sur Kubuntu 12.10. Merci.

dotancohen
la source
Vous devez ajouter cette fonctionnalité uniquement pour vim, ou le bureau complet?
mtk
Je voudrais que ce soit une fonctionnalité de bureau.
dotancohen

Réponses:

5

Dans X11 (sur la console, je ne sais pas), vous pouvez le faire en redéfinissant le comportement de la touche Échap. J'ai regardé la définition de "shift (break_caps)" pour voir comment cela fonctionne et je l'ai adaptée.

Regardez cette réponse sur xkb pour plus de détails sur comment / où placer les fichiers modifiés localement et les charger.

Et pour faire ce que vous voulez, vous avez besoin dans le fichier de symboles locaux (par exemple:) d' ~/.xkb/symbols/mysymbolsune section comme celle-ci:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

et dans le fichier keymap local (par exemple:; ~/.xkb/keymap/mykbdvous pouvez le créer avec setxkbmap -print > ~/.xkb/keymap/mykbd) changez la xkb_symbolsligne à ajouter +mysymbols(esc_breaks_caps).

Vous pouvez maintenant le charger avec: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY et appuyer sur Escsupprimera l'état CapsLock (en fait, l'effet se produit sur la sortie de Esc; je pense que seules les touches de modification ont un effet immédiat; pour d'autres, l'effet est après leur libération.)

Oh, si vous voulez également échanger les touches Escape et CapsLock; puis utilisez-le à la place (et vous mettez "+ mysymbols (esc_swap_and_breaks_caps)" dans votre fichier mykbd):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

notez que les clés physiques sont <CAPS>et <ESC>; <CAPS>(clé gravée CapsLockdans votre clavier) envoyer Escape et <ESC>(clé gravée Esc) envoie CapsLock, avec <CAPS>(envoi Escape) également désactivant l'état de verrouillage des majuscules

Pablo Saratxaga
la source
1

Ajoutez ces lignes à ~/.Xmodmap:

clear lock
keycode 0x42 = Escape

Tapez ensuite la commande:

xmodmap ~/.Xmodmap

Votre Caps Lockclé est maintenant remappée à la Escclé.

URL de référence .


Consultez également ce bel article sur le mappage de CapsLock à Escape dans Ubuntu , qui semble être un utilisateur unix.se :)

mtk
la source
Je vous remercie. Il se trouve que j'ai déjà échangé CapsLock et Esc. Cependant, lorsque la touche Esc est enfoncée (qui se trouve être étiquetée CapsLock sur le clavier et se trouve à côté de A), j'en ai besoin pour exécuter à la fois Escape et Disable-CapsLock-If-It-Is-Enabled. Je vais modifier la question pour clarifier. Merci.
dotancohen
Je pensais que tu avais besoin de l'inverse. Un peu confus ici. Que se passe-t-il en appuyant Escet Capslocksaprès ces changements?
mtk
Actuellement: lorsque vous appuyez sur la ESCtouche, la CapsLockfonction bascule et lorsque vous appuyez sur la CapsLocktouche, la ESCcommande est envoyée (c'est-à-dire que la ESCclé est remappée CapsLocket la CapsLockclé est remappée ESC). Mon objectif avec cette question est d'avoir appuyé sur la CapsLocktouche pour exécuter à la fois la ESCfonction (ce qu'elle fait actuellement) et désactiver la CapsLockfonction si et seulement si la CapsLockfonction est activée (c'est-à-dire ne pas basculer la CapsLockfonction, mais la désactiver plutôt si elle CapsLockest activée).
dotancohen
1

Je ne sais pas si cela répond à votre question, mais pour mapper la Escfonction à la CapsLockclé, vous pouvez utiliser ceci:

setxkbmap -option "caps:escape"

la source