как привязать AltGr к <Ctrl> + <Alt>

11

Я пытаюсь создать linux-эквивалент эргономичной раскладки телугу под названием Sarala (Hard la). Я был в состоянии сопоставить все ключи до сих пор. Макет использует следующие комбинации клавиш для различных уровней.

None (Base): Level1
Shift: Level2
Ctrl + Alt: Level3
Ctrl + Alt + Shift:Level4

Где, как Linux использует следующее для различных уровней.

None (Base): Level1
Shift: Level2
RAlt: Level3
RAlt + Shift:Level4

Чтобы иметь возможность сопоставить сочетания клавиш с моим макетом, мне нужно сопоставить AltGrс Ctrl+ Alt. Я безуспешно искал различные файлы в /usr/share/X11/xkb/. Кто-нибудь знает, как я могу связать ISO_Level3_Shiftс Ctrl+ Alt?

key <RALT>  {
    symbols[Group1]= [ Mode_switch, Multi_key  ],
    virtualMods= AltGr
};

Если вы хотите посмотреть на макет, он здесь

ShaggyInjun
источник
2
посмотрите здесь askubuntu.com/questions/254424/…
αғsнιη
2
Спасибо, это очень информативно, но говорит обо всем остальном, кроме xkbконфигурации.
ShaggyInjun
Вы можете просмотреть эту вики из вики arch linux и проверить часть про Alt и Altgr (Уровень 3). Я не уверен, поможет ли это вам, но, похоже, в нем много информации о XKB
нет времени,
Я пробовал это, xkb не удается загрузить с не очень описательной ошибкой. У меня нет ошибки, но я могу прикрепить ее позже.
ShaggyInjun

Ответы:

6

Вам нужно определить новый тип xkb. Вы можете увидеть примеры в вашем каталоге xkb / types (обычно /usr/share/X11/xkb/types). Там вы можете определить произвольные комбинации модификаторов, чтобы получить разные уровни смещения. Для вашей проблемы вы можете использовать что-то вроде этого:

type "C_A_to_L3" {
    modifiers = Control+Alt+Shift;
    map[None] = Level1;
    map[Shift] = Level2;
    map[Control+Alt] = Level3;
    map[Control+Alt+Shift] = Level4;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
};

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

Я сам немного взломал раскладки клавиатуры, чтобы создать свою собственную раскладку ( https://github.com/willghatch/hatchak ), которая прошла через различные итерации, где я экспериментировал со странными вещами. Иногда XKB может быть довольно странным и странным, но это все еще самая настраиваемая клавиатурная система, которую я когда-либо видел. Лучшие ссылки, если у вас есть больше проблем:

[edit: оригинальные ссылки в настоящее время не работают, но к счастью, archive.org существует]

https://web.archive.org/web/20150722164820/http://www.charvolant.org/~doug/xkb/html/index.html

а также

https://web.archive.org/web/20190419170426/http://pascal.tsu.ru/en/xkb/

Остерегайтесь - хотя это лучшая документация, которую я нашел, она оставляет множество темных крайних случаев. Удачи.

Уильям Хэтч
источник
Я думаю, что ваша идея действительно полезна, но я действительно изо всех сил пытаюсь использовать созданный тип в файлах символов по умолчанию, как вы упомянули. Файлы символов, которые у меня есть на моем компьютере, довольно длинные, и я не вижу ни одной строки, которая выглядит как определение типа по умолчанию.
Дэйв
1
Вы можете определить по умолчанию для раздела в файле символов, установив key.type. Вероятно, вы можете увидеть пример в /usr/share/X11/xkb/symbols/srvr_ctrl(или где-то в этом роде), в разделе «no_srvr_keys». Вот что у меня есть: xkb_symbols "no_srvr_keys" {key.type = "TWO_LEVEL"; клавиша <FK01> {[F1, F1]}; ключ <FK02> {[F2, F2]}; <etc ...>};
Уильям Хэтч
Спасибо за быстрый ответ. Я думаю, что смогу применить это. Заранее большое спасибо.
Дейв
Так же, как обратная связь для всех тех, кто заходит на эту страницу назад, даже спустя много времени. Для меня этот подход теперь работает с недавно установленной Fedora. По какой-то (для меня) неизвестной причине он не работал с Mint, когда я написал этот комментарий выше. Но теперь это работает и экономит мне много времени.
Дэйв
-1

Из того, что мне кажется, вам нужна раскладка клавиатуры, которая поддерживает AltGr, поэтому вы можете просто изменить горячую клавишу на «клавиатура> сочетания клавиш> клавиша альтернативных символов» в меню конфигурации. Обычно вы можете увидеть это, изменив раскладку, в которой «есть мертвые ключи» или написано «AltGr мертвые ключи»


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