使用 setxkbmap 进行简单的重新映射(类似于 xmodmap)

Den*_*zko 13 xmodmap xkb 14.04

使用 xmodmap 重新映射键盘后,我遇到了一些问题:设置在应用后 2-20 分钟后随机重置。用谷歌搜索但没有帮助:有些东西会重置它们,但所有提到的都适用于 xfce,而我在通常的 14.04 Ubuntu 下使用统一。

我看到了诸如“使用 xkb,忘记 xmodmap”之类的短语,但仍然不知道该怎么做。它要么是机密的,要么是非常复杂的,因为它的信息量明显小于 xmodmap 方式。

这是我的自定义列表:

xmodmap -e "keycode 84 = Down"
xmodmap -e "keycode 79 = Home"
xmodmap -e "keycode 80 = Up"
xmodmap -e "keycode 83 = Left"
xmodmap -e "keycode 85 = Right"
xmodmap -e "keycode 87 = End"
xmodmap -e "keycode 90 = Insert"
xmodmap -e "keycode 91 = Delete"
xmodmap -e "keycode 89 = Next"
xmodmap -e "keycode 81 = Prior"
Run Code Online (Sandbox Code Playgroud)

其中键码是小键盘上的相应键,numlock = off(基本上,我将 KP_Del 替换为 Delete,将 KP_Home 替换为 Home 等 - 不要问为什么))

有人可以帮助找到一种使用 xkb 来做到这一点的方法 - 至少是其中一行吗?在哪里可以找到其他键的“名称”,以便我可以通过示例完成其余的工作?

Rma*_*ano 4

您可以遵循我对类似问题的回答中看到的总体思路;如果您仍然想要布局切换(尽管仍然很糟糕),您应该定义一个新的布局或变体

请注意,用于编辑键盘的复制和修改模板有点难以找到。例如,在我的键盘中,几何形状是“pc105”;这是在 中定义的/usr/share/X11/xkb/symbols/pc。如果你仔细研究一下,它包括

[...]
key <SPCE> {        [        space          ]       };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {        [ BackSpace, BackSpace  ]       };
[...]
Run Code Online (Sandbox Code Playgroud)

键盘在文件中定义/usr/share/X11/xkb/symbols/keypad

[...] 
default  partial hidden keypad_keys
xkb_symbols "x11" {
   include "keypad(operators)"

   key  <KP7> {        [  KP_Home,     KP_7    ]       };
   key  <KP8> {        [  KP_Up,       KP_8    ]       };
[...]
Run Code Online (Sandbox Code Playgroud)

对于按键符号(keysims)的名称,最好的查找位置是在文件中/usr/include/X11/keysymdef.h;您可能需要安装开发包才能使用它(或通过 instaling 安装它x11proto-core-dev):

[...]
/* Cursor control & motion */

#define XK_Home                          0xff50
#define XK_Left                          0xff51  /* Move left, left arrow */
#define XK_Up                            0xff52  /* Move up, up arrow */
[...]
Run Code Online (Sandbox Code Playgroud)

键符号名称是您曾经删除“XK_”字符串的名称。