啟動時打開數字鎖定鍵 - 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",
    };

分類：​

- 啟動過程
- 鍵盤

隱藏分類：​

- 使用「模板:準確性」標記的頁面或章節

啟動時打開數字鎖定鍵
新增話題