我有一个xmodmap
使用的自定义文件,包括有用的多语言变音符号、英文引号、破折号等。我想将此地图与 一起使用kmscon
,因此我需要xkb
从中创建一个配置。有没有一种自动化的方法来做到这一点?或者甚至是一个简单的手动过程,因为我不需要经常这样做?
答案1
制作自己的xkb配置文件
这个想法是“读取”当前的键盘配置(不调用xmodmap
),并根据它编写您自己的符号文件。第一的:
xkbcomp -xkb $DISPLAY
这创建了server-0_0.xkb
.在此文件中,采用以下块:
xkb_symbols "pc+inet(evdev)+compose(menu)+whatever(option)" {
key <ESC> { [ Escape ] };
...
};
将第一行更改为:
default xkb_symbols "my_symbols" {
include "pc+inet(evdev)"
include "compose(menu)+whatever(option)"
(我认为您可以将选项分成任意数量的“包含”行)。更改要修改的键并在它们前面加上override
:
override key <AE10> { [ 0, parenright, degree ]};
删除所有未更改的键。
系统范围内的安装
把这一切都放进去/usr/share/X11/xkb/symbols/my_terrific_kb
。现在用户可以使用setxkbmap my_terrific_kb
(in.xinitrc
或.xsessionrc
) 加载它。也许您可以进行Option "XkbLayout" "my_terrific_kb"
系统xorg.conf
范围的更改。
单用户安装
把这一切都放进去~/anywhere/my_terrific_kb
。使用 查找键盘的 XInput id xinput list
。然后跑xkbcomp -i <XInput_id> ~/anywhere/my_terrific_kb $DISPLAY
。
答案2
生成的映射文件xkbcomp :0 custom-xkb-keymap
由许多组件组成,您可以通过简单地交换参数来加载这些组件xkbcomp custom-xkb-keymap :0
。它在这里显示了一些警告,但当我更改文件中的布局时,它似乎起作用了。
xkb 布局存储在symbols
目录中,例如/usr/local/share/X11/xkb/symbols
.该路径可能因系统而异。当您需要布局时,您需要剪出如下所示的部分:
xkb_symbols "id+id+id(pc104)" {
name[group1]="..."
.
.
.
};
并将其存储在symbols
目录中。请确保您没有覆盖那里的任何文件!一旦它存储在那里(例如作为mylayout
),您可以通过键入加载它setxkbmap mylayout
。这与部分中的xorg.conf
设置相对应(请参阅Option "XkbLayout" "mylayout"
InputDevice
kbd 的手册页了解更多详情)。
输出中的其他部分似乎xkcomp
与其他目录中的文件相对应,因此如果某些部分不起作用,您可能必须将拆分custom-xkb-keymap
为其组件并将其复制到下的正确目录中/usr/local/share/X11/xkb
。但这是我从未做过的事情。
更好的布局
您还可以创建自己的文件,而不是使用看起来像反编译代码的原始转储,symbols
这样更具可读性。我有自己的自定义布局,可能对大多数人来说无法使用,但您仍然可以看一下这个短文件我用于在德语键盘上编程(只是为了了解它是什么样子以及你可以用symbols
文件做什么)。
答案3
我刚刚解决了这个问题。应用xmodmap
配置后,我使用xkbcomp :0 custom-xkb-keymap
do 将当前xkb
键盘映射(从 display :0
)复制到名为 的文件中custom-xkb-keymap
。
答案4
该线程中也存在类似的问题:Xephyr:键盘映射无法正常工作 与提供的解决方案类似,您可以保存键盘设置
setxkbmap -display :0 -print > mykeymap
该文件可以由 xkbcomp 在其他系统上应用:
xkbcomp mykeymap :0
该命令可以在 gnome 或其他 DE 的自动启动中执行。我不知道是否所有手动更改都会被接管,但我认为值得一试。在不使用 xkbcomp 的情况下将这个文件放在哪里自动加载,我不知道。