我正在使用 xkb 创建自己的键盘布局。不过我遇到了一个小问题。
key <AE04> {[ Shift_L ]};
key <AE07> {[ Shift_R ]};
key <LFSH> {[ comma , semicolon , bar ]};
key <RTSH> {[ period , colon , period ]};
modifier_map Shift { <AE04>, <AE07> };
上述代码将 Shift 键移至其他键。为了使新的 Shift 键在按下时确实能执行某些操作,我不得不添加以下代码行modifier_map
。该代码还将常规字符置于旧的 Shift 键上。到目前为止一切顺利。
问题是,如果我按住旧的左移键并按下某个字符(比如说“a”),我会得到“,A”。因此该键既可以用作逗号键和作为 Shift 键。后者是不可取的。右 Shift 键也会出现同样的情况。事实上,control 和 alt 键也会发生这种情况。
我该如何解决这个问题?感觉我需要modifier_unmap
什么。
答案1
运行后setxkbmap -print
我意识到它pc
已包含在符号列表中。该符号文件设置了常规修饰符,这不是我想要的。
之前,我曾将自己的布局添加到目录/usr/share/X11/xkb/symbols
和文件中/usr/share/X11/xkb/rules/evdev.xml
。这使我的布局出现在 GUI 中以供选择键盘布局。
一个解决方案是从头开始制作键盘布局。不是包括pc
文件。但是,里面有很多pc
我需要的标准键盘内容。所以我从头到尾阅读了该文件,挑选出我需要的东西。
简而言之,从头开始创建布局基本上意味着:
- 将输出复制
setxkbmap -print
到文件。 - 该文件仅包含其他文件。查看列表以查看可以重复使用的内容。对我来说,这意味着
pc
用我自己的文件的名称进行替换。 - 如果需要,创建新文件。
- 使用 启动您的新布局
xkbcomp -I$HOME/additional-include-folder file-from-step-one
。
我从这个优秀的指南中学到了这一点(更详细):http://hack.org/mc/writings/xkb.html。