From 414cd61569403c4ff646dcbe558326abd1569e3b Mon Sep 17 00:00:00 2001 From: dbarzin Date: Tue, 14 Mar 2023 15:04:30 +0100 Subject: [PATCH] work on wait key --- tests/mouse-click-or-key.py | 62 +++++++++++++++++++++++++++++++++++++ tests/wait-key.py | 18 +++++++++++ 2 files changed, 80 insertions(+) create mode 100755 tests/mouse-click-or-key.py create mode 100755 tests/wait-key.py diff --git a/tests/mouse-click-or-key.py b/tests/mouse-click-or-key.py new file mode 100755 index 0000000..365333e --- /dev/null +++ b/tests/mouse-click-or-key.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +import os +import sys +import time + +from threading import Thread, Event, Condition + +mouseEvent = Event() +enterEvent = Event() +mouseOrEnterCondition = Condition() + + +def mouseClickThread(): + mouse = open("/dev/input/mice", "rb") + os.set_blocking(mouse.fileno(), False) + + down = False + while not enterEvent.is_set(): + buf = mouse.read(3) + if not (buf is None): + if ((buf[0] & 0x1) == 1): + down = True + if (((buf[0] & 0x1) == 0) and down): + break + time.sleep(0.5) + mouse.close() + + mouseEvent.set() + with mouseOrEnterCondition: + mouseOrEnterCondition.notify() + + +def enterKeyThread(): + os.set_blocking(sys.stdin.fileno(), False) + + while not mouseEvent.is_set(): + input = sys.stdin.readline() + if (len(input) > 0): + break + time.sleep(0.5) + + enterEvent.set() + with mouseOrEnterCondition: + mouseOrEnterCondition.notify() + + +def waitMouseOrEnter(): + print("Wait mouse click or enter") + with mouseOrEnterCondition: + Thread(target=mouseClickThread, args=()).start() + Thread(target=enterKeyThread, args=()).start() + + mouseEvent.clear() + enterEvent.clear() + while not (mouseEvent.is_set() or enterEvent.is_set()): + mouseOrEnterCondition.wait() + + print("Done.") + + +waitMouseOrEnter() diff --git a/tests/wait-key.py b/tests/wait-key.py new file mode 100755 index 0000000..2427564 --- /dev/null +++ b/tests/wait-key.py @@ -0,0 +1,18 @@ +#!/usr/bin/python3 + +import curses + +screen = curses.initscr() +screen.keypad(1) +curses.curs_set(0) +curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) +curses.flushinp() +curses.noecho() +screen.clear() + +screen.addstr(1, 0, "Press any key") + +screen.getch() + +curses.endwin() +curses.flushinp()