如何将 AltGr 绑定到 <Ctrl> + <Alt>

Sha*_*jun 12 xorg xkb keyboard-layout

我正在尝试创建一个相当于人体工学泰卢固语键盘布局的 linux,称为 Sarala(Hard la)。到目前为止,我已经能够映射所有的键。布局对各个级别使用以下组合键。

None (Base): Level1
Shift: Level2
Ctrl + Alt: Level3
Ctrl + Alt + Shift:Level4
Run Code Online (Sandbox Code Playgroud)

linux 在各个级别使用以下内容。

None (Base): Level1
Shift: Level2
RAlt: Level3
RAlt + Shift:Level4
Run Code Online (Sandbox Code Playgroud)

为了能够将组合键与我的布局相匹配,我必须AltGr使用Ctrl+进行映射Alt。我在/usr/share/X11/xkb/. 有没有人知道我如何ISO_Level3_ShiftCtrl+绑定Alt

key <RALT>  {
    symbols[Group1]= [ Mode_switch, Multi_key  ],
    virtualMods= AltGr
};
Run Code Online (Sandbox Code Playgroud)

如果你想看看布局,它在这里

Wil*_*tch 8

您需要定义一个新的 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";
};
Run Code Online (Sandbox Code Playgroud)

然后在您的符号文件中,您可以将该类型设置为默认类型,或者在每个键的基础上设置它是什么类型。请注意,您需要类型位于 types 目录中的文件中,以及符号目录中文件中的键定义——xkb 使用严格的文件系统层次结构来查找每个组件。

我自己对键盘布局进行了大量黑客攻击以构建我的自定义布局(https://github.com/willghatch/hatchak),它经历了各种迭代,我尝试过奇怪的事情。XKB 有时可能非常挑剔和奇怪,但它仍然是迄今为止我见过的最可配置的键盘系统。如果您遇到更多麻烦,最好的参考是:

[编辑:原始链接目前已关闭,但幸好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/

当心——虽然这是我找到的最好的文档,但它留下了很多模糊的边缘情况。祝你好运。


小智 -2

从我看来,您需要一个支持 AltGr 的键盘布局,因此您只需在配置菜单中的“键盘 > 快捷键 > 替代字符键”中更改热键即可。通常,您可以通过更改为“有死键”或写为“AltGr 死键”的布局来看到它