Отключить Caps Lock при нажатии Escape


10

Есть ли способ отключить CapsLockпри каждом Escнажатии. Да, я использую VIM! На самом деле у меня есть альтернативная раскладка клавиатуры с заглавными буквами, Ctrl-6но я считаю ее громоздкой и предпочитаю просто отключать CapsLock в ОС при каждом Escнажатии. Кроме того, я часто использую SSH на других серверах в течение нескольких часов, так что я нахожусь на стоковой VIM.

Обратите внимание , что я случайно уже обменивали CapsLockи Escключи. Тем не менее, когда Escклавиша нажата (которая помечена CapsLockна клавиатуре и рядом с ней A), мне нужно, чтобы она выполняла и то, Escapeи другое Disable-CapsLock-If-It-Is-Enabled.

Это на Kubuntu 12.10. Спасибо.


Вам нужно добавить эту функциональность только для vimполного рабочего стола?
MTK

Я хотел бы, чтобы это была функция рабочего стола.
dotancohen

Ответы:


5

В 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


1

Добавьте эти строки в ~/.Xmodmap:

clear lock
keycode 0x42 = Escape

Затем введите команду:

xmodmap ~/.Xmodmap

Ваш Caps Lockключ теперь переназначен на Escключ.

Ссылочный URL .


Также ознакомьтесь с этой замечательной статьей о преобразовании CapsLock в Escape в Ubuntu , который, похоже, является пользователем unix.se :)


Спасибо. Я случайно уже поменял CapsLock и Esc. Тем не менее, когда клавиша нажата Esc (что случается быть помечены CapsLock на клавиатуре и находится рядом с A), мне это нужно выполнить как побег и Disable-CapsLock-If-It-Is-Enabled. Я отредактирую вопрос, чтобы уточнить. Спасибо.
dotancohen

Я думал, что вам нужно наоборот. Несколько запутался здесь. Что происходит при нажатии Escи Capslocksпосле этих изменений?
MTK

В настоящее время: при нажатии ESCклавиши CapsLockфункция переключается, а при нажатии CapsLockклавиши ESCотправляется команда (т. ESCЕ. Ключ переназначается CapsLockи CapsLockключ переопределяется ESC). Моя цель с этим вопросом , чтобы нажав CapsLockклавишу выполнения как на ESCфункцию (которая в настоящее время он делает) и выключить CapsLockфункцию , если и только если CapsLockфункция включена (т.е. не переключать CapsLockфункции, а отключить его , если CapsLockвключен).
dotancohen

1

Я не уверен, отвечает ли это на ваш вопрос, но для сопоставления Escфункции с CapsLockключом вы можете использовать это:

setxkbmap -option "caps:escape"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.