我有一个自定义的 X11 键盘布局,可以与setxkbmap
.但经过一番搜索后,我发现显然仅仅拥有 XKB 布局文件不足以将其设置为 KDE 4 中的新键盘布局。我希望 KDE 系统能够识别我的自定义布局,以便我可以使用系统托盘小程序选择它,或者使用系统设置模块将其安装为默认值。我需要做什么才能实现这一点?如果复杂的话也没关系,我还是想知道其中涉及什么。
我看过这个问题这似乎是相关的,但它显然是关于首先创建键盘布局,我已经完成了。
答案1
您需要告诉系统您拥有该文件。我不会告诉您如何修改这些文件——您会弄清楚的——但我会告诉您要修改哪些文件。
首先,布局本身位于/usr/share/X11/xkb/symbols/
.您可以使用新扩展名复制该文件,也可以修改现有文件之一以添加您的布局变体。例如,如果您的布局基于德语布局,请将一个部分添加到/usr/share/X11/xkb/symbols/de
.
最后,您需要修改 /usr/share/X11/xkb/rules/evdev.lst
并/usr/share/X11/xkb/rules/evdev.xml
添加有关布局/布局变体的信息。
答案2
对于任何对此有疑问的人来说,这里有一个更详细的答案。
如何在 KDE 中创建自定义键盘布局
- 您所需要查看的就是这些文件:
/usr/share/X11/xkb/symbols/
/usr/share/X11/xkb/rules/evdev.xml
/usr/share/X11/xkb/rules/evdev.lst
- 首先,
/usr/share/X11/xkb/symbols
您可以找到许多按语言分类的键盘布局。这些文件中有很多精彩内容,如果您不喜欢其中的布局,请查看一下,如果您确实跳到 3。 - 如果您尚未决定键盘布局,我们将为我们的布局创建一个新块。
- 选择您希望键盘布局基于的语言
- 打开该文件并使用 ID 和名称创建一个新块:
xkb_symbols "keyboard_id" {// unique keyboard id
include "us" // the keyboard you are based on
name[Group1]= "my keyboard"; // the keyboard name that will be shown in the menus
// your configuration will later go here
include "level3(ralt_switch)" // optional switch to allow alt+gr and alt+gr+shift to be used
};
- 我们稍后会回到这里。首先我们必须使其能够被系统读取。打开
/usr/share/X11/xkb/rules/evdev.lst
- 搜索放置键盘布局块的文件的文件名(在我的例子中是 cz),然后在其中放置一个新条目,如下所示:
keyboard_id cz: my keyboard
- 同时用您的价值观替换
keyboard_id
cz
和my keyboard
执行类似的任务
/usr/share/X11/xkb/rules/evdev.xml
如果您已正确完成所有操作,它现在应该出现在键盘布局中:
应用此键盘布局。您现在可以使用布局进行输入!但您可能想要更改基本布局(在我们的例子中是我们)
现在我们回到 2。 - 您将需要定义与您所基于的布局不同的任何键(在本例中是美国键盘)
xkb_symbols "keyboard_id" {// unique keyboard id
include "us" // the keyboard you are based on
name[Group1]= "my keyboard"; // the keyboard name that will be shown in the menus
key <AE01> {[ plus, exclam, 1, 1 ]};
key <AE02> {[ ecaron, at, 2, Ecaron ]};
key <AE03> {[ scaron, numbersign, 3, Scaron ]};
key <AE04> {[ ccaron, dollar, 4, Ccaron ]};
key <AE05> {[ rcaron, percent, 5, Rcaron ]};
key <AE06> {[ zcaron,asciicircum, 6, Zcaron ]};
key <AE07> {[ yacute, ampersand, 7, Yacute ]};
key <AE08> {[ aacute, asterisk, 8, Aacute ]};
key <AE09> {[ iacute, parenleft, 9, Iacute ]};
key <AE10> {[ eacute, parenright, 0, Eacute ]};
key <AE11> {[ minus, underscore, NoSymbol, NoSymbol ]};
key <AE12> {[ equal, plus, dead_caron, dead_acute]};
include "level3(ralt_switch)" // optional switch to allow alt+gr and alt+gr+shift to be used
};
解释正在发生的事情
<AE01>
- 物理密钥的标识符。参考文件中的其他键盘布局以供参考{[ first_key, second_key, third_key, fourth_key]);
- first_key - 在没有其他按钮按下的情况下按下的键
- secondary_key - 与 Shift 一起按下时的键
- Third_key - 使用 alt+gr 按下时的键
- Fourth_key - 使用 alt+gr+shift 按下时的键
- 现在,如果您省略了
include "level3(ralt_switch)"
第三个和第四个键,则不会执行任何操作,因此您应该只有两个键,如下所示:key <AE10> {[ eacute, parenright]};
- 重新排序布局并应用以在保存文件后查看更改(或以其他方式重新加载系统中的键盘布局。在最坏的情况下只需重新启动)