Search on blog:

Python: Jak użyć pynput do sprawdzenie czy wciśnięto frazę z kilku znaków

Niektóre moduły mają funkcję do przechwycenia pojedyńczego znaku i wywołania funkcji ale nie mają one funkcji do sprawdzenia czy wciśnieto ciąg znaków tworzących pewną frazę.

Oto przykład użycia pynput Listener do przechwycenia wszytkich wciśniętych znaków i trzymania ich w stringu - co pozwala sprawdzić czy kilka ostatnich znaków nie tworzą szukaną frazę. Ale przykład nie sprawdza czy fraza nie jest częścią dłuższej frazy.

from pynput import keyboard

# keep all chars in global variable
all_keys = ""

def on_press(key):
    global all_keys

    try:
        all_keys += key.char

        if all_keys.endswith("open me"):
            print("I open Sesame")

    except AttributeError:
        #print('special key {0} pressed'.format(key))

        # space doesn't have `key.char`
        if key == keyboard.Key.space:
            all_keys += ' '

def on_release(key):
    #print('{0} released'.format(key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False

# Collect events until released
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    # ... other code ...
    listener.join()

Pod Linux jest program napisany w Pythonie AutoKey, który potrafi wychwycić tekst (frazę) i zamienić na inny tekst (czyli "rozwija tekst").

On Windows there is similar program but not in Python AutoHotKey and it is even more powerful then AutoKey because it can use combination of keys with mouse buttons.

Oba mogą być przydatne to szybkiego wstawiania kodu na podstawie skrótu tekstowego (tak zwane snipety).


Notatki:

pynput: Monitoring the keyboard

Wikipedia: AutoHotKey

GitHub: AutoHotKey

If you like it
Buy a Coffee