Python模拟键盘敲击

Python to simulate keyboard strokes

我可以带一个连接到 raspberry pi (运行 Raspbian) 的运动传感器吗,当传感器触发时它会发送键盘敲击。

我希望键盘敲击可以控制应用程序。

希望在 python 中完成此操作,但不胜感激

是的,您可以检测到运动传感器何时被触发,并使用 python-uinput 模块。

下面的示例 python

import uinput
# set up keystroke input
device = uinput.Device([uinput.KEY_TAB])
while True:
    triggered_sensor = get_sensor_method()
    if triggered_sensor:
        device.emit_click(uinput.KEY_TAB)

这是一个建议,我也没有测试过。 下面的链接可能会帮助您在 python 中搜索替代解决方案。

Generate keyboard events

How to generate keyboard keypress events through Python?

how to open a program in python and send keystrokes?

由于您没有对应用程序说任何话,我假设您没有可能更改它或简单地将它替换为可以通过其他方式接收操作请求的不同应用程序,例如它有一个 CLI。如果您确实有更换应用程序的自由,那么选择基于命令行的东西,并在传感器触发时使用正确的参数执行应用程序。

我还假设接收密钥的应用程序在 rpi 上运行。 使用 xdotool 并进行一些试验,您可以找到一个 window 属性,它唯一地定义了您的应用程序需要接收击键的 GUI 元素。然后,只要发生传感器事件,您就可以使用正确的参数集执行 xdotool。这需要一些努力,但完全可行。

查看此 link,了解在 raspbian 上使用 xdotool 的实际 "project"。

还有一个 dtoverlay 函数,您可以将其添加到 config.txt 文件中,它也可以执行此操作。然而,它有一些并发症。例如,我有一个应该激活退格键的运动检查器,但每次我的运动激活时,我都会出现失控的击键,因此它会反复按下退格键,直到运动再次被激活,然后短暂停止然后再次开始.我通过 运行 通过带有 1k 电阻器的与非门的电路获得了对它的一些控制,但有时当运动检测器所在的房间已经完全空了时,我仍然会收到幻觉击键。它可能是我正在使用的运动审查器,因为它真的很便宜。如果您想知道这里是代码:

    sudo nano /boot/config.txt
    #Add this line at the end
    #Keystroke on PIR
    dtoverlay=gpio-key,gpio=17,keycode=14, 
    label="KEY_BACKSPACE"