You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在非root权限下读取树莓派32位Bullseye的USB键盘按键?

无需root权限读取USB键盘输入的方法

方法1:直接读取输入设备文件(推荐)

树莓派上的USB键盘会被识别为/dev/input/event*类设备,而非你提到的ttyUSB(这类是USB转串口设备,和键盘无关)。具体步骤如下:

  1. 定位键盘对应的event设备:

    • 执行ls -l /dev/input/by-id/,找到带kbd或keyboard标识的软链接,它会指向真实的/dev/input/eventX设备文件。
    • 或者运行cat /proc/bus/input/devices,找到包含Keyboards的条目,从中提取对应的eventX路径。
  2. 给当前用户添加input组权限,避免root运行:

    sudo usermod -aG input $USER
    

    执行后需重新登录,权限才会生效。

  3. Python代码实现(使用evdev库):
    先安装依赖库:

    pip install evdev
    

    示例代码:

    from evdev import InputDevice, categorize, ecodes
    
    # 替换为你的键盘event设备路径,比如/dev/input/event0
    dev = InputDevice('/dev/input/event0')
    
    print("等待按键输入...")
    for event in dev.read_loop():
        if event.type == ecodes.EV_KEY:
            key_event = categorize(event)
            # 仅处理按键按下事件(过滤松开动作)
            if key_event.keystate == key_event.key_down:
                print(f"按下按键: {key_event.keycode}")
                # 示例:按ESC键退出程序
                if key_event.keycode == 'KEY_ESC':
                    break
    

关于/dev/tty类设备的说明

/dev/ttyUSB*是USB转串口设备,和USB键盘无关;/dev/tty0至/dev/tty63是系统虚拟终端,无头模式下这类终端通常未激活,直接读取无法获取USB键盘输入,因此不建议采用这种方式。

注意事项

  • 若存在多个输入设备,需确认选中的是键盘对应的event设备,避免读取到鼠标或其他外设的输入。
  • evdev是专门处理Linux输入设备的库,比直接解析原始设备文件更简洁可靠。

内容的提问来源于stack exchange,提问作者Mick Sulley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:22:33