No X11 (no console eu não sei), você pode fazer isso redefinindo o comportamento da tecla Escape. Eu olhei para a definição "shift (break_caps)" para ver como ele funciona e a adaptei.
Veja esta resposta no xkb para obter mais detalhes sobre como / onde colocar os arquivos modificados localmente e carregá-los.
E para fazer o que você deseja, você precisa no arquivo de símbolos locais (por exemplo ~/.xkb/symbols/mysymbols
:) uma seção como esta:
partial modifier_keys
xkb_symbols "esc_breaks_caps" {
key <ESC> {
type = "ALPHABETIC",
actions [Group1] = [
SetMods(modifiers=none),
SetMods(modifiers=Lock,clearLocks)
]
};
};
e no arquivo de mapa de teclas local (por exemplo:; ~/.xkb/keymap/mykbd
você pode criá-lo com setxkbmap -print > ~/.xkb/keymap/mykbd
) altere a xkb_symbols
linha a ser adicionada +mysymbols(esc_breaks_caps)
.
Agora você pode carregá-lo com: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
e pressionar Escirá remover o estado CapsLock (na verdade, o efeito acontece no lançamento do Esc; acho que apenas as teclas modificadoras têm efeito imediato; outras, o efeito é após o lançamento.)
Ah, se você também quiser trocar as teclas Escape e CapsLock; então use isso (e você coloca "+ mysymbols (esc_swap_and_breaks_caps)" no seu arquivo 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 ] };
};
observe que as chaves físicas são <CAPS>
e <ESC>
; <CAPS>
(tecla gravada CapsLockno teclado) envia Escape e <ESC>
(tecla gravada Esc) envia CapsLock, com <CAPS>
(enviando Escape) também desabilitando o estado do capslock
vim
ou a área de trabalho completa?