我尝试在 Ubuntu 18.04.1 LTS 中设置自定义键盘布局,以便能够为科学目的编写阿拉伯语音译(请参阅:https ://en.wikipedia.org/wiki/Romanization_of_Arabic ;https ://en.wikipedia.org /wiki/DIN_31635)因此我需要能够输入特殊字符。
我或多或少地遵循了这些说明:
- https://sites.lsa.umich.edu/kchalipa/?p=61
- https://aboutfoto.wordpress.com/2017/04/23/custom-keyboard-xkb/
- 在 ubuntu 上创建新的键盘布局需要哪些步骤?
我做了什么:
当我说德语时,我使用 gedit 和 root 权限在 /usr/share/X11/xkb/symbols/ 中打开了“de”。
在这个文件中,我在最后插入了以下内容并保存(之前做了原件的备份):
// Deutsch mit orientalistischer Umschrift partial alphanumeric_keys xkb_symbols "german_orient" { include "de(basic)" name[Group1]="Deutsch (Orientalistische Umschrift)"; key <BKSL> { [numbersign, apostrophe, U+02BE, dead_breve ] }; key <AE12> { [dead_acute, dead_grave, U+02BF, dead_ogonek ] }; key <AC11> { [adiaeresis, Adiaeresis, U+0304, dead_caron ] }; key <AB10> { [minus, underscore, U+0331, emdash ] }; key <AC10> { [odiaeresis, Odiaeresis, U+0307, dead_belowdot ] }; key <AB09> { [period, colon, U+0323, division ] }; key <AB08> { [comma, semicolon, U+030C, multiply ] }; key <AC06> { [h, H, U+032E, NoSymbol ] }; };
与此处列出的每个键的德语标准键盘布局相比,第三个条目(= 与 AltGr 一起按下键)根据我的需要进行了更改。顺便说一句,我通过在互联网上查找特殊字符获得了 Unicode 代码。
然后我
evdev.xml
以/usr/share/X11/xkb/rules/
同样的方式打开在这个文件中,我搜索了德语(de)布局条目并在其末尾(意思是 before
</layout>
)插入以下内容并保存文件:<variant> <configItem> <name>german_orient</name> <description>Deutsch (Orientalistische Umschrift)</description> </configItem> </variant>
然后我在终端中输入以下命令并按下回车键,
sudo dpkg-reconfigure xkb-data
因为在许多关于该主题的教程中建议这样做然后我重新启动了。
然后我在 Ubuntu Preferences 中添加了新的键盘布局“Deutsch (Orientalistische Umschrift)”(意思是:德语(东方音译)
结果并不如我所愿:
我不仅不能用我分配的键写特殊字符。我想我以某种方式“破坏”了“de”键盘布局,因为无论我激活标准德语布局还是通过 super+space 激活“Deutsch (Orientalistische Umschrift)”布局,系统似乎都回落到了默认的英文键盘布局。因此,即使激活了其中一种德语布局,我写的字母也是根据英语布局(例如字母“z”和“y”被切换)。
所以,最后,我使用我所做的两个文件的备份撤消了我的更改,现在一切都恢复正常了。
但是由于我需要能够出于专业目的快速编写阿拉伯语音译,并且至少据我所知,没有可供下载的用于此目的的键盘布局(因为该领域使用 Linux 的学者数量非常少) 我需要这里有人的帮助来告诉我要更改哪些内容才能使我的自定义键盘布局正常工作。
我仍然是 Linux 的菜鸟,如果我错过了一些明显的东西,我很抱歉。无论如何,提前感谢您的帮助!
更新:自己找到了解决方案
我自己找到了一个解决方案,我会把它贴在这里,因为其他人可能会从中获利
安装 KeyboardLayoutEditor 并编辑键盘布局文件
我从https://github.com/simos/keyboardlayouteditor下载并安装了 KeyboardLayoutEditor
- 当我尝试运行它时,我注意到一些软件包丢失了,我必须先安装这些软件包,而这些软件包没有在要求中列出。
运行 KeyboardLayoutEditor 并加载合适的语言布局文件(在我的情况下为 de)
- 然后选择您要编辑的变体(在我的情况下为“基本”,因为我认为在添加自己的变体时可能犯了一些错误)
然后单击将加载 Gucharmap 的“开始字符映射”按钮(我必须先通过 Ubuntu 软件中心安装它才能工作)
现在选择要添加到某个键的字符(您也可以通过输入 Unicode-Codes 在 Gucharmap 中搜索符号)
并将其拖放到 KeyboardLayoutEditor 中合适键的 4 个位置之一(最终代码见下文)
- 顺便说一句,我认为应用程序在这里犯了一些错误。因为将一些字符拖到某个键上时,它并没有将正确的 unicode-code 写入 de-file 而是相应的死键字符的一些名称。(例如,它写了“dead_belowdot”而不是 U0323,尽管我在 Gucharmap 中选择了后一个字符并将其拖过来。我想这是一个错误。
- 结果是
- 对于这些死键特殊字符,我必须先输入它们,然后再输入我希望它们出现在上方或下方的字母。
- 可以通过首先输入字母然后输入我想在上面或下面添加的特殊字符来输入具有正确 unicode 代码的其他插入字符。这是我习惯的行为,所以我尝试修复死键版本:
- 我的解决方案是手动编辑 de-file,用组合字符版本的正确 unicode 代码替换所有错误插入的死键版本。现在我可以输入一个字母,然后添加特殊字符。
插入所需的所有字符后,您可以保存文件
- 在我的情况下,KeyboardLayoutEditor 不仅将更改保存到“de-file”中的“basic”变体,而且覆盖了整个“de-file”,从而删除了所有其他变体
- 尽管我认为我不需要其他我不喜欢的变体。因此,我将在 de-File 中编写的代码 KeyboardLayoutEditor 复制到我的 de_backup 中,替换了那里的“basic”部分,然后将 de_backup 保存为“de”,替换了旧的“de”。
- 这次不必编辑 evdev.xml,因为已编辑现有变体,因此无需将新变体/布局添加到文件中。
然后我
sudo dpkg-reconfigure xkb-data
在控制台中使用了命令最后我重新启动了
结果:现在一切都像魅力一样!:)
一些想法
我不知道为什么这次使用 KeyboardLayoutEditor 会起作用。
我的第一个猜测是它起作用了,因为我没有尝试向键盘布局文件(de)添加新变体,而是编辑了现有变体,从而避免了编辑 de-file 和 evdev-xml 时可能出现的一些错误
我的第二个猜测是它起作用了,因为 KeyboardLayout 编辑器编写的 Unicode 代码与我第一次手动编辑 de-file 时不同。
- 例如,我插入的 unicode 代码如下所示:U+02BE
- 应用程序编写的 unicode-code 如下所示:U02BE
- 也许通过省略“+”它起作用了?因为我是菜鸟我不知道。
- 一些知识渊博的人可能会在下面的代码中看到不同的原因。
我在键盘布局文件中插入的有效代码(在我的例子中是de)
(这是最终版本,应用程序所犯的错误已由我手动纠正)
////////////////////////////////////////////////////////////////////////////// ///
//
// Generated keyboard layout file with the Keyboard Layout Editor.
// For more about the software, see http://code.google.com /p/keyboardlayouteditor
//
xkb_symbols "basic"
{
name[Group1] = "German";
include "latin(type4)"
include "level3(ralt_switch)"
include "kpdl(comma)"
key <AB01> { [ y, Y, guillemotright, U203A ] }; // y Y » ›
key <AB02> { [ x, X, guillemotleft, U2039 ] }; // x X « ‹
key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] }; // v V „ ‚
key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] }; // b B “ ‘
key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] }; // n N ” ’
key <AB08> { [ comma, semicolon, U030C, multiply ] }; // , ; Dˇ ×
key <AB09> { [ period, colon, U0323, division ] }; // . : D? ÷
key <AB10> { [ minus, underscore, U0331, emdash ] }; // - _ ̱ —
key <AC02> { [ s, S, U017F, U1E9E ] }; // s S ſ ẞ
key <AC06> { [ h, H, U032E ] }; // ̮
key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] }; // j J D? D˙
key <AC10> { [ odiaeresis, Odiaeresis, U0307, dead_belowdot ] }; // ö Ö D˙ D?
key <AC11> { [ adiaeresis, Adiaeresis, U0304, dead_caron ] }; // ä Ä Dˉ Dˇ
key <AD03> { [ e, E, EuroSign, EuroSign ] }; // e E € €
key <AD06> { [ z, Z, leftarrow, yen ] }; // z Z ← ¥
key <AD11> { [ udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] }; // ü D¨ D˚
key <AD12> { [ plus, asterisk, asciitilde, macron ] }; // + * ~ ¯
key <AE02> { [ KP_2, quotedbl, twosuperior, oneeighth ] }; // 2 " ² ⅛
key <AE03> { [ KP_3, section, threesuperior, sterling ] }; // 3 § ³ £
key <AE04> { [ KP_4, dollar, onequarter, currency ] }; // 4 $ ¼ ¤
key <AE11> { [ ssharp, question, backslash, questiondown ] }; // ß ? \ ¿
key <AE12> { [ dead_acute, dead_grave, U02BF, dead_ogonek ] }; // D´ D` ʿ D˛
key <BKSL> { [ numbersign, apostrophe, U02BE, dead_breve ] }; // # ' ʾ D˘
key <LSGT> { [ less, greater, bar, dead_belowmacron ] }; // < > | Dˍ
key <TLDE> { [ dead_circumflex, degree, U2032, U2033 ] }; // D^ ° ′ ″
};
更新:自己找到了解决方案
我自己找到了一个解决方案,我会把它贴在这里,因为其他人可能会从中获利
安装 KeyboardLayoutEditor 并编辑键盘布局文件
我从https://github.com/simos/keyboardlayouteditor下载并安装了 KeyboardLayoutEditor
运行 KeyboardLayoutEditor 并加载合适的语言布局文件(在我的情况下为 de)
然后单击将加载 Gucharmap 的“开始字符映射”按钮(我必须先通过 Ubuntu 软件中心安装它才能工作)
现在选择要添加到某个键的字符(您也可以通过输入 Unicode-Codes 在 Gucharmap 中搜索符号)
并将其拖放到 KeyboardLayoutEditor 中合适键的 4 个位置之一(最终代码见下文)
插入所需的所有字符后,您可以保存文件
然后我
sudo dpkg-reconfigure xkb-data
在控制台中使用了命令最后我重新启动了
结果:现在一切都像魅力一样!:)
一些想法
我不知道为什么这次使用 KeyboardLayoutEditor 会起作用。
我的第一个猜测是它起作用了,因为我没有尝试向键盘布局文件(de)添加新变体,而是编辑了现有变体,从而避免了编辑 de-file 和 evdev-xml 时可能出现的一些错误
我的第二个猜测是它起作用了,因为 KeyboardLayout 编辑器编写的 Unicode 代码与我第一次手动编辑 de-file 时不同。
更新:根据 Gunnar Hjalmarsson 的说法,我的第二个猜测可能是正确的,问题是 + 符号
我在键盘布局文件中插入的有效代码(在我的例子中是 de)
(这是最终版本,应用程序所犯的错误已由我手动纠正)