
我的语言瓜拉尼语使用 G̃/g̃ 表示鼻化软腭近似音。我以为我可以通过将死代字号与 g 组合来输入它,但这不起作用。为什么没有,我该如何解决?
我的主要怀疑是,这与 g̃ 没有单独的 Unicode 字符有关,只有 g 与组合波形符有关。我可以很好地输入 ỹ 和 ṽ,但不能输入 j̃、r̃、m̃,这似乎是问题所在的良好证据。
因此,我可以解决这个问题的一种方法是将键映射到 0x1000303 (即 U+0303 或 ◌̃ ),即组合波浪号,而不是 dead_tilde。然而,这会产生几个问题:
- 如果我在所有情况下都改用组合波浪号:
- 在许多情况下,我最终会输入 n + ◌̃ ,其中需要单个字符 ñ ,并且它们会产生不同的结果。例如,我注意到,如果我键入一个与另一个,某些网站将不会显示相同的搜索结果(显然这是在他们身上,但我想要一种与现在存在的世界兼容的键盘布局)。
- 令人烦恼的是,我必须退格两次才能删除带有组合波浪号的字符,如果仅用于 g̃,我可以接受,但对于每个鼻化字符来说有点多。
- 如果我将两者都添加(这就是我目前正在做的事情),那么可用性就会变得非常困难,因为:
- 当我的大脑认为它们是相同的时,我必须在每种情况下考虑使用哪个键
- 两者的输入机制不同,因为 dead_tilde 在字符之前按下,而 ◌̃ 在字符之后。我可怜的小脑袋永远不会习惯这一点。
似乎在理想的情况下,我会让 X 注意到 dead_tilde + g 不起作用,然后像我输入 g + ◌̃ 一样处理它,然后一起输入这两个字符,就像 ñ 一样、ã、ẽ、ĩ、õ、ũ、ỹ 等
值得注意的是,不可能通过直接将 g̃ 添加到我的键盘布局来解决这个问题,因为 xkb 似乎不支持将键映射到组合的 Unicode 字形(尽管请参阅答案自定义 xkb 布局,其中一个键创建两个 unicode 代码点一个 hacky 解决方法)。如果我能解决这个问题,我想这就不是什么问题了。
我正在运行 Ubuntu 18.04,不确定还有哪些其他背景信息会有所帮助,但我认为这对于任何运行 X 的人来说都是一个问题。
编辑 1:编辑 Compose 映射不起作用
我尝试过的另一件事是编辑撰写添加组合 g̃ 的映射。我编写了一个 .XCompose 文件,如下所示:
include "%L"
<dead_tilde> <g> : "g̃" gtilde
<dead_tilde> <G> : "G̃" Gtilde
但这也不起作用,我假设出于与上述相同的原因:X 期望单个字符,而 g̃ 从技术上讲是两个字符。顺便说一句,我注意到我的语言环境的默认 Compose 文件中提供的许多映射也不起作用,大概是出于同样的原因。以下 en_US.UTF-8 的映射(也许还有更多)实际上什么也不做:
<dead_acute> <dead_tilde> <a> : "ã́" # LATIN SMALL LETTER A WITH TILDE AND ACUTE
<dead_grave> <dead_tilde> <a> : "ã̀" # LATIN SMALL LETTER A WITH TILDE AND GRAVE
<dead_acute> <dead_tilde> <A> : "Ã́" # LATIN CAPITAL LETTER A WITH TILDE AND ACUTE
<dead_grave> <dead_tilde> <A> : "Ã̀" # LATIN CAPITAL LETTER A WITH TILDE AND GRAVE
<dead_acute> <dead_tilde> <e> : "ẽ́" # LATIN SMALL LETTER E WITH TILDE AND ACUTE
<dead_grave> <dead_tilde> <e> : "ẽ̀" # LATIN SMALL LETTER E WITH TILDE AND GRAVE
<dead_acute> <dead_tilde> <E> : "Ẽ́" # LATIN CAPITAL LETTER E WITH TILDE AND ACUTE
<dead_grave> <dead_tilde> <E> : "Ẽ̀" # LATIN CAPITAL LETTER E WITH TILDE AND GRAVE
<dead_acute> <dead_tilde> <i> : "ĩ́" # LATIN SMALL LETTER I WITH TILDE AND ACUTE
<dead_grave> <dead_tilde> <i> : "ĩ̀" # LATIN SMALL LETTER I WITH TILDE AND GRAVE
<dead_acute> <dead_tilde> <I> : "Ĩ́" # LATIN CAPITAL LETTER I WITH TILDE AND ACUTE
<dead_grave> <dead_tilde> <I> : "Ĩ̀" # LATIN CAPITAL LETTER I WITH TILDE AND GRAVE
<dead_grave> <dead_tilde> <o> : "õ̀" # LATIN SMALL LETTER O WITH TILDE AND GRAVE
<dead_grave> <dead_tilde> <O> : "Õ̀" # LATIN CAPITAL LETTER O WITH TILDE AND GRAVE
<dead_grave> <dead_tilde> <u> : "ũ̀" # LATIN SMALL LETTER U WITH TILDE AND GRAVE
<dead_grave> <dead_tilde> <U> : "Ũ̀" # LATIN CAPITAL LETTER U WITH TILDE AND GRAVE
<dead_grave> <m> : "m̀" # LATIN SMALL LETTER M WITH GRAVE
<dead_grave> <M> : "M̀" # LATIN CAPITAL LETTER M WITH GRAVE
就观点而言,我不认为这是我们应该解决的问题:为每个可能的变音符号在 Compose 文件中添加额外的一行似乎很浪费,并且没有利用 Unicode 希望我们使用的良好组合变音符号的简单性。
在删除这个 .XCompose 之前我注意到的一件有趣的事情是,从终端启动 GTK 程序会导致以下错误:
(gedit:7229): Gtk-WARNING **: 23:03:04.848: GTK+ supports to output one char only: "g̃" gtilde: <dead_tilde> <g> : "g̃" gtilde
所以大概这是 GTK 问题?我将继续尝试追踪它,但希望得到任何帮助。
编辑2:相关GTK问题
看来我的解决方案是解决这个问题:https://gitlab.gnome.org/GNOME/gtk/-/issues/186
答案1
根据我的阅读,您使用标准 xkb 会很不走运,因为正如您所发现的,使用 xkb 时,死键组合的输出要么为零(如果第二个键与有效序列不匹配),要么为一个 Unicode 代码点。
我没有运行 X 的 Ubuntu 来测试,所以我无法测试这个建议,但我相信你的解决方案是切换到使用乌姆,它支持死键组合的多代码点输出。您可以阅读有关如何设置的uim
信息维基教科书或来自这个帖子(但不要关注整篇文章,因为它正在解决不同的问题)。
我引用的帖子展示了如何'b输出 2 个字符序列'b
,同时仍然允许'a输出单个字符á
。他们解决了这个问题,方法是制作'一个死键,然后显式配置死键序列'b,然后对键盘上的其他 99 个字符重复此操作。您不必走那么远。
您已经创建了.XCompose
所需的文件。uim
剩下要做的就是切换到。
答案2
我刚刚升级到 Ubuntu 20.04,现在.XCompose
解决方案完美运行!所以这应该是最好的解决方案。您只需.XCompose
在主目录中创建一个文件,如下所示,或添加到现有文件中:
include "%L"
<dead_tilde> <g> : "g̃" gtilde
<dead_tilde> <G> : "G̃" Gtilde