2020 年更新

2020 年更新

我正在为 Xorg 编写一种新的自定义键盘布局,但有一个特定的字形在 Unicode 中不存在。然而,通过使用标准字母加上组合变音符号来创建它很容易。

例如,如果我想要v下面带有宏的字母,该序列U0073+U0331将创建我想要的字符。

在我的 xkb 布局定义中,我可以指定单个 Unicode 点(此处altgr+d绑定到 ḏ 和altgr+shift+dḎ):

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

但我似乎无法为单个键指定“组合”Unicode 字形:

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

是否可以像这样创建一个系统范围的 xkb 定义?

答案1

编辑:

仍在尝试...

测试表明键映射在每个位置仅采用一个键。

但是,如果您在键盘映射定义中使用罕见/从未使用过的键盘符号,则使用全局 Xmodmap 使该键盘符号输出您需要的各种 unicode 字符,这将起作用。

在键盘映射中:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

在全局 Xmodmap 中:(可能从 /etc/profile.d 加载?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

有很多未使用/特殊用途的键符号,我选择了 LaunchA/B 作为示例。

答案2

另一方面,您可以将结合变音字符本身的 unicode 附加到给定键,然后您可以在任何其他字符之后键入它。事实上,这就是 unicode 组合字符的工作方式。

在 X11 中存在死键,死键以相反的方式工作:首先是死键,然后是基本字母。有一个<dead_belowmacron>,您可以将其附加到某个键上。

然后,您需要编辑您的语言环境的 Compose 文件(如果有人知道如何从用户定义的位置将定义附加到 Compose 文件,我会很感激),并添加如下行:

# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"

要使用的 Compose 文件由 /usr/share/X11/locale/compose.dir 文件中的区域设置定义(路径可能有所不同)。

答案3

2020 年更新

这个问题是在 2012 年提出的,最新答案(在这个问题之前)是在 2013 年。很长一段时间以来,更好的答案就是简单地ximuim。它或多或少是一个直接替代品,旨在完全支持 Unicode 和多语言输入。在许多其他功能中,uim 允许您输出多代码点字符,例如U0073+U0331按键或死键组合的结果。

相关内容