У X11 (на консолі я не знаю) ви можете це зробити, переглянувши поведінку клавіші Escape. Я переглянув визначення "shift (break_caps)", щоб побачити, як воно працює, і адаптував його.
Подивіться на цю відповідь на xkb, щоб отримати докладнішу інформацію про те, як / де розмістити локально модифіковані файли та завантажити їх.
А для виконання того, що ви хочете, вам знадобиться у файлі локальних символів (наприклад:) ~/.xkb/symbols/mysymbols
такий розділ:
partial modifier_keys
xkb_symbols "esc_breaks_caps" {
key <ESC> {
type = "ALPHABETIC",
actions [Group1] = [
SetMods(modifiers=none),
SetMods(modifiers=Lock,clearLocks)
]
};
};
а в локальному файлі ключових карт (наприклад:; ~/.xkb/keymap/mykbd
ви можете створити його setxkbmap -print > ~/.xkb/keymap/mykbd
) змінити xkb_symbols
рядок, який потрібно додати +mysymbols(esc_breaks_caps)
.
Тепер ви можете завантажити його: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
натискання Escвидалить стан CapsLock (насправді ефект відбувається при випуску Esc; я думаю, що тільки клавіші модифікаторів мають негайну дію; інші ефект - після їх випуску.)
О, якщо ви також бажаєте поміняти клавіші Escape і CapsLock; потім використовуйте це замість цього (і ви поміщаєте "+ mysymbols (esc_swap_and_breaks_caps)" у свій файл 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 ] };
};
зауважте, що фізичні клавіші є <CAPS>
і <ESC>
; <CAPS>
(клавіша вигравірована CapsLockна вашій клавіатурі) відправити Escape і <ESC>
(ключ гравірований Esc) надсилає CapsLock, а той <CAPS>
(відправлення Escape) також невстановлює стан шапки
vim
або повного робочого столу?