自定义xkb布局,其中一个键创建两个unicode代码点


14

我正在为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定义?

Answers:


11

编辑:

仍在尝试...

测试表明,键盘映射只会在每个位置使用一个键。

但是,如果您在键映射定义中使用了稀有/从未使用过的键符号,那么可以使用全局Xmodmap使该键符号输出所需的各种unicode字符,这将起作用。

在键盘图中:

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

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

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

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


感谢您的回答。一个缺点是,这将是每次使用的设置,对吗?使用xkb进行操作将使其在整个系统范围内,这意味着可以将其分发到单个文件中。当然,这些条件是我最初的问题!
SigueSigueBen 2012年

2
我仔细研究了源代码,似乎不支持在键映射的键定义中包含多个击键。当然,您可以自己重写它以实现该功能!
lornix

不是我想要的答案,但这仍然是答案。我将自己仔细研究一下源代码,然后看看您建议的选项。谢谢。
SigueSigueBen 2012年

4

另一方面,您可以将组合双歧字符本身的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̱"

使用的撰写文件由/usr/share/X11/locale/compose.dir文件中的语言环境定义(路径可能有所不同)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.