Raspberry PI GPIO 键盘/鼠标输入

时间:2021-04-05 20:40:21

标签: pi pynput gpiozero

尝试使用 Raspberry Pi 的 GPIO 引脚创建非常简单的键盘和鼠标控制器。希望在教育环境中使用该代码,因此尝试为儿童/学生构建超级简单、易读的代码。但是代码表现得有些奇怪,它不断输出相同的击键:

import gpiozero
from pynput.mouse import Button, Controller as MouseController
from pynput.keyboard import Key, Controller as KeyboardController

keyboard = KeyboardController()
mouse = MouseController()

Up = gpiozero.Button(26, bounce_time=0.02)
LeftMouse = gpiozero.Button(17, bounce_time=0.02)

while True:
    if Up.is_pressed:
        print("Up")
        keyboard.press(Key.up)
        Up.wait_for_release()
        keyboard.release(Key.up)
    
    elif LeftMouse.is_pressed:
        print("Left Mouse button")
        mouse.press(button.left)
        LeftMouse.wait_for_release()
        mouse.release(button.left)

使用 Python 3.7.3。无论我触发哪个 GPIO(26 或 17),代码总是输出“向上”并按下键盘“向上”按钮。这一定是愚蠢的事情,但我似乎无法弄清楚。很想继续使用 if/elif,以便我稍后可以使用更多 GPIO 按钮扩展代码。有人知道吗?

1 个答案:

答案 0 :(得分:0)

虽然我对树莓派的GPIO不是很熟悉,但我觉得你的代码几乎没问题。我怀疑总是有“向上”结果的原因,这意味着第二个鼠标条件语句被绕过,可能是由于“按钮”一词与您在第一行中调用的模块不一致?下面是在整个使用“按钮”之后的一个。可能当您触发引脚 17 时,它确实通过了打印阶段,但无法进一步穿透。它只能选择第一个键盘语句。所以,它会一直以“Up”结束。

from pynput.mouse import Button, Controller as MouseController
    
    elif LeftMouse.is_pressed:
        print("Left Mouse button")
        mouse.press(Button.left)
        LeftMouse.wait_for_release()
        mouse.release(Button.left)

我还发现以下链接非常有用,可以确保正确导入和定义包。 pynput - Importing keyboard and mouse

期待收到您的更新。