如何将撰写字符添加到 xkb 键盘布局

如何将撰写字符添加到 xkb 键盘布局

我成功创建了一个自定义乌克兰语 ISO 9 布局(通过编辑/usr/share/X11/xkb/symbols/ua和其他几个文件),它可以工作,但它缺少一个字母,即G with a grave“G̀”(表示“元”),这在 Unicode 中是不存在的

partial alphanumeric_keys
xkb_symbols "latynka" {

    include "ua(winkeys)"
    name[Group1]= "Ukrainian (Latynka ISO 9)";

    key <TLDE> { [      apostrophe,      asciitilde  ,    dead_acute ] };
    key <AE01> { [               1,         exclam   ] };
    key <AE02> { [               2,        quotedbl  ] };
    key <AE03> { [               3,      numbersign  ] };
    key <AE04> { [               4,        asterisk  ] };
    key <AE05> { [               5,           colon  ] };
    key <AE06> { [               6,           comma  ] };
    key <AE07> { [               7,          period  ] };
    key <AE08> { [               8,       semicolon  ] };
    key <AE09> { [               9,       parenleft  ] };
    key <AE10> { [               0,      parenright  ] };
    key <AE11> { [           minus,      underscore  ] };
    key <AE12> { [           equal,            plus  ] };

    key <AD01> { [               j,               J  ] };
    key <AD02> { [               c,               C  ] };
    key <AD03> { [               u,               U  ] };
    key <AD04> { [               k,               K  ] };
    key <AD05> { [               e,               E  ] };
    key <AD06> { [               n,               N  ] };
    key <AD07> { [               g,               G  ] };
    key <AD08> { [          scaron,          Scaron  ] };
    key <AD09> { [     scircumflex,     scircumflex  ] };
    key <AD10> { [               z,               Z  ] };
    key <AD11> { [               h,               H  ] };
    key <AD12> { [      idiaeresis,      Idiaeresis  ] };
    // key <BKSL> { [          ggrave,          Ggrave  ] };  // does not exist
    // key <BKSL> { [    dead_grave g,    dead_grave G  ] };  // xkb does not allow multiple characters per key press

    key <AC01> { [               f,               F  ] };
    key <AC02> { [          igrave,          Igrave  ] };
    key <AC03> { [               v,               V  ] };
    key <AC04> { [               a,               A  ] };
    key <AC05> { [               p,               P  ] };
    key <AC06> { [               r,               R  ] };
    key <AC07> { [               o,               O  ] };
    key <AC08> { [               l,               L  ] };
    key <AC09> { [               d,               D  ] };
    key <AC10> { [          zcaron,          Zcaron  ] };
    key <AC11> { [     ecircumflex,     Ecircumflex  ] };

    key <AB01> { [     acircumflex,     Acircumflex  ] };
    key <AB02> { [          ccaron,          Ccaron  ] };
    key <AB03> { [               s,               S  ] };
    key <AB04> { [               m,               M  ] };
    key <AB06> { [               t,               T  ] };
    key <AB05> { [               i,               I  ] };
    key <AB07> { [         minutes,          minutes ] };
    key <AB08> { [               b,               B  ] };
    key <AB09> { [     ucircumflex,     Ucircumflex  ] };
    key <AB10> { [           slash,        question  ] };

    key <LSGT> { [          period,           comma  ] };

    include "level3(ralt_switch)"
};

有什么办法可以添加吗?

答案1

我见过的用于高棉语布局的技巧是从未正式定义的范围(即来自 (0x10017fb-0x10017ff) 的范围)分配一些 unicode 代码点,然后在“撰写文件”中添加一条规则来进行转换将未定义的字符添加到您想要的输出中。

例如,您可以在布局中定义它:

key <BKSL> { [    0x10017fe,    0x10017ff  ] };

它本身只会输出 ៾ 和 ៿,它们是未定义的 unicode 字符。

但是,然后您创建一个“撰写文件”,~/.XCompose您可以在其中添加规则以将这些 un​​icode 字符替换为其他字符。撰写文件将如下所示:

<U17fe> : "Ґ"
<U17ff> : "G̀"

或者任何你想要的东西。我现在将西里尔字母与拉丁字母混合在一起,这可能不是您想要的。您可以在那里输入任何您喜欢的字符,甚至是长序列。

以下是一些有关撰写文件的文档:https://www.x.org/releases/current/doc/man/man5/Compose.5.xhtml

还有一些用于撰写文件的系统位置,这些位置应适用于特定区域设置的所有用户等。当然,您的主目录中的~/.XCompose仅适用于您作为用户,然后适用于所有区域设置。也许在您的情况下,您可以在文件中/usr/share/X11/locale/ua/Compose为乌克兰语言环境定义映射。

相关内容