I am trying so setup a script that will execute an [ESC] when a button is pushed (wired to the GPIO). I have tried writing a bash script using xdotool to no avail and have now switched gears to a python script using uinput. Here is my script:
#!/usr/bin/env python
import RPi.GPIO as GPIO
import os
import time
import uinput
#Setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(6, GPIO.IN)
KEY_EVENTS = (uinput.KEY_ESC, uinput.KEY_X)
DEVICE = uinput.Device(KEY_EVENTS)
while True:
GPIO.wait_for_edge(6, GPIO.FALLING)
print("Button pressed...")
start_time = time.time()
GPIO.wait_for_edge(6, GPIO.RISING)
time_pressed = time.time() - start_time
if time_pressed < 6:
print("[ESC] key sent")
DEVICE.emit_click(uinput.KEY_ESC)
else:
print("Power down")
GPIO.cleanup()
os.system("sudo reboot")
time.sleep(2)
After the pi boots, I exit the emulator and run
./myscript.py $
Then restart the emulator, load a ROM, and push my little black button. You’re not gonna believe this but, the damn thing doesn’t work. If I hit the [ESC] on my keyboard, I get back to the menu without fail. I know the input logic is working because I can see the returned output lines in the terminal window, and the logic that drives rebooting if the button is pushed for more that 6 secs works well. Any help here would be appreciated.