X11

禁用 num lock 指示燈 LED 或反向鍵盤,因此當 num lock 開啟時,指示燈熄滅

  • March 11, 2019

我正在使用帶有 Xfce 的 Debian 測試/拉伸。我剛買了這個有線鍵盤。我希望預設打開數字鎖,但我不想讓 LED 指示燈亮起。這可以通過完全禁用 num lock 指示器、反轉狀態(當 num lock 關閉時顯示指示燈)來完成,或者可以將所有 num-lock-off 鍵重新映射為鍵入數字(這樣我可以指示燈亮或滅時輸入數字)。setleds -L -num有效,但僅在 tty 會話中有效。謝謝

如果“預設打開數字鎖定”表示“預設打開數字鍵盤上的鍵”並且您不想/不關心鍵盤上的導航:

setxkbmap -option numpad:mac <layout>

所以對於us佈局:

setxkbmap -option numpad:mac us

現在小鍵盤總是輸入數字,無論數字鎖定狀態如何。

參考:xkeyboard-config 手冊頁

您可以反轉 Num Lock 的含義。使用 Xmodmap,將其放入您的.Xmodmap.

keycode  79 = KP_Home KP_7 KP_Home KP_7 KP_Home KP_7 KP_Home KP_7
keycode  80 = KP_Up KP_8 KP_Up KP_8 KP_Up KP_8 KP_Up KP_8
keycode  81 = KP_Prior KP_9 KP_Prior KP_9 KP_Prior KP_9 KP_Prior KP_9
keycode  83 = KP_Left KP_4 KP_Left KP_4 KP_Left KP_4 KP_Left KP_4
keycode  84 = KP_Begin KP_5 KP_Begin KP_5 KP_Begin KP_5 KP_Begin KP_5
keycode  85 = KP_Right KP_6 KP_Right KP_6 KP_Right KP_6 KP_Right KP_6
keycode  87 = KP_End KP_1 KP_End KP_1 KP_End KP_1 KP_End KP_1
keycode  88 = KP_Down KP_2 KP_Down KP_2 KP_Down KP_2 KP_Down KP_2
keycode  89 = KP_Next KP_3 KP_Next KP_3 KP_Next KP_3 KP_Next KP_3
keycode  90 = KP_Insert KP_0 KP_Insert KP_0 KP_Insert KP_0 KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal KP_Delete KP_Decimal KP_Delete KP_Decimal KP_Delete KP_Decimal

您可能需要添加xmodmap ~/.Xmodmap到您的啟動應用程序中,我不確定 Xfce 是否預設執行此操作。

這樣做的好處是在大多​​數情況下,您不會啟用 NumLock。一些程序在使用 NumLock 時遇到問題,因為他們認為它是一個修飾符,這會導致他們的鍵盤快捷鍵在它打開時不起作用。

如果您從不關閉 NumLock,您可以在使用 NumLock 鍵時禁用它。

keycode 77 = NoSymbol

如果你喜歡痛苦,你可以用 XKB 代替。這是我的配置,它有效地使 NumLock 始終打開。創建一個~/.xkb/types/mytypes包含

// Digits without NumLock, cursor with NumLock. Shift swaps the meaning.
// Do it this way because I almost always want digits, but the NumLock state
// breaks key bindings in some applications.
partial xkb_types "invert_numlock" {
 type "KEYPAD" {
   modifiers = Shift+NumLock;
   map[None] = Level2;
   map[Shift] = Level1;
   map[NumLock] = Level1;
   map[Shift+NumLock] = Level2;
   level_name[Level1] = "Base";
   level_name[Level2] = "Number";
 };
 include "extra(keypad)"
};

創建一個包含以下內容的文件~/.xkb/symbols/mysymbols

partial xkb_symbols "mykeypad" {
   key  <KP7> {         [            KP_7,         KP_Home ] };
   key  <KP8> {         [            KP_8,           KP_Up ] };
   key  <KP9> {         [            KP_9,        KP_Prior ] };
   key  <KP4> {         [            KP_4,         KP_Left ] };
   key  <KP5> {         [            KP_5,        KP_Begin ] };
   key  <KP6> {         [            KP_6,        KP_Right ] };
   key  <KP1> {         [            KP_1,          KP_End ] };
   key  <KP2> {         [            KP_2,         KP_Down ] };
   key  <KP3> {         [            KP_3,         KP_Next ] };
   key  <KP0> {         [            KP_0,       KP_Insert ] };
   key <KPDL> {         [      KP_Decimal,       KP_Delete ] };
};

作為 X 初始化啟動的一部分執行以下 shell 命令(setxkbmap根據需要向呼叫添加其他選項):

setxkbmap -types "complete+mytypes(invert_numlock)" \
         -symbols "us+compose(menu)+mysymbols(mykeypad)" \
         -print | xkbcomp -I ~/.xkb - "$DISPLAY"

引用自:https://unix.stackexchange.com/questions/337647