无线键盘无法输入

描述

2.4G模式在tty内能正常输入, 但在KDE桌面中无法输入,
有线模式没有问题

键盘为黑爵MK87三模

系统环境

fufu@fufu ~
$ fastfetch
                  -`                     fufu@fufu
                 .o+`                    ---------
                `ooo/                    OS: Arch Linux x86_64
               `+oooo:                   Kernel: Linux 7.0.14-arch1-1
              `+oooooo:                  Uptime: 34 mins
              -+oooooo+:                 Packages: 1085 (pacman)
            `/:-:++oooo+:                Shell: bash 5.3.15
           `/++++/+++++++:               Display (2060W3): 1920x1080 in 20", 60 Hz [External]
          `/++++++++++++++:              DE: KDE Plasma 6.7.2
         `/+++ooooooooooooo/`            WM: KWin (Wayland)
        ./ooosssso++osssssso+`           WM Theme: WhiteSur
       .oossssso-````/ossssss+`          Theme: Breeze (WhiteSurAlt) [Qt]
      -osssssso.      :ssssssso.         Icons: WhiteSur-light [Qt], WhiteSur-light [GTK2/3/4]
     :osssssss/        osssso+++.        Font: Maple Mono (10pt) [Qt], Maple Mono (10pt) [GTK2/3/4]
    /ossssssss/        +ssssooo/-        Cursor: WhiteSur (24px)
  `/ossssso+/:-        -:/+osssso+-      Terminal: konsole 26.4.2
 `+sso+:-`                 `.-/+oso:     CPU: Intel(R) Xeon(R) E5-2666 v3 (20) @ 3.50 GHz
`++:.                           `-/+/    GPU: AMD Radeon RX 580 2048SP [Discrete]
.`                                 `/    Memory: 2.79 GiB / 15.51 GiB (18%)
                                         Swap: 0 B / 19.07 GiB (0%)
                                         Disk (/): 185.22 GiB / 445.73 GiB (42%) - btrfs
                                         Disk (/home/fufu/project): 18.50 GiB / 30.76 GiB (60%) - fuseblk
                                         Disk (/run/media/fufu/_¼Ӿ_): 74.00 KiB / 115.26 MiB (0%) - vfat [External]
                                         Local IP (enp9s0): 192.168.10.2/24
                                         Locale: zh_CN.UTF-8
                                         
                                                            
                                                                 
fufu@fufu ~
$ echo $XDG_SESSION_TYPE
wayland
fufu@fufu ~
$ uname -a
Linux fufu 7.0.14-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 27 Jun 2026 16:15:10 +0000 x86_64 GNU/Linux

lsusb.py -ci 看看

运行时插入的设备:
有线连接的黑爵MK87和2.4g连接的英菲克IN9鼠标

fufu@fufu ~
$ lsusb.py -ci
usb1              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (xhci-hcd 0000:00:14.0) hub
  1-3               7768:642c 00 2IFs [USB 2.00,    12 Mbps, 100mA] (Dongle Inphic IN9 SLE 20240401)
    1-3:1.0           (IF) 03:00:02 1EP  (Mouse) usbhid hidraw0 (hid-generic) input30 input29 (hid-generic) 
    1-3:1.1           (IF) 03:00:00 1EP  (None) usbhid hidraw1 (hid-generic) 
  1-5               2109:2817 09 1IF  [USB 2.10,   480 Mbps,   0mA] (VIA Labs, Inc. USB2.0 Hub) hub
  1-10              0c45:8802 00 4IFs [USB 2.00,   480 Mbps, 500mA] (SONiX. AJAZZ KEYBOARD)
    1-10:1.0          (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw2 (hid-generic) input72 (hid-generic) 
    1-10:1.1          (IF) 03:00:00 1EP  (None) usbhid hidraw3 (hid-generic) input75 input73 input76 input74 (hid-generic) 
    1-10:1.2          (IF) 03:00:00 2EPs (None) usbhid hidraw4 (hid-generic) 
    1-10:1.3          (IF) 03:00:00 2EPs (None) usbhid hidraw5 (hid-generic) 
usb2              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1d.0) hub
  2-1               8087:8002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. 8 channel internal hub) hub
usb3              1d6b:0003 09 1IF  [USB 3.00,  5000 Mbps,   0mA] (xhci-hcd 0000:00:14.0) hub
  3-3               2109:0817 09 1IF  [USB 3.20,  5000 Mbps,   0mA] (VIA Labs, Inc. USB3.0 Hub) hub
usb4              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1a.0) hub
  4-1               8087:800a 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. Hub) hub

运行时插入的设备:
有线连接的一块MAGEGEE键盘和2.4g连接的英菲克IN9鼠标

fufu@fufu ~
$ lsusb.py -ci
usb1              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (xhci-hcd 0000:00:14.0) hub
  1-3               7768:642c 00 2IFs [USB 2.00,    12 Mbps, 100mA] (Dongle Inphic IN9 SLE 20240401)
    1-3:1.0           (IF) 03:00:02 1EP  (Mouse) usbhid hidraw0 (hid-generic) input30 input29 (hid-generic) 
    1-3:1.1           (IF) 03:00:00 1EP  (None) usbhid hidraw1 (hid-generic) 
  1-5               2109:2817 09 1IF  [USB 2.10,   480 Mbps,   0mA] (VIA Labs, Inc. USB2.0 Hub) hub
  1-10              320f:5055 00 2IFs [USB 1.10,    12 Mbps, 400mA] (EVISION USB-STDHID 2020-12-15)
    1-10:1.0          (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw2 (hid-generic) input68 (hid-generic) 
    1-10:1.1          (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw3 (hid-generic) input70 input69 input71 (hid-generic) 
usb2              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1d.0) hub
  2-1               8087:8002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. 8 channel internal hub) hub
usb3              1d6b:0003 09 1IF  [USB 3.00,  5000 Mbps,   0mA] (xhci-hcd 0000:00:14.0) hub
  3-3               2109:0817 09 1IF  [USB 3.20,  5000 Mbps,   0mA] (VIA Labs, Inc. USB3.0 Hub) hub
usb4              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1a.0) hub
  4-1               8087:800a 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. Hub) hub

运行时插入的设备:
一块有线连接的MAGEGEE键盘和2.4g连接的黑爵MK87键盘和2.4g连接的英菲克IN9鼠标

fufu@fufu ~
$ lsusb.py -ci
usb1              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (xhci-hcd 0000:00:14.0) hub
  1-3               7768:642c 00 2IFs [USB 2.00,    12 Mbps, 100mA] (Dongle Inphic IN9 SLE 20240401)
    1-3:1.0           (IF) 03:00:02 1EP  (Mouse) usbhid hidraw0 (hid-generic) input30 input29 (hid-generic) 
    1-3:1.1           (IF) 03:00:00 1EP  (None) usbhid hidraw1 (hid-generic) 
  1-5               2109:2817 09 1IF  [USB 2.10,   480 Mbps,   0mA] (VIA Labs, Inc. USB2.0 Hub) hub
  1-7               0c45:fefc 00 5IFs [USB 2.00,   480 Mbps, 100mA] (HFD HS USB Dongle ^=)
    1-7:1.0           (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw4 (hid-generic) input81 (hid-generic) 
    1-7:1.1           (IF) 03:01:02 1EP  (Mouse) usbhid hidraw5 (hid-generic) input82 (hid-generic) 
    1-7:1.2           (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw6 (hid-generic) input83 (hid-generic) 
    1-7:1.3           (IF) 03:01:00 2EPs (None) usbhid hidraw7 (hid-generic) 
    1-7:1.4           (IF) 03:00:00 2EPs (None) usbhid hidraw8 (hid-generic) 
  1-10              320f:5055 00 2IFs [USB 1.10,    12 Mbps, 400mA] (EVISION USB-STDHID 2020-12-15)
    1-10:1.0          (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw2 (hid-generic) input77 (hid-generic) 
    1-10:1.1          (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw3 (hid-generic) input80 input79 input78 (hid-generic) 
usb2              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1d.0) hub
  2-1               8087:8002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. 8 channel internal hub) hub
usb3              1d6b:0003 09 1IF  [USB 3.00,  5000 Mbps,   0mA] (xhci-hcd 0000:00:14.0) hub
  3-3               2109:0817 09 1IF  [USB 3.20,  5000 Mbps,   0mA] (VIA Labs, Inc. USB3.0 Hub) hub
usb4              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1a.0) hub
  4-1               8087:800a 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. Hub) hub

由DeepSeek提供本解法, 和本文档

:open_book: Linux 下解决 2.4G 无线键盘在 Wayland 下无反应的通用教程

:pushpin: 问题现象

  • 2.4G 无线键盘在 GRUB 界面能用tty 纯终端下能用
  • 但在 Wayland 图形界面(KDE Plasma Wayland、Sway、GNOME Wayland 等)下无法打字
  • 鼠标正常工作(如果是键鼠套装)
  • evtest 能检测到按键事件,但图形界面无反应

:magnifying_glass_tilted_left: 问题原因

**Wayland 合成器对“全键无冲”键盘的多设备报告支持不完善**。

你的键盘会注册为多个输入设备(如 `event4`、`event5`、`event6`),Wayland 的输入管理组件(`
libinput`)可能只抓取了其中一个非键盘设备(如鼠标或多媒体控制),而真正的键盘按键事件被忽
略。

**为什么 tty 能用?**

tty(纯文本终端)直接读取 `/dev/input/event*` 的原始事件,不经过 Wayland/libinput,所以完
全正常。


:hammer_and_wrench: 解决方案:使用 `evsieve` 劫持并转发事件

核心原理

```mermaid
graph LR
A[无线键盘硬件] -->|2.4G信号| B[USB接收器]
B -->|/dev/input/eventX| C[evsieve 劫持]
C -->|创建虚拟键盘| D[/dev/uinput]
D -->|标准键盘事件| E[Wayland 合成器]
E --> F[图形界面正常打字]
```

`evsieve` 从内核层“抢走”你的键盘事件,然后创建一个“标准”的虚拟键盘设备,Wayland 能正常识别
这个虚拟键盘,从而实现打字。


:clipboard: 详细步骤

第一步:安装 evsieve

**Arch Linux / Manjaro(AUR):**

```bash
yay -S evsieve

或 paru -S evsieve

```

**Debian / Ubuntu(需要编译或使用预编译包):**

```bash

安装依赖

sudo apt install build-essential libevdev-dev libudev-dev libconfig-dev

从源码编译

git clone https://github.com/jwrdegoede/evsieve.git
cd evsieve
make
sudo make install
```

**Fedora:**

```bash
sudo dnf install evsieve # 如果仓库有

或从源码编译(同上)

```


第二步:确认键盘设备路径

```bash

安装 evtest(如果没有)

sudo pacman -S evtest # Arch
sudo apt install evtest # Debian/Ubuntu

列出所有输入设备

sudo evtest
```

在列表中**找到你的无线键盘**,通常名称类似 `HFD HS USB Dongle Keyboard` 或 `SONiX. AJAZZ K
EYBOARD`,记下设备路径,例如 `/dev/input/event8`。


第三步:获取固定设备路径(防止重启后变化)

```bash
ls -l /dev/input/by-id/* | grep -i "keyboard\|dongle"
```

找到你的键盘对应的路径,类似:

```
/dev/input/by-id/usb-HFD_HS_USB_Dongle-event-kbd -> ../event8
```

**记下这个完整路径**,例如 `/dev/input/by-id/usb-HFD_HS_USB_Dongle-event-kbd`。


第四步:测试 evsieve 是否有效

```bash
sudo evsieve --input /dev/input/by-id/usb-HFD_HS_USB_Dongle-event-kbd grab --output
```

**注意**:将路径替换为你自己的。

**保持这个终端窗口打开**,然后切换到图形界面,按键盘测试能否打字。

  • :white_check_mark: **如果能打字** → 继续下一步
  • :cross_mark: **如果不能打字** → 检查路径是否正确,或尝试用 `/dev/input/eventX`(X 为实际数字)

按 `Ctrl+C` 停止测试。


第五步:创建 systemd 开机自启服务

```bash
sudo tee /etc/systemd/system/keyboard-forwarder.service << 'EOF'
[Unit]
Description=Forward wireless keyboard events via evsieve
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/evsieve --input /dev/input/by-id/usb-HFD_HS_USB_Dongle-event-kbd grab -
-output
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF
```

**注意**:将 `/dev/input/by-id/usb-HFD_HS_USB_Dongle-event-kbd` 替换为你的实际路径。


第六步:启用并启动服务

```bash
sudo systemctl daemon-reload
sudo systemctl enable keyboard-forwarder.service
sudo systemctl start keyboard-forwarder.service
```


第七步:验证服务状态

```bash
sudo systemctl status keyboard-forwarder.service
```

应该显示 `active (running)`。


第八步:重启测试

```bash
sudo reboot
```

重启后,无线键盘应该自动可用。


:warning: 常见问题排查

问题 解决方法
重启后键盘不能用 `sudo systemctl status keyboard-forwarder.service` 查看服务是否运行;
`sudo journalctl -u keyboard-forwarder.service -f` 查看日志
服务运行但键盘无效 拔掉接收器再插回去,触发设备重新枚举
设备路径错误 重新执行 `ls -l /dev/input/by-id/* | grep dongle` 确认路径,更新服务文件
evsieve 命令不存在 确认已正确安装,或使用 `which evsieve` 查找路径,在服务中用绝对路径
和其他输入设备冲突 注意 `grab` 会独占该设备。如果键盘同时被其他程序读取,会导致冲突。`
grab` 模式确保只有一个程序读取设备

:pushpin: 其他可行的替代方案

方案 优点 缺点
**切换到 X11** 不需要额外软件,100% 兼容 需要注销切换会话
**使用 evsieve** 保留 Wayland,一劳永逸 需要安装配置
**换用 GNOME Wayland** 对键盘兼容性较好 需要换桌面环境
**使用 Python + uinput 脚本** 灵活可控 性能不如 evsieve,需要编程

:bullseye: 总结

本教程的核心思路是:

  1. **确认硬件正常**(tty 或 evtest 验证)
  2. **用 evsieve 劫持键盘事件**(绕过 Wayland 的缺陷)
  3. **创建虚拟键盘**(让 Wayland 正确识别)
  4. **配置 systemd 自启**(持久化)

这个方法适用于所有在 Wayland 下遇到类似问题的 2.4G 无线键盘,特别是**全键无冲(N-Key Rollo
ver)**型号。


**如果本教程对你有帮助,欢迎收藏或分享给遇到同样问题的朋友!** :blush:

莫名其妙地胡扯,libinput哪有那么笨。

现代USB也没那么笨了。旧式全键无冲确实是模拟多个键盘设备,但那在Wayland下应该最多也只会有快捷键不能触发的问题。

你回的那段是deepseek的原话

但在我的电脑上,确实无法在2.4g模式下正常使用,2.4g模式下只能在tty环境正常输入,有线模式没有任何问题

环境就是我最开始给出的环境

deepseek又没法对发言负责。谁发的谁负责——所以我们不建议贴一大堆乱七八糟的LLM输出。如果你使用它解决了问题,你直接说你实际做了什么解决了问题就好了。

我看到了。我还看到了你的LLM给了你调试的方向。我又没有你这种有问题的硬件,没法帮忙调试的。听描述多半是kwin的问题——但是证据呢?

evtest的输出没有、libinput debug-events的输出也没有、wev的输出也没有——我帮你的键盘算命吗?前两者都是能指定输入设备的,所以如果真的是因为有多个设备的问题,那你能看到事件到底在哪个设备上,然后KDE实际上给你发了什么。


昨天忙,估计有其他人也会告诉你如何调试,就打算先等等,看到进一步的结果再说。结果你让你的LLM来拉了坨大的……

抱歉,我对我的行为道歉,对不起

我的问题已经使用evsieve 工具暂时解决了