xkb - 重新映射的修饰符仍可用作修饰符

xkb - 重新映射的修饰符仍可用作修饰符

我正在使用 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我需要的标准键盘内容。所以我从头到尾阅读了该文件,挑选出我需要的东西。

简而言之,从头开始创建布局基本上意味着:

  1. 将输出复制setxkbmap -print到文件。
  2. 该文件仅包含其他文件。查看列表以查看可以重复使用的内容。对我来说,这意味着pc用我自己的文件的名称进行替换。
  3. 如果需要,创建新文件。
  4. 使用 启动您的新布局xkbcomp -I$HOME/additional-include-folder file-from-step-one

我从这个优秀的指南中学到了这一点(更详细):http://hack.org/mc/writings/xkb.html

相关内容