Schalten Sie die Feststelltaste aus, wenn Escape gedrückt wird

10

Gibt es eine Möglichkeit zum Deaktivieren, CapsLockwenn Escgedrückt wird. Ja, ich benutze VIM! Ich habe tatsächlich ein alternatives All-Caps-Tastaturlayout Ctrl-6aktiviert, finde es jedoch umständlich und möchte lieber, dass das Betriebssystem CapsLock deaktiviert, wenn Esces gedrückt wird. Außerdem habe ich oft ein paar Stunden lang SSH auf anderen Servern, sodass ich dort auf einem Standard-VIM bin.

Beachten Sie, dass ich die Tasten CapsLockund bereits bereits getauscht habe Esc. Wenn jedoch die EscTaste gedrückt wird (die zufällig CapsLockauf der Tastatur beschriftet ist und sich daneben befindet A), muss sie sowohl Escapeals auch ausgeführt werden Disable-CapsLock-If-It-Is-Enabled.

Dies ist auf Kubuntu 12.10. Vielen Dank.

dotancohen
quelle
Sie müssen diese Funktionalität nur für vimoder den gesamten Desktop hinzufügen ?
MTK
Ich möchte, dass es eine Desktop-Funktion ist.
Dotancohen

Antworten:

5

In X11 (auf der Konsole weiß ich nicht) können Sie dies tun, indem Sie das Verhalten der Escape-Taste neu definieren. Ich habe mir die Definition "shift (break_caps)" angesehen, um zu sehen, wie es funktioniert, und sie angepasst.

In dieser Antwort auf xkb finden Sie weitere Informationen dazu, wie / wo die lokal geänderten Dateien abgelegt und geladen werden sollen.

Und um das zu tun, was Sie wollen, benötigen Sie in der lokalen Symboldatei (z. B. :) ~/.xkb/symbols/mysymbolseinen Abschnitt wie diesen:

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

und in der lokalen Keymap-Datei (zB : ~/.xkb/keymap/mykbd; Sie können sie mit erstellen setxkbmap -print > ~/.xkb/keymap/mykbd) ändern Sie die xkb_symbolshinzuzufügende Zeile +mysymbols(esc_breaks_caps).

Sie können es jetzt laden mit: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY und durch Drücken Escwird der CapsLock-Status entfernt (tatsächlich tritt der Effekt bei der Freigabe von Esc auf; ich denke, dass nur Modifikatortasten unmittelbare Wirkung haben; andere haben den Effekt nach ihrer Freigabe.)

Oh, wenn Sie auch die Escape- und CapsLock-Tasten tauschen möchten; Verwenden Sie dies stattdessen (und Sie fügen "+ mysymbols (esc_swap_and_breaks_caps)" in Ihre mykbd-Datei ein):

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 ] };
};

Beachten Sie, dass die physischen Schlüssel <CAPS>und sind <ESC>. <CAPS>(Taste CapsLockin Ihre Tastatur <ESC>eingraviert Esc) Escape senden und (Taste eingraviert ) CapsLock senden, wobei <CAPS>(Escape senden) auch der Capslock-Status deaktiviert wird

Pablo Saratxaga
quelle
1

Fügen Sie diese Zeilen hinzu zu ~/.Xmodmap:

clear lock
keycode 0x42 = Escape

Geben Sie dann den folgenden Befehl ein:

xmodmap ~/.Xmodmap

Ihr Caps LockSchlüssel wird jetzt dem EscSchlüssel neu zugeordnet.

Referenz-URL .


Gehen auch durch diesen schönen Artikel über Mapping CapsLock in Ubuntu zu entkommen , die ein unix.se Benutzer zu sein scheint :)

mtk
quelle
Vielen Dank. Ich habe CapsLock und Esc bereits getauscht. Wenn jedoch die Esc-Taste gedrückt wird (die auf der Tastatur mit CapsLock gekennzeichnet ist und sich neben A befindet), muss sie sowohl Escape als auch Disable-CapsLock-If-It-Is-Enabled ausführen . Ich werde die Frage bearbeiten, um sie zu klären. Vielen Dank.
Dotancohen
Ich dachte du brauchst das Gegenteil. Hier etwas verwirrt. Was passiert beim Drücken Escund Capslocksnach diesen Änderungen?
MTK
Derzeit: Beim Drücken der ESCTaste wird die CapsLockFunktion umgeschaltet, und beim Drücken der CapsLockTaste wird der ESCBefehl gesendet (dh die ESCTaste wird neu zugeordnet CapsLockund die CapsLockTaste wird neu zugeordnet ESC). Mein Ziel bei dieser Frage ist es, dass durch Drücken der CapsLockTaste sowohl die ESCFunktion (die derzeit ausgeführt wird) ausgeführt wird als auch die CapsLockFunktion ausgeschaltet wird, wenn die CapsLockFunktion aktiviert ist (dh die CapsLockFunktion nicht umschaltet , sondern deaktiviert, wenn sie CapsLockaktiviert ist).
Dotancohen
1

Ich bin nicht sicher, ob dies Ihre Frage beantwortet, aber um die EscFunktion der CapsLockTaste zuzuordnen , können Sie Folgendes verwenden:

setxkbmap -option "caps:escape"

quelle