如何将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_ShiftCtrl+ 绑定Alt

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

如果您想看一下布局,就在这里



2
谢谢,这非常有用,但是它讨论了除xkb配置之外的所有其他内容。
ShaggyInjun 2014年

您可以从arch linux Wiki 浏览此Wiki,并查看有关Alt和Altgr(第3级)的部分。我不确定这是否对您有帮助,但是似乎有很多关于XKB的信息
No Time

我已经尝试过,xkb无法加载,并没有一个描述性的错误。我没有这个方便的错误,但是以后可以附加它。
ShaggyInjun 2014年

Answers:


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";
};

然后,可以在符号文件中将该类型设置为默认类型,或基于每个键设置其类型。请注意,您需要将类型存储在类型目录中的文件中,并将密钥定义存储在symbols目录中的文件中-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/

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


我认为您的想法确实有用,但是正如您提到的那样,我真的很难在符号文件中使用创建的类型作为默认值。我计算机上的符号文件很长,看不到任何类似于默认类型定义的行。
戴夫

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 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.