python – How to detect key presses?

python – How to detect key presses?

Python has a keyboard module with many features. Install it, perhaps with this command:

pip3 install keyboard

Then use it in code like:

import keyboard  # using module keyboard
while True:  # making a loop
    try:  # used try so that if user pressed other than the given key error will not be shown
        if keyboard.is_pressed(q):  # if key q is pressed 
            print(You Pressed A Key!)
            break  # finishing the loop
    except:
        break  # if user pressed a key other than the given key the loop will break

For those who are on windows and were struggling to find an working answer heres mine: pynput

from pynput.keyboard import Key, Listener

def on_press(key):
    print({0} pressed.format(
        key))

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

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

The function above will print whichever key you are pressing plus start an action as you release the esc key. The keyboard documentation is here for a more variated usage.

Markus von Broady highlighted a potential issue that is: This answer doesnt require you being in the current window to this script be activated, a solution to windows would be:

from win32gui import GetWindowText, GetForegroundWindow
current_window = (GetWindowText(GetForegroundWindow()))
desired_window_name = Stopwatch #Whatever the name of your window should be

#Infinite loops are dangerous.
while True: #Dont rely on this line of code too much and make sure to adapt this to your project.
    if current_window == desired_window_name:

        with Listener(
            on_press=on_press,
            on_release=on_release) as listener:
            listener.join()

python – How to detect key presses?

More things can be done with keyboard module.
You can install this module using pip install keyboard
Here are some of the methods:


Method #1:

Using the function read_key():

import keyboard

while True:
    if keyboard.read_key() == p:
        print(You pressed p)
        break

This is gonna break the loop as the key p is pressed.


Method #2:

Using function wait:

import keyboard

keyboard.wait(p)
print(You pressed p)

It will wait for you to press p and continue the code as it is pressed.


Method #3:

Using the function on_press_key:

import keyboard

keyboard.on_press_key(p, lambda _:print(You pressed p))

It needs a callback function. I used _ because the keyboard function returns the keyboard event to that function.

Once executed, it will run the function when the key is pressed. You can stop all hooks by running this line:

keyboard.unhook_all()

Method #4:

This method is sort of already answered by user8167727 but I disagree with the code they made. It will be using the function is_pressed but in an other way:

import keyboard

while True:
    if keyboard.is_pressed(p):
        print(You pressed p)
        break

It will break the loop as p is pressed.


Method #5:

You can use keyboard.record as well. It records all keys pressed and released until you press the escape key or the one youve defined in until arg and returns a list of keyboard.KeyboardEvent elements.

import keyboard

keyboard.record(until=p)
print(You pressed p)

Notes:

  • keyboard will read keypresses from the whole OS.
  • keyboard requires root on linux

Leave a Reply

Your email address will not be published. Required fields are marked *