啟動時打開數字鎖定鍵
您可以在內核啟動後立即在 initramfs 中啟用 numlock。這是確保即使在輸入全盤加密密碼期間 numlock 也開啟的唯一方法。安裝 mkinitcpio-numlockAUR ,並在 /etc/mkinitcpio.conf HOOKS 數組中的 encrypt 之前添加 numlock mkinitcpio 鈎子:
/etc/mkinitcpio.conf
... HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont numlock block encrypt lvm2 filesystems fsck) ...
然後重新生成鏡像以應用更改。
numlock 鈎子在基於 systemd 的 initramfs 上不起作用。這種情況下,可以安裝 mkinitcpio-sd-numlockAUR 並在 initramfs 配置中使用 sd-numlock。使用此方法的優勢在於,numlock 設置將在後續啟動過程中被複製,並且新的虛擬控制台將默認開啟 numlock。
首先安裝 numlockx包。
然後創建在特定 TTY 上設置 numlock 的腳本:
/usr/local/bin/numlock
#!/bin/bash
for tty in /dev/tty{1..6}
do
/usr/bin/setleds -D +num < "$tty";
done
創建好文件後,添加可執行權限,這樣才能運行腳本。
然後創建並啟用 systemd 服務:
/etc/systemd/system/numlock.service
[Unit] Description=numlock [Service] ExecStart=/usr/local/bin/numlock StandardInput=tty RemainAfterExit=yes [Install] WantedBy=multi-user.target
這個方法比使用單獨服務簡單,不需要在腳本中寫入 TTY 編號。在原始 gettty 單元文件上添加一段擴展:
/etc/systemd/system/getty@.service.d/activate-numlock.conf
[Service] ExecStartPre=/bin/sh -c 'setleds -D +num < /dev/%I'
要禁用登錄屏幕上的數字鍵啟用提示,編輯 getty@tty1.service,添加 --nohints 到 agetty 選項:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noreset --nohints --noclear - ${TERM}
將 setleds -D +num 加入到 ~/.bash_profile。需要注意的是,不同於其他方法,這種方式將會在你登錄後才生效。
有許多可選方案:
安裝 numlockx包 包,並將其添加到 xinitrc 文件所有 ~/.xinitrc 語句前:exec
~/.xinitrc
numlockx & exec window manager
MATE 默認會保存上次啟動時的數字鍵盤狀態,要確保每次啟動都啟用:
$ dconf write org.mate.peripherals-keyboard remember-numlock-state false
$ dconf write org.mate.peripherals-keyboard numlock-state 'on'
前往系統設置 > 輸入和輸出 > 鍵盤,在鍵盤標籤頁的 NumLock 在開機時的狀態部分,選擇所需的 NumLock 行為。
要使其生效,請確保系統設置 > 系統 > 會話 > 後台服務 > 鍵盤守護進程已啟用。
kcmshell6 kcm_kded(必要時替換為您的 kcmshell 版本)應該會顯示此菜單。運行下面命令:
$ gsettings set org.gnome.desktop.peripherals.keyboard numlock-state true
要記住上次的 numlock 狀態:
$ gsettings set org.gnome.desktop.peripherals.keyboard remember-numlock-state true
或者也可以將 numlockx on(來自 numlockx包)添加到啟動腳本或 ~/.profile 中。
創建以下 dconf 配置文件:
/etc/dconf/db/gdm.d/90-numlock
[org/gnome/desktop/peripherals/keyboard] remember-numlock-state=true numlock-state=true
根據 gsettings 定義,remember-numlock-state 決定是否記住並恢復上次的 numlock 狀態,而 numlock-state 提供的是上次的 numlock 狀態。mutter 源代碼表明,如果 remember-numlock-state 為 false,則 numlock-state 設置根本不會被觸及,查詢函數將直接返回默認值 false。
若要阻止 GDM 更新 numlock-state 的值(強制一個確定的 numlock 狀態),用 GNOME 指南所述的方式創建一個 locks 目錄並鎖定該鍵,所述:
/etc/dconf/db/gdm.d/locks/numlock
/org/gnome/desktop/peripherals/keyboard/numlock-state
然後運行以下命令:
# dconf update
這是一種通用方法,也同樣適用於 Wayland 上的 GDM。
在 ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml 中確保以下值設定為 true:
<property name="Numlock" type="bool" value="true"/>
<property name="RestoreNumlock" type="bool" value="true"/>
keyboards.xml。在/etc/sddm.conf配置文件中, 在[General]部分中添加以下行:
[General] Numlock=on
取消文件/etc/slim.conf中如下行的注釋(刪除#):
#numlock on
在文件 ~/.config/openbox/autostart 中加入如下內容:
numlockx &
參見 LightDM#NumLock on by default.
在 /etc/lxdm/lxdm.conf 中設置:
numlock=1
在 ~/.config/lxqt/session.conf 中設置:
[Keyboard]
numlock=true
在 ~/.config/hypr/hyprland.conf 中配置:
~/.config/hypr/hyprland.conf
input {
numlock_by_default = true
...
}
創建或編輯 /var/lib/sddm/.config/kcminputrc:
/var/lib/sddm/.config/kcminputrc
[Keyboard] NumLock=0
該文件擁所有者必須為 sddm:sddm。
編輯 /var/lib/plasmalogin/.config/kdedefaults/kcminputrc:
/var/lib/plasmalogin/.config/kdedefaults/kcminputrc
[Keyboard] NumLock=0
該文件的所有者必須為 plasmalogin:plasmalogin。
初始化 xkb_rules 結構體時啟用 numpad:mac 選項:
[dwl_source_root]/config.def.h
static const struct xkb_rule_names xkb_rules = {
.options = "numpad:mac",
};