![如何将 AltGr 绑定到+](https://linux22.com/image/55774/%E5%A6%82%E4%BD%95%E5%B0%86%20AltGr%20%E7%BB%91%E5%AE%9A%E5%88%B0%2B.png)
我正在尝试创建一个相当于人体工学泰卢固语键盘布局的 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
绑定?CtrlAlt
key <RALT> {
symbols[Group1]= [ Mode_switch, Multi_key ],
virtualMods= AltGr
};
如果你想看一下布局,那就是这里
答案1
您需要定义一个新的 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";
};
然后在符号文件中,您可以将该类型设置为默认类型,或者基于每个键设置它的类型。请注意,您需要类型位于 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 死键”的布局来看到它