как привязать 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
};

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.