答案1
由于我还不能发表评论,所以快速给出正确的答案:
正如我在你的另一个问题中提到,您需要在主目录中(或您具有写权限的其他地方)创建布局文件,作为 XKB 数据库目录树的本地版本:
$HOME/.config/xkb/
...
├── rules
│ ├── evdev-local
...
├── symbols
│ ├── my-fun-capslock-options
│ ├── my-US-Dvorak-layout
│ └── my-ZWERTY-layout
...
...然后使用该-I
选项setxkbmap
:
setxkbmap -I $HOME/.config/xkb \
-rules evdev-local \
-layout my-ZWERTY-layout \
-option myZWERTY:option1,compose:menu,fun:caps_is_insert
答案2
设置键盘的底层命令是setxkbmap
--- 现在,查看它的手册页,似乎它将从中读取键盘规范/usr/share/X11/xkb/
,因此您需要在那里写入修改后的布局 --- 系统目录,需要 root 访问权限。
但
我尝试过这个:
strace setxkbmap nonexistant |& grep open
查看命令正在做什么,然后查看:(部分输出)
open("/run/user/1153/gdm/Xauthority", O_RDONLY) = 4
open("./rules/evdev-C.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("./rules/evdev.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev-C.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev.lst", O_RDONLY) = 4
所以似乎这setxkbmap
也会在当前目录中查找文件规范。因此,也许(我没有时间测试)如果您从中复制所有相关目录结构/usr/share/X11/xkb/
,$HOME/myxkb
然后尝试发出命令
setxbmap -model pc105 -layout myshiny -variant myvariant
或者其他可能工作。
PD:arch 帮助页面一如既往地有用;您可以使用这个命令来查看您使用的键盘是由什么组成的:
[romano:~] % setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: es,us
variant: standard_tlde,
options: caps:none,compose:caps,terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
答案3
我可以推荐这个指导如果您只是想扩展现有的键盘布局。
答案4
这 答案由 quixotic 编写,功能齐全,可能正是您通常应该做的。但是,如果您出于某种原因不想复制和修改文件rules
,这里有一个替代解决方案。
在这种情况下,我们将直接使用 加载“xkb 键盘映射文件” xkbcomp
。
首先,创建您想要的任何自定义布局或选项,在~/.config/xkb/symbols/option_file
内容文件中说道:
partial hidden modifier_keys
xkb_symbols "new_option_1" {
[...]
};
接下来,使用转储当前布局setxkbmap -print > ~/.config/xkb/keymap/my_layout
。(请注意,这不一定必须与symbols
上面的文件(或您添加的任何其他文件)位于同一目录层次结构中,因为我们将明确指定它的路径。)这将是以下形式:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
要启用新选项,请编辑转储的布局,通过添加+option_file(new_option_1)
行xkb_symbols
,所以我们的示例将变成:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+option_file(new_option_1)" };
xkb_geometry { include "pc(pc105)" };
};
最后,使用以下命令加载新的键盘映射:xkbcomp -I$HOME/.config/xkb ~/.config/xkb/keymap/my_layout $DISPLAY
。
参考: