我重新映射了 PageUp 和 PageDown 键,因为它们的位置很尴尬,正好位于左键和右键上方(XPS13 2018)。为此,我更改了 /usr/share/X11/xkb/symbols 中名为“pc”的文件。更具体地说,我替换了以下行
键 { [ 先前 ] };
键 { [ 下一步 ] };
经过
键 { [ NoSymbol, Prior ] };
键 { [ NoSymbol, Next ] };
然后重新启动 X 服务器。
通过这些设置,例如按 PgUp 键不应该执行任何操作,而按 Shift+PgUp 应该执行常规 PgUp 操作(与 PgDown 相同)。
这似乎解决了我的问题:在所有应用程序(例如终端、文本编辑器、其他 gtk 应用程序)中,按键都映射到正确的操作。
我唯一的问题与 Google Chrome 有关;Shift+Pgup 不起作用,PgUp 也不起作用(PgDown 也一样)。这些键现在在 Chrome 上似乎毫无用处。
是否有一种方法可以重新映射按键(PgUp/PgDown),以便在正常按下时不会分配给任何内容,并且在按下 Shift+键(或 Ctrl+键/Altgr+键等)时执行其正常行为,适用于系统和其他应用程序(如 Chrome)?
附言:我尝试使用 xmodmap 重新映射按键。这在终端和文本编辑器上有效,但在 Chrome 和其他几个 GTK 应用程序上无效;后者似乎忽略了映射,并对这些按键执行正常操作。
我在 X 服务器(而不是 wayland)上运行 Ubuntu 17.10。
答案1
我认为问题在于 Shift 键仍然是修饰键,因此即使按下 PgUp 不会生成事件,按下 Shift + PgUp 也会生成 Shift + PgUp 事件。在这种设置下,无法生成普通的 PgUp 按键,而这可能是 Chrome 想要的。
解决此问题的唯一方法是将 Shift 键改为选择覆盖键,而不是修饰键。这类似于 AltGr 的工作方式,在某些按键布局中,AltGr + 4 会发出欧元货币符号,而看起来不像同时按下了 Alt 键。
您可能不想使用 Shift 来执行此操作(因为这样您将失去与 Shift 键相关的其他功能),但是您可以为其选择另一个键。我使用我的按键布局上的 Caps Lock 键在组之间切换,在我的例子中,某些字母键可以正常工作,但当我按住 Caps 时,这些字母键会变成用于光标导航的箭头键。