首页 > 解决方案 > 如何将我的无线键盘作为标准输入分配给 python3 脚本?

问题描述

我有一个连接到树莓派的无线键盘。现在,当我启动 Pi 时,键盘将在登录提示符处“挂起”。

整个设置是无头的,我想将键盘分配给通过 SystemD 同时运行的 python3 脚本。

流位于:

/dev/input/event0

正如我所说,如果脚本完全劫持了键盘,那很好。

更新

我的另一个选择是在启动时简单地启动我的程序,而不是默认的 shell 提示符。这将确保它具有键盘的“焦点”。

标签: python-3.xbluetoothkeyboardstdinsystemd

解决方案


好的,我找到了一个非常简单的答案:因为你的系统上已经安装了 python-evdev,你可以在你的 python3 程序中使用这个模块来实现你想要的。添加import evdev到 python3 程序的顶部。然后,您必须在程序中使用as 参数(键盘的路径)创建evdev.device.InputDevice第一件事。"/dev/input/event0"然后,调用evdev.device.InputDevice.grab,它应该完成!我没有你的程序的代码,但我写了一个小示例程序:

import evdev, sys

if __name__ == "__main__":
    dev = evdev.device.InputDevice("/dev/input/event0")
    try:
        dev.grab()
    except IOError:
        print("error : /dev/input/event0 has already been grabbed")
        sys.exit(1)
    else:
        count = 0
        while count <= 100:
            instr = input("Enter something : ")
            print("You entered : " + instr)
            count += 1
        try:
            dev.ungrab() # important : free your keyboard when the script exits !
        except IOError:
            print("error : /dev/input/event0 has already been released")
            sys.exit(1)

编辑:

我发现上面的示例程序不会自动捕获击键并为您提供文本。您必须手动执行此操作,可以在此处找到示例


推荐阅读