我正在使用 xkb 创建我自己的键盘布局。不过,我有一个小问题。
key <AE04> {[ Shift_L ]};
key <AE07> {[ Shift_R ]};
key <LFSH> {[ comma , semicolon , bar ]};
key <RTSH> {[ period , colon , period ]};
modifier_map Shift { <AE04>, <AE07> };
Run Code Online (Sandbox Code Playgroud)
以上将shift键移动到其他键。为了使新的 shift 键在按下时实际执行某些操作,我必须添加该modifier_map行。该代码还在旧的 shift 键上放置了常规字符。到现在为止还挺好。
问题是,如果我按住旧的左移键并按下某个字符 - 比如说“a” - 我会得到“,A”。因此该键既可以用作逗号键,也可以用作 shift 键。后者是不希望的。同样的事情发生在正确的旧 shift 键上。事实上,它也发生在 control 和 alt 中。
我该如何解决这个问题?感觉就像我需要modifier_unmap什么。
这个问题主要是出于对 Gnome 和/或 XKB 中键盘内容的好奇。下面是在 Ubuntu Gnome 16.04 上完成的,但我相信在更高版本的 Ubuntu 和 Gnome 版本中也是一样的。
\n\n在 Gnome 中添加 \xe2\x80\x9cInput Sources\xe2\x80\x9d (键盘布局)时:
\n\n\n\n\xe2\x80\xa6 \xe2\x80\x99 右下角有一个小键盘按钮,显示标准外观键盘上的输入源:
\n\n\n\n我相信图片中的键盘是 \xe2\x80\x9cpc104\xe2\x80\x9d 键盘。
\n\n正如您在第一张图片中看到的,我在选择 \xe2\x80\x9cEnglish (US)\xe2\x80\x9d 时单击了键盘按钮,但还有 \xe2\x80\x99s 也 \xe2\x80\x9cSwedish\xe2 \x80\x9d 可用。单击选择了 \xe2\x80\x9cSwedish\xe2\x80\x9d 的键盘按钮确实会按预期显示瑞典语布局,但仍然像以前一样在 pc104 键盘上。瑞典的标准是 pc105(它是一个不同形状的 Enter 键,以及 Z 左侧的一个额外键;有关更多信息,请参阅IBM PC 键盘)。这不是什么大不了的事,但我们\xe2\x80\x99 会回到这个话题。
\n\n据我所知, pc104 和 pc105 是XKB中两个 \xe2\x80\x9cgeometries\xe2\x80\x9d 的示例。在我的系统上它们定义在/usr/share/X11/xkb/geometry/pc.
/usr/share/X11/xkb/geometry还包含其他几何形状。引起我注意的是teck。由于我拥有这样一个键盘(\xe2\x80\x9cTruly Ergonomic Keyboard\xe2\x80\x9d),我很好奇并想知道该几何图形在屏幕上呈现的样子。
我的第一个想法是尝试让 Gnome\xe2\x80\x99s 键盘显示东西显示 pc105 或 teck …
这就是我要的:
它需要在Trisquel上工作。
我之前用过xkb重新映射了一些键,所以我想也许 xkb 可以做到这一点。看起来它可以:
Pointer_Left,Pointer_DownRight,Pointer_Button_Dflt,Pointer_Drag_Dflt,等。ISO_Level5_Lock.但是,我对 Linux 和 xkb 都是新手。我已经设法使用 xkb 进行了非常简单的键重映射,但不幸的是我无法弄清楚如何将上述所有内容放在一起,以及将它放在哪些文件中。不涉及 xkb 的解决方案也可以,部分解决方案也是如此。