我正在为 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 年。很长一段时间以来,更好的答案就是简单地xim
从uim
。它或多或少是一个直接替代品,旨在完全支持 Unicode 和多语言输入。在许多其他功能中,uim 允许您输出多代码点字符,例如U0073+U0331
按键或死键组合的结果。