I've searched around to help get me some Python code to monitor the GPIO and trigger a keyboard event based on some IOs being triggered.
This is working good for me, but I'd like to have F1, F12 and Pause keyboard button events being triggered from the GPIO and the uinput doesn't seem to support these keyboard button events.
Is there another way in Python to trigger these keyboard buttons events? Or is uinput the only method of triggering keyboard events? Is there a way in C to get these keyboard events?
Here is my current code:
Code: Select all
import uinput import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) device = uinput.Device([uinput.KEY_P, uinput.KEY_R, uinput.KEY_Q]) # Booleans to keep track of the buttons Pause = False Reset = False Quit = False while True: if (not Pause) and (not GPIO.input(26)): # Pause button pressed Pause = True device.emit(uinput.KEY_P, 1) # press P keyboard button if Pause and GPIO.input(26): # Pause button released Pause = False device.emit(uinput.KEY_P, 0) # P keyboard button released if (not Reset) and (not GPIO.input(20)): # Reset button pressed Reset = True device.emit(uinput.KEY_R, 1) # press R keyboard button if Reset and GPIO.input(20): # Reset button released Reset = False device.emit(uinput.KEY_R, 0) # R keyboard button released if (not Quit) and (not GPIO.input(21)): # Quit button pressed Quit = True device.emit(uinput.KEY_Q, 1) # press Q keyboard button if Quit and GPIO.input(21): # Quit button released Quit = False device.emit(uinput.KEY_Q, 0) # Q keyboard button released time.sleep(0.2)