Layout 在XKB键盘布局中使用移位的功能键

Layout 在XKB键盘布局中使用移位的功能键,layout,unicode,keyboard,shift,keymapping,Layout,Unicode,Keyboard,Shift,Keymapping,我正在研究高棉键盘布局,在项目的最后一步遇到了一个问题 高棉语有33个辅音字符、24个元音变音字符和14个独立元音字符。除此之外,我在布局中的ALT和SHIFT-ALT级别都包含了每个字符对应的国际拼音字母符号,所以很快我就没有空间了 为了缓解这种情况,我计划将24个元音变音符号映射到F1-F12和SHIFT F1-F12(在ALT和SHIFT/ALT级别对应IPA字符),但SHIFT+FN、ALT+FN和SHIFT/ALT+FN组合不注册。我在不同的文本编辑器、浏览器和终端中尝试过这种组合,但

我正在研究高棉键盘布局,在项目的最后一步遇到了一个问题

高棉语有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  ] };
键{[0x10017b6,0x10017c2,voidsymbol,voidsymbol]};
键{[0x10017b7,0x10017c3,voidsymbol,voidsymbol]};
键{[0x10017b8,0x10017c4,voidsymbol,voidsymbol]};
键{[0x10017b9,0x10017c5,voidsymbol,voidsymbol]};
键{[0x10017ba,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017bb,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017bc,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017bd,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017be,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017bf,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017c0,voidsymbol,voidsymbol,voidsymbol]};
键{[0x10017c1,voidsymbol,voidsymbol,voidsymbol]};
正如你所看到的,到目前为止,我只填写了F1-F4班次,剩下的我会在这些键工作时或如果这些键工作的话再做


希望你们中的一些人能给我指出正确的方向。

我不知道为什么组合不注册,但作为一种替代解决方案,可以考虑使用每个键的更多级别,例如使用
level5
(通过包含一个符号定义将某个键映射到
level5
修改器)并使用八级类型定义键映射,例如
eight_level
eight_level_alphastic

我猜FN键的默认回退“类型”没有包含足够的键。例如,如果你有

key <FK01> { type = "TWO_LEVEL", [FirstKey,SecondKey,ThirdKey,...]}
在布局中包括“八级”和其他类似类型

/usr/share/X11/xkb/types/
中的文件应显示系统上可用的类型,以及需要添加到.xkb文件中的文件,并添加一个增广行以使用该类型。(它们可能在您的系统上的不同目录中,因为我在终端中使用Gentoo;键入
locate level5
,以查找目录所在的位置。)如果您觉得有必要,也可以在扩充行之后,将自己的类型直接构造到.xkb文件的xkb_types部分。查看
/usr/share/X11/xkb/types/
中的文件以查看类型定义的语法

您还需要将该行添加到xkb_兼容性部分,而不仅仅是xkb_类型部分;xkb_类型提供了类型,xkb_兼容性定义了修改器键的行为,因此,虽然xkb_类型中的
augment“level5”
将允许您访问像“EIGHT_LEVEL”这样的类型,但是xkb_兼容性中的
augment“level5”
将使绑定到ISO_level5_Shift的键实际上充当修改器

我自己的xkb_兼容性部分如下所示:

 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等,而不是在布局文件本身中

如果你想更深入一点,我可以推荐如下

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