### controller.py ### Author: Matthew Reed import sys import time import signal import logging import threading import configparser from enum import Enum from evdev import InputDevice, categorize, ecodes import asyncio from select import select class Controller: def __init__(self, config): self.config = config self.connect() def connect(self): try: self.dev = InputDevice('/dev/input/event0') except FileNotFoundError: self.dev = None except PermissionError: self.dev = None def read_input(self): if self.dev == None: self.connect() events = [] if self.dev != None: try: for event in self.dev.read(): events.append(event) except BlockingIOError: pass except OSError: self.dev = None return events