我正在处理高棉键盘布局,而且在项目的最后一步遇到了问题。
高棉语有33个辅音字符,24个元音变音符号和另外14个独立元音字符。最重要的是,我在ALT和SHIFT-ALT级别的布局中包含了每个角色对应的国际音标字符符号,所以我很快就没空了。
为了缓解这一点,我计划将24个元音变音符号映射到F1-F12和SHIFT F1-F12(在ALT和SHIFT / ALT级别具有相应的IPA字符),但是SHIFT + FN,ALT + FN和SHIFT / ALT + FN组合未注册。我在不同的文本编辑器,浏览器和终端中尝试了这些组合但没有工作。这似乎是一个系统问题。
我正在运行Ubuntu 10.04。
以下是我的布局中与FN键有关的部分:
key <FK01> { [ 0x10017b6, 0x10017c2, voidsymbol, voidsymbol ] };
key <FK02> { [ 0x10017b7, 0x10017c3, voidsymbol, voidsymbol ] };
key <FK03> { [ 0x10017b8, 0x10017c4, voidsymbol, voidsymbol ] };
key <FK04> { [ 0x10017b9, 0x10017c5, voidsymbol, voidsymbol ] };
key <FK05> { [ 0x10017ba, voidsymbol, voidsymbol, voidsymbol ] };
key <FK06> { [ 0x10017bb, voidsymbol, voidsymbol, voidsymbol ] };
key <FK07> { [ 0x10017bc, voidsymbol, voidsymbol, voidsymbol ] };
key <FK08> { [ 0x10017bd, voidsymbol, voidsymbol, voidsymbol ] };
key <FK09> { [ 0x10017be, voidsymbol, voidsymbol, voidsymbol ] };
key <FK10> { [ 0x10017bf, voidsymbol, voidsymbol, voidsymbol ] };
key <FK11> { [ 0x10017c0, voidsymbol, voidsymbol, voidsymbol ] };
key <FK12> { [ 0x10017c1, voidsymbol, voidsymbol, voidsymbol ] };
正如你所看到的那样,到目前为止我只填写了SHIFT F1-F4,如果我让这些按键正常工作,我会做其余的工作。
希望你们中的一些人能指出我正确的方向。
答案 0 :(得分:2)
我不知道为什么这些组合没有注册,但作为替代解决方案,可能会想到每个密钥使用更多级别,例如使用level5
(通过包含其中一个符号定义)将某些键映射到level5
修饰符)并使用八级类型定义键映射,例如EIGHT_LEVEL
或EIGHT_LEVEL_ALPHABETIC
。
答案 1 :(得分:1)
我的猜测是默认的后退&#34;类型&#34;您的FN密钥不包括足够的密钥。例如,如果你有
key <FK01> { type = "TWO_LEVEL", [FirstKey,SecondKey,ThirdKey,...]}
然后只能生成FirstKey和SecondKey。如果你有
key <FK01> { type = "CTRL+ALT", [FirstKey,SecondKey,ThirdKey,...]}
然后应该识别alt和ctrl和ctrl + alt等级,给你5个等级,其中4个你可能想要改变(你可能不想改变ctrl等级)。请记住,您可能希望能够在紧急情况下使用CTRL + ALT + FN将X切换到终端,或者至少在布局中的某处将某些键绑定到XF86Switch_VT_1。
您可能还想区分Alt和AltGr,后者在xkb中命名为ISO_Level3_Shift。
如果要在键盘上的某个位置创建和使用ISO_Level5_Switch按钮,可以使用类型&#34; EIGHT_LEVEL&#34;或类似地识别(无修饰语),等级3和等级5的所有组合,总共8个等级。
(我将Alt_L绑定到我的左Alt按钮,ISO_Level3_Shift绑定到我的右Alt按钮,ISO_Level5_Shift绑定到我的右边&#34; windows&#34;按钮)
您的keymap可能需要从其他地方导入一些密钥类型。在.xkb文件的xkb_types部分中,添加行
augment "level5"
包括&#34; LEVEL_EIGHT&#34;和其他类似的类型到你的布局。
/usr/share/X11/xkb/types/
中的文件应显示系统中可用的类型,以及需要使用扩充行添加到.xkb文件中的文件以使用该类型。 (它们可能位于系统的不同目录中,因为我使用Gentoo;在终端中键入locate level5
以查找目录所在的位置。)如果您觉得有需要,还可以直接构建自己的类型在扩充行之后进入.xkb文件的xkb_types部分。查看/usr/share/X11/xkb/types/
中的文件以查看类型定义的语法。
您还希望将该行添加到xkb_compatibility部分,而不仅仅是xkb_types部分; xkb_types提供了类型,xkb_compatibility定义了修饰键的行为,因此xkb_types中的augment "level5"
将允许您访问类似&#34; EIGHT_LEVEL&#34;等类型,xkb_compatibility中的augment "level5"
将生成键绑定到ISO_Level5_Shift实际上充当修饰符。
为了给你一个想法,我自己的xkb_compatibility部分看起来像这样:
xkb_compatibility "complete" {
// "pc" would only set Alt, need "pc98" for NumLock
include "pc98" // Numlock
augment "misc" // Alt,Meta,Super,Hyper ...
augment "ledscroll(group_lock)" // Set scroll lock on group switch
augment "xfree86" // Switch out to terminal
augment "caps" // Simple caps thing
augment "iso9995" // level3,groups
augment "level5" // level5
};
我不确定所有.xkb文件是否包含这些部分,或者它是否只是我的。 IIRC,当您设置布局而不是布局文件本身时,通常会有一些GUI方式包含level3,level5和喜欢的内容,如果这更符合您的喜好。
如果你想更深入,我可以推荐像https://www.charvolant.org/doug/xkb/
这样的东西