Как снова включить ключ блокировки шапки?

12

В настоящее время я настраиваю раскладку клавиатуры по умолчанию следующим образом:

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

Он отключает клавишу caps lock и делает его дополнительной клавишей ctrl вместе с множеством других опций.

Я хотел бы сделать следующее для переключения раскладки клавиатуры:

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

Тем не менее, он не включает ключ блокировки заглавных букв; насколько я вижу, и левая клавиша управления, и фиксатор колпачков остаются клавишами управления.

Я знаю, что могу очистить весь список опций, но в интересах удобства обслуживания я бы предпочел не копировать все варианты. Как мне снова включить блокировку шапки?

Обновление: Глядя на нажатия клавиш с помощью xev (1), кажется, что ctrl: nocaps дает Control_Lдля обеих клавиш, а ctrl: swapcaps "восстанавливает" клавишу блокировки прописных букв (нажатие клавиши дает Caps_Lock). Тем не менее, светодиод заглушки не загорается и не работает.

Просмотр xkeyboard-config/symbols/ctrlфайла в источниках X.org намекает на проблему:

xkb_symbols "nocaps" {
    replace key <CAPS>  {  [ Control_L, Control_L ] };
    modifier_map  Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
    replace key <CAPS>  {  [ Control_L ] };
    replace key <LCTL>  {  [ Caps_Lock ] };
};

Последний вариант не имеет строки modifier_map, что бы это ни делало

hhaamu
источник
Я предполагаю, что все, кто пытался помочь мне, застряли на своих клавиатурах в dvorak = (
hhaamu
4
X настолько стар и сложен, что немногие люди действительно понимают различные внутренние механизмы. На странице руководства есть даже разделы, в которых говорится (и я цитирую): « Никто не хочет говорить, как это работает. Может быть, никто не знает ... ». Мне также интересно увидеть ответ на этот вопрос, но, возможно, это тот случай, когда никто не знает ...
jw013

Ответы:

14

Следующие команды должны работать:

xmodmap -e 'keycode 0x42 = Caps_Lock'

или

setxkbmap -option

Команды выше прекрасно работают для восстановления поведения по умолчанию, которое, к счастью, мне почти никогда не нужно.

Обычно я переназначаю колпачок на Control (к счастью, VI / VIM поддерживает CTRL-C вместо ESC) с помощью следующей команды:

setxkbmap -option ctrl:nocaps -layout gb
Alex
источник
«Setxkbmap -option» для очистки настроек - это именно то, что я искал. Я продолжал пытаться изменить свое поведение, но он продолжал добавлять конфликтующие элементы в список опций.
m0j0
2

Пытаться setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps

Из справочной страницы:

[...] If you want to
replace all previously specified options, use the -option  flag
with an empty argument first.

Ирония в том, что здесь на -option ctrl:swapcapsсамом деле преобладает -option ctrl:nocaps- я думаю, что поведение изменилось.

Редактировать: как указано в ОП, он хочет избежать очистки опций (как это было сделано выше).

/usr/share/X11/xkb/rules/xorg.lstпоказывает опцию ctrl:aa_ctrl(элемент управления слева внизу), которая, кажется, сбрасывает заглавные буквы после nocapsздесь.

Я думаю, стоит попробовать, и вы также можете посмотреть на list ( grep ctrl\:) и посмотреть, есть ли что-то еще, что может сработать, если это не сработает.

Если нет никакой возможности для этого, я думаю, что решение состоит в том, чтобы взломать текущую раскладку клавиатуры, снова связав Caps Lock с ключом Caps Lock (но у меня нет опыта в этом, кроме веры, что есть инструмент, который позволяет вам сделать что с одной строчкой).

njsg
источник
Это действительно очищает список опций, но я хотел бы сохранить опции, не связанные с заглавными буквами (как я уже говорил в вопросе), такие как составление ключей.
Хааму
Ой, прости, я неправильно понял вопрос. Я не могу быть уверен, что это сработает (как я уже говорил, на swapcapsсамом деле здесь снова активируется блокировка прописных букв), но /usr/share/X11/xkb/rules/xorg.lst, как я вижу, есть опция ctrl:aa_ctrl(элемент управления слева внизу), которая, похоже, сбрасывает блокировку прописных букв после nocapsэтого.
njsg
Я думаю, что волшебная программа есть, xmodmapно я не совсем уверен, как ее использовать
ххааму
0

есть опция "caps: capslock" (которая соответствует добавлению "+ capslock (capslock)" к xkb_symbols), которая включает capslock.

Тем не менее, эта опция (может быть, все заглавные буквы: ххххх?) Добавляется перед существующими ctrl: ххххх; так как ctrl: swapcaps переопределяет ключ capslock, эта опция не имеет никакого эффекта.

Таким образом, вам абсолютно необходимо удалить все параметры и на самом деле поставить те, которые вы хотите; Существуют варианты, они не должны отменять действие предыдущего, и, имея конфликтующие опции (например, две (или более), которые определяют один и тот же ключ), вы не можете определить их порядок.

Пабло Саратчага
источник