跳转到内容

启动时打开数字锁定键

来自 Arch Linux 中文维基

本文或本节需要翻译。要贡献翻译,请访问简体中文翻译团队

附注: 部分内容已经过时(在 Talk:启动时打开数字锁定键# 中讨论)

控制台[编辑 | 编辑源代码]

早期启动 (mkinitcpio)[编辑 | 编辑源代码]

您可以在内核启动后立即在 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 设置将在后续启动过程中被复制,并且新的虚拟控制台将默认开启 numlock。

使用 Systemd 服务[编辑 | 编辑源代码]

提示:安装 systemd-numlockonttyAUR启用 numLockOnTty service 可以替代这些步骤。

首先创造在相关 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 编号。在原始 gettty unit 文件上添加一段扩展:

/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=-/sbin/agetty -o '-p -- \\u' --nohints --noclear %I $TERM

Bash 替代方案[编辑 | 编辑源代码]

setleds -D +num 加入到 ~/.bash_profile. 需要注意的是,不同于其他方法,这种方式将会在你登录后才生效。

X window[编辑 | 编辑源代码]

有许多可选方案:

startx[编辑 | 编辑源代码]

安装 numlockx 包,并将其添加到 ~/.xinitrc xinitrc 文件所有 exec 语句前:

~/.xinitrc
numlockx &
exec window manager

MATE[编辑 | 编辑源代码]

MATE 默认会保存上次启动时的数字键盘状态,要确保每次启动都启用:

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

KDE Plasma 用户[编辑 | 编辑源代码]

系统设置 > 输入设备 > 键盘,硬件选项卡中,包含了 NumLock 行为的配置。

GDM[编辑 | 编辑源代码]

因为numlock-state设置,要更改它,您必须更改相应的dconf键(并以gdm用户身份执行)

# su
# su gdm -s /bin/sh #become gdm user with a shell
sh$ export $(dbus-launch)
sh$ GSETTINGS_BACKEND=dconf gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state on
sh$ exit 
$ systemctl restart gdm
#

GNOME[编辑 | 编辑源代码]

运行下面命令:

 $ gsettings set org.gnome.desktop.peripherals.keyboard numlock-state true

要记住上次的数字键盘状态:

  $ gsettings set org.gnome.desktop.peripherals.keyboard remember-numlock-state true

Xfce[编辑 | 编辑源代码]

~/.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

SDDM[编辑 | 编辑源代码]

/etc/sddm.conf配置文件中, 在[General]部分中添加以下行:

[General]
Numlock=on

SLiM[编辑 | 编辑源代码]

取消文件/etc/slim.conf中如下行的注释(删除#):

#numlock             on

OpenBox[编辑 | 编辑源代码]

在文件 ~/.config/openbox/autostart 中加入如下内容:

numlockx &

LightDM[编辑 | 编辑源代码]

参见 LightDM#NumLock on by default.

LXDM[编辑 | 编辑源代码]

/etc/lxdm/lxdm.conf 中设置:

numlock=1

LXQt[编辑 | 编辑源代码]

~/.config/lxqt/session.conf 中设置:

[Keyboard]
numlock=true

Wayland[编辑 | 编辑源代码]

Sway[编辑 | 编辑源代码]

参见 Sway#初始化启用_CapsLock

Hyprland[编辑 | 编辑源代码]

~/.config/hypr/hyprland.conf 中配置:

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

SDDM with KWIN (KDE Plasma)[编辑 | 编辑源代码]

/var/lib/sddm/.config/kcminputrc 中配置:

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