如何将我的无线键盘作为标准输入分配给 python3 脚本?

How to assign my wireless keyboard as stdin to a python3 script?

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

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

流位于:

/dev/input/event0

正如我所说,如果脚本完全劫持键盘就可以了。

更新

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

好的,我找到了一个非常简单的答案:因为你的系统上已经安装了 python-evdev,你可以在你的 python3 程序中使用这个模块来实现你想要的.将 import evdev 添加到 python3 程序的顶部。然后,你必须首先在你的程序中创建一个 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)

编辑:

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