启动时打开数字锁定键 - Arch Linux 中文维基

跳转到内容

# 启动时打开数字锁定键

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Activating numlock on bootup，最近一次同步于 2026-05-03，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

## 控制台

### 早期启动 (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` 钩子在基于 systemd 的 initramfs 上不起作用。这种情况下，可以安装 mkinitcpio-sd-numlockAUR 并在 initramfs 配置中使用 `sd-numlock`。

使用此方法的优势在于，numlock 设置将在后续启动过程中被复制，并且新的虚拟控制台将默认开启 numlock。

### 使用 systemd 服务

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

原因： numlockx 只能用于 X11，不能用于 Wayland。（在 en:Talk:Activating numlock on bootup 中讨论）

提示：安装 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

这个方法比使用单独服务简单，不需要在脚本中写入 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}

### Bash 替代方案

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

## X.org

有许多可选方案：

### 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 在开机时的状态部分，选择所需的 NumLock 行为。

要使其生效，请确保系统设置 > 系统 > 会话 > 后台服务 > 键盘守护进程已启用。

注意：如果在 KDE Plasma 中无法通过系统设置访问后台服务部分，运行 shell 命令 `kcmshell6 kcm_kded`（必要时替换为您的 kcmshell 版本）应该会显示此菜单。

### 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` 中。

### GDM

创建以下 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。

### 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#启动时启用 NumLock。

### Hyprland

在 `~/.config/hypr/hyprland.conf` 中配置：

    ~/.config/hypr/hyprland.conf

    input {
      numlock_by_default = true
      ...
    }

### Labwc

参见 Labwc#启动时启用 numlock（英语：Labwc#Activating numlock on startup）。

### SDDM 启动 KWin（KDE Plasma）

创建或编辑 `/var/lib/sddm/.config/kcminputrc`：

    /var/lib/sddm/.config/kcminputrc

    [Keyboard]
    NumLock=0

该文件拥所有者必须为 `sddm:sddm`。

### Plasma 登录管理器

编辑 `/var/lib/plasmalogin/.config/kdedefaults/kcminputrc`：

    /var/lib/plasmalogin/.config/kdedefaults/kcminputrc

    [Keyboard]
    NumLock=0

该文件的所有者必须为 `plasmalogin:plasmalogin`。

### DWL

初始化 `xkb_rules` 结构体时启用 `numpad:mac` 选项：

    [dwl_source_root]/config.def.h

    static const struct xkb_rule_names xkb_rules = {
      .options = "numpad:mac",
    };

分类：​

- 启动过程
- 键盘

隐藏分类：​

- 使用“模板:准确性”标记的页面或章节

启动时打开数字锁定键
添加话题