Пробел как ключ-модификатор XKB

7

Фон:

В конечном счете, я пытаюсь настроить собственную раскладку клавиатуры одной рукой, похожую на эту демонстрацию (клик one-handed typing demo).

XKB используется во многих дистрибутивах Linux. В Википедии есть приличное описание xkb.

В интерфейсах человек-компьютер расширение X-клавиатуры или XKB является частью системы X Window, которая расширяет возможности управления клавиатурой по сравнению с тем, что предлагается в базовом протоколе X Window System. Основными особенностями этого расширения являются:

К сожалению, для достижения этой функциональности я должен сделать пробел модификатором.

Вопрос:

Как бы вы установили клавишу пробела в качестве модификатора в программе XKB?

http://www.charvolant.org/~doug/xkb/html/node3.html

Похоже, что пространство не может быть модификатором по умолчанию.

Уильям
источник
Что в мире XKB? Такие вопросы требуют гораздо большего контекста ..., а не просто тега c .
Коди Грей
@CodyGray добавил некоторый дополнительный контекст и фон для xkb
Уильям

Ответы:

4

Я обнаружил, что Space2Ctrl - лучший инструмент для этого переназначения. Очень просто, не требует никакой настройки и работает как задумано, без лишних задержек. Я пробовал keydouble, но оно показало заметную задержку, прежде чем на экране было показано место

user220055
источник
3

Я думаю, у вас возникнут огромные трудности с получением «крана в космос»; удерживайте, чтобы изменить поведение.

Тем не менее, вы можете использовать xkbcomp :0.0для выгрузки текущей раскладки ключей с сервера в файл server-0_0.xkb, и я думаю, что я вижу простой способ заставить пробел функционировать как модификатор:

key <LALT> {         [           Alt_L,          Meta_L ] };
key <SPCE> {         [           space ] };
....
modifier_map Mod1 { <LALT> };
modifier_map Lock { <CAPS> };

Попробуйте заменить spaceна Mod5(или какой ключ модификатора имеет больше смысла), а затем добавьте новую modifier_mapстроку:

key <LALT> {         [           Alt_L,          Meta_L ] };
key <SPCE> {         [           Meta5 ] };
....
modifier_map Mod1 { <LALT> };
modifier_map Lock { <CAPS> };
modifier_map Meta5 { <SPCE> };

Это не проверено, но кажется правильным.

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

sarnold
источник
Спасибо за ответ, но это не похоже на работу.
Уильям
1

Подумайте об использовании keydouble . Это утилита пользовательского пространства, которая присоединяется к X и продолжает захватывать и обрабатывать события клавиатуры. Конфигурация по умолчанию, предоставленная в, examples/keydoublercделает именно то, что вы хотите - пробел становится ctrl. Если он не используется с другим ключом, то место освобождается при отпускании ключа.

Гедриус ​​Куделис
источник