在没有 root 访问权限的情况下在 X11 中设置自定义键盘布局的步骤是什么?我知道这是可能的,基于这个答案,但Error loading new keyboard description
每当我尝试使用新布局时我都会得到。
.config
我创建了一个xkb
目录,如下所示:
xkb/
rules/
evdev-local
evdev-local.lst
evdev-local.xml
symbols/
my-us
在我添加的部分evdev-local.xml
中<layoutList>
<layout>
<configItem>
<name>my-us</name>
<shortDescription>my-us</shortDescription>
<description>English (My US)</description>
<languageList>
<iso639Id>eng</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>mdvp</name>
<description>English (Modified Programmer Dvorak)</description>
</configItem>
</variant>
</variantList>
</layout>
并且该symbols/my-us
文件是
partial alphanumeric_keys
xkb_symbols "mdvp" {
include "us(dvp)"
name[Group1] = "English (Modified Programmer Dvorak)";
// Unmodified Shift AltGr Shift+AltGr
// upper row, left side
key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
// lower row, left side
key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
include "level3(ralt_switch)"
};
然后我跑
setxkbmap -I ~/.config/xkb/ -rules evdev-local -layout my-us
并得到
加载新键盘描述时出错
背景故事:我一直在使用 Programmer's Dvorak,而且我最喜欢它,但我想将分号和撇号切换回 US Dvorak 上的位置,因为这更适合我的工作流程。
我见过本教程在 SE 上推荐,它适用于我的机器,但我需要能够使用 KDE 布局切换器小部件,以便当其他人需要在我的机器上工作时我可以切换回纯英语 QWERTY。
答案1
由于某种原因,如果您-print
将输出通过管道传输到xkbcomp
:
setxkbmap \
-I ~/.config/xkb/ \
-rules evdev-local \
-layout "my-us(mdvp)" \
-print |
xkbcomp -I ~/.config/xkb/ - "$DISPLAY"
我不认为你的布局有什么问题。我尝试直接设置它setxkbmap
,但即使使用该-verbose
选项,输出也没有帮助:
Warning! Multiple definitions of rules file
Using command line, ignoring X server
Warning! Multiple definitions of keyboard layout
Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+my-us(mdvp)+inet(evdev)+terminate(ctrl_alt_bksp)
geometry: pc(pc104)
Error loading new keyboard description
这是默认的详细级别。但即使我将其设置为 10(这显然是最大级别),除了上述内容之外,它也只会输出“区域设置为 C”以及尝试查找规则文件的位置。它不会输出任何有关无法加载键盘描述的原因的信息。
xkbcomp
我更喜欢使用管道而不是使用的原因之一setxkbmap
是因为前者似乎可以提供更好的错误消息。