Untitled

 avatar
unknown
plain_text
4 months ago
2.0 kB
3
Indexable
from keyboard import on_press_key, wait
import threading
import subprocess
import time

# Variable to store valid keys
valid_keys = {"7", "8", "9", "4"}
# Variable to track if a script is running
script_running = False

# Function to handle keypress events
def on_press(key):
    global script_running
    try:
        if script_running:
            return  # Ignore keypresses while a script is running

        if key in valid_keys:  # Check if the key is valid
            print(f"Valid key pressed: {key}")
            script_running = True

            # Map keys to specific Python scripts and arguments
            script_mapping = {
                "7": ("Surroundings.py", []),
                "8": ("Read_Text.py", []),
                "9": ("Read_Text.py", ["-a"]),
                "4": ("Audio.py", []),
            }

            # Get the script and arguments for the pressed key
            script_to_run, script_args = script_mapping[key]
            print(f"Running script: {script_to_run} with arguments: {script_args}")

            # Run the corresponding script with arguments
            subprocess.run(["python", script_to_run] + script_args)  # Blocking call

            # Mark as not running after the script ends
            script_running = False
    except AttributeError:
        pass  # Ignore special keys like Shift, Ctrl, etc.

def on_release(key):
    global script_running
    if script_running:
        return False  # Stop listener

# Function to start listening for keypresses
def start_listener():
    for key in valid_keys:
        on_press_key(key, lambda e, k=key: on_press(k))
    wait()

# Start the listener in a background thread
listener_thread = threading.Thread(target=start_listener, daemon=True)
listener_thread.start()

# Main program doing other tasks
try:
    while True:
        time.sleep(1)  # Simulate work
except KeyboardInterrupt:
    print("\nExiting program.")
Editor is loading...
Leave a Comment