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

在使用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" 

其中键码是numpad上的相应键,numlock = off(基本上,我用Kd_d替换KP_Del,用Home等替换KP_Home – 不要问为什么))

有人可以帮助找到一种方法来使用xkb – 至少有一行吗? 在哪里可以找到其他键的“名称”,所以我可以通过实例完成其余的工作?

您可以按照我在答案中看到的类似问题的一般想法; 如果你仍然想要布局切换(虽然仍然很破坏 ),你应该定义一个新的布局或变体 。

请注意,要编辑键盘而要复制和修改的模板有点难以找到。 例如,在我的键盘中,几何图形为“pc105”; 这在/usr/share/X11/xkb/symbols/pc 。 如果你研究它,它包括

 [...] key  { [ space ] }; include "srvr_ctrl(fkey2vt)" include "pc(editing)" include "keypad(x11)" key  { [ BackSpace, BackSpace ] }; [...] 

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

 [...] default partial hidden keypad_keys xkb_symbols "x11" { include "keypad(operators)" key  { [ KP_Home, KP_7 ] }; key  { [ KP_Up, KP_8 ] }; [...] 

对于关键符号(keysims)的名称,最好看的是文件/usr/include/X11/keysymdef.h ; 您可能需要安装开发包才能拥有它(或通过安装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 */ [...] 

keysym名称是您删除“XK_”字符串后的名称。