我是瑞典人,偶尔会用丹麦语和挪威语书写。为此,我不会切换键盘布局,只需输入AltGr+ä即可获得 æ 和AltGr+ö即可获得 ø,这是我的母语瑞典语键盘上唯一没有的丹麦语/挪威语字母。现在我正在学习俄语,为此我切换到一种名为“俄语(瑞典语,语音)”的键盘布局,该布局在 Ubuntu Linux 16.04 中可用。
但有时我也需要输入乌克兰语和白俄罗斯语中带有一些多余字母的单词。为此,只需输入AltGr+и即可获得乌克兰语 і 和AltGr+э即可获得乌克兰语 є,这样就非常方便了,而不必在这么多布局之间切换。但目前,这种键盘布局似乎根本没有用处AltGr。那么我该如何实现这一点,以及如何在下一个版本的 Ubuntu Linux 中分发这些改进?
我的解决方法是切换到“乌克兰语(语音)”布局,但不太方便。在三种布局之间切换很不方便,在我的处境下没有必要。
答案1
以下是我回答自己的问题的途径:我需要编辑的文件是
/usr/share/X11/xkb/symbols/se
该文件包含常规瑞典语布局(其中 AltGr + ä = æ)和“俄语(瑞典语,语音)”。尽管如此,我还是编辑了该文件的俄语部分,但什么也没发生。从前几年开始,有很多论坛帖子讨论了为什么 xkb 编辑不起作用。一个常见的答案是必须删除 /var/lib/xkb 中的缓存文件,但我的系统上没有这样的文件,在 Ubuntu 16.04 中无需删除它。相反,该文件的俄语部分包含一行 key.type[group1]="ALPHABETIC"; ,我必须将其注释掉。我不知道为什么那一行在那里,也不知道它应该做什么。在我注释掉这一行之后,我现在可以在每行上添加 AltGr 定义作为数字 3 和 4,它们会在我下次切换键盘布局时生效。所以我修改了以下几行:
key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, U0301, U0300 ] }; // acute, grave
key <AD01> { [ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ] }; // Yat
key <AD03> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
key <AD07> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
key <AD08> { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] };
key <AD11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] };
key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
key <AC07> { [ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_yi, Ukrainian_YI ] };
第一行在 AltGr ъ 上添加了组合重音符,在 AltGr Ъ 上添加了组合重音符('' 键),这在编写使用重音符的俄语词典时非常有用:мо́ре、моря́。与拉丁字母不同,Unicode 不包含带有重音符的西里尔元音的代码点,因此需要这些组合重音符。
接下来的几行添加了 ў(表示白俄罗斯语)、ѣ(yat)(表示 1917 年前的俄语拼写)、ї、ґ、є(表示乌克兰语)、і(表示所有三种正字法),并将 ё 放在 AltGr е 上以方便使用。也许您不同意这些观点。AltGr и = і 还是 ї?更明显的是,AltGr г = ґ 而 AltGr у = ў。
有了这个,我非常开心。剩下的就是将它添加到下一个 Ubuntu 发行版中。怎么做?谁来做?