Клавиатура/мышь Raspberry PI GPIO

Попытка создать очень простой контроллер клавиатуры и мыши, используя контакты GPIO Raspberry Pi. Хотел бы использовать код в образовательной среде, поэтому пытаюсь создать супер простой, читаемый код для детей/студентов. Но код ведет себя несколько странно, он продолжает выводить одни и те же нажатия клавиш:

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. Есть идеи?


person Pieter-Jan    schedule 05.04.2021    source источник


Ответы (1)


Хотя я не очень разбираюсь в GPIO Raspberry, я думаю, что ваш код почти в порядке. Я подозревал, что причина того, что всегда были результаты «Вверх», что означало, что 2-й оператор условия мыши был обходным, вероятно, был связан с тем, что слово «кнопка» не соответствовало модулю, который вы вызвали в первой строке? Ниже приведен тот, который был после использования «Кнопки». Вероятно, когда вы нажали на контакт 17, он прошел через стадию печати, но не смог проникнуть дальше. У него не будет другого выбора, кроме как выбрать первый оператор клавиатуры. Таким образом, все закончилось бы словом «Вверх».

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 - Импорт клавиатуры и мыши

С нетерпением жду вашего обновления.

person Eureka JX    schedule 22.06.2021