So this is going to be a bit confusing but using a basic loop i can detect keyboard and mouse inputs using the following:
globals()['keyboardEvent'] = evdev.InputDevice('/dev/input/event0')
globals()['mouseEvent'] = evdev.InputDevice('/dev/input/event1')
async def print_events(device):
global x, y #must be inside of loop or else nonlocal error is thrown
left_click = 0
right_click = 0
currentClick = " "
x = 0 #defines the start of x
y = 0 #defines the start of y
z = 5 #defines up and down axis
async for event in device.async_read_loop():
if (event.code == 8): #scrollbar
print("you are scrolling")
z += event.value
if event.type == ecodes.EV_REL: #if the event is a mouse moving
if event.code == ecodes.REL_X: #chechking for x direction
print("REL_X", event.value)
x += event.value #advance the cursor position
if event.code == ecodes.REL_Y: #checking for y direction
print("REL_Y", event.value)
y += event.value * -1
print(x, y)
if event.type == ecodes.EV_KEY: #if the event is a button click
c = categorize(event)
if c.keystate == c.key_down:
print(c.keycode)
for device in globals()['keyboardEvent'] , globals()['mouseEvent']:
asyncio.ensure_future(print_events(device))
loop = asyncio.get_event_loop()
loop.run_forever()
now if i do not move the mouse nothing in this loop runs. My question is how can i program a statement to account for this so i can use time.time() to say if no event in 60 seconds print hello. This is probably really easy but no answer online and i cant think of a logical way to do this.