使用 setxkbmap 進行簡單的重新映射(類似於 xmodmap)

使用 setxkbmap 進行簡單的重新映射(類似於 xmodmap)

使用 xmodmap 重新映射鍵盤後,我遇到了一些問題:應用後 2-20 分鐘設定會隨機重置。 Google搜尋但沒有幫助:有些東西重置了它們,但所有提到的內容都適用於 xfce,而我使用的是通常的 14.04 Ubuntu with unity。

我看到類似“使用 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"

其中鍵碼是小鍵盤上的對應鍵,numlock = off(基本上,我將 KP_Del 替換為刪除,KP_Home 替換為 Home 等 - 不要問為什麼))

有人可以幫助找到使用 xkb 來做到這一點的方法 - 至少其中一行嗎?在哪裡可以找到其他鍵的“名稱”,以便我可以通過示例完成其餘的操作?

答案1

您可以遵循中看到的整體思路我對類似問題的回答;如果你仍然想要佈局切換(儘管還是很破) 你應該定義新的佈局或變體

請注意,用於編輯鍵盤的複製和修改模板有點難以找到。例如,在我的鍵盤中,幾何形狀是“pc105”;這是在 中定義的/usr/share/X11/xkb/symbols/pc。如果你仔細觀察的話,它包括

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

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

key <BKSP> {        [ BackSpace, BackSpace  ]       };
[...]

鍵盤在檔案中定義/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    ]       };
[...]

對於按鍵符號(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 */
[...]

鍵符號名稱是您曾經刪除“XK_”字串的名稱。

相關內容