Вимкніть функцію 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) також невстановлює стан шапки


1

Додайте ці рядки до ~/.Xmodmap:

clear lock
keycode 0x42 = Escape

Потім введіть команду:

xmodmap ~/.Xmodmap

Ваш Caps Lockключ тепер перевстановлений до Escключа.

Довідковий URL .


Також перегляньте цю чудову статтю про Mapping CapsLock to Escape в Ubuntu , яка, схоже, є користувачем unix.se :)


Дякую. У мене, здається, вже помінялися CapsLock та Esc. Однак, коли натискається клавіша Esc (що на клавіатурі має позначку CapsLock і знаходиться поруч з A), мені потрібно, щоб вона виконала і Escape, і 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.