В 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) также отменяет состояние capslock
vim
полного рабочего стола?