启动时启用 Numlock

出自 ArchWiki

控制台

早期启动 (mkinitcpio)

您可以在内核启动后立即在 initramfs 中启用 numlock。这是确保即使在 全盘加密 密码输入期间也启用 numlock 的唯一方法。安装 mkinitcpio-numlockAUR 并在 /etc/mkinitcpio.conf HOOKS 数组中将 numlock mkinitcpio 钩子添加到 encrypt 之前

/etc/mkinitcpio.conf
...
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont numlock block encrypt lvm2 filesystems fsck)
...

然后重新生成 initramfs 以使更改生效。

使用此方法的一个优点是 numlock 设置将在后续的启动过程中被复制,并且新的虚拟控制台将默认启用 numlock。

使用 systemd 服务

提示: 这些步骤可以通过安装 systemd-numlockonttyAUR 软件包和启用 numLockOnTty 服务来自动化完成。

首先安装 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

扩展 getty@.service

这比使用单独的服务更简单,并且不会在脚本中硬编码 VT 的数量。为 getty@.service 创建一个放置片段,这些片段会应用在原始单元之上

/etc/systemd/system/getty@.service.d/activate-numlock.conf
[Service]
ExecStartPre=/bin/sh -c 'setleds -D +num < /dev/%I'
注意: 如果您遇到任何问题,请尝试将 ExecStartPre 替换为 ExecStartPost,和/或禁用如下所述的提示。

要禁用登录屏幕上显示的 numlock 激活提示,编辑 getty@tty1.service 并在 agetty 选项中添加 --nohints

[Service]
ExecStart=
ExecStart=-/sbin/agetty '-p -- \\u' --nohints --noclear %I $TERM

Bash 替代方案

setleds -D +num 添加到 ~/.bash_profile。请注意,与其他方法不同,此方法在您登录后才会生效。

X.org

有多种方法可用。

startx

安装 numlockx 软件包并将其添加到 xinitrc 文件中的任何 exec 语句之前

~/.xinitrc
numlockx &
exec window manager

MATE

默认情况下,MATE 会在注销时保存最后的状态,并在下次登录期间恢复它。要在每次登录时启用 numlock,您必须更改以下 dconf 属性

$ dconf write org.mate.peripherals-keyboard remember-numlock-state false
$ dconf write org.mate.peripherals-keyboard numlock-state 'on'

KDE Plasma

转到系统设置 > 输入和输出 > 键盘,在硬件选项卡中的Plasma 启动时 NumLock 部分,选择所需的 NumLock 行为。

为了使此操作生效,请确保系统设置 > 系统 > 会话 > 后台服务 > 键盘守护程序已启用。

本文或本节的事实准确性存在争议。

原因: 不要使用像“某些版本”这样的不确定术语。(在Talk:Activating numlock on bootup中讨论)
注意: 在某些版本的 KDE Plasma 上,后台服务部分不再可以通过系统设置访问。相反,运行 shell 命令 kcmshell6 kcm_kded(根据您的 kcmshell 版本进行替换)应该会显示此菜单。

GDM

注意: GDM 不再执行 /etc/gdm/Init 中的脚本。

确保您已安装 numlockx,然后将以下代码添加到 ~/.xprofile

if [ -x /usr/bin/numlockx ]; then
    /usr/bin/numlockx on
fi

GNOME

运行以下命令

$ 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

Xfce

在文件 ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml 中,确保以下值设置为 true

~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml
<property name="Numlock" type="bool" value="true"/>
<property name="RestoreNumlock" type="bool" value="true"/>
注意: 如果该文件不存在,请打开设置 > 键盘,然后选中并取消选中启动时恢复 Num Lock 状态。这将创建 keyboards.xml 文件。

SDDM

在文件 /etc/sddm.conf[General] 部分下,设置 Numlock=on

[General]
...
Numlock=on

SLiM

在文件 /etc/slim.conf 中,找到该行并取消注释(删除 #

/etc/slim.conf
numlock             on

OpenBox

在 autostart 文件中,添加

~/.config/openbox/autostart
numlockx &

LightDM

请参阅LightDM#默认启用 NumLock

LXDM

lxdm.conf 中设置选项

/etc/lxdm/lxdm.conf
numlock=1

LXQt

~/.config/lxqt/session.conf 中设置选项

~/.config/lxqt/session.conf
[Keyboard]
numlock=true

Wayland

Sway

请参阅Sway#初始启用 CapsLock/NumLock

Hyprland

~/.config/hypr/hyprland.conf 中设置选项

~/.config/hypr/hyprland.conf
input {
  numlock_by_default = true
  ...
}

使用 KWIN 的 SDDM (KDE Plasma)

/var/lib/sddm/.config/kcminputrc 中设置选项

/var/lib/sddm/.config/kcminputrc
[Keyboard]
NumLock=0