Detect Keypress in Python

Sahil Bhosale Dec 21, 2022 Feb 20, 2021 Python Python Input
  1. Detect KeyPress Using the keyboard Module in Python
  2. Detect KeyPress Using the pynput Module in Python
Detect Keypress in Python

If you need access to the hardware like input devices such as the keyboard, there are modules available in Python which can make your lives much easier. Using such modules, you can easily perform the task you want without dealing with the complexities of the system.

In this article, you will learn how to detect keypress using modules in Python. There are many modules used to detect keypress in Python, and out of which, the two most popular and widely used modules are keyboard and pynput.

Detect KeyPress Using the keyboard Module in Python

The keyboard module allows us to take full control of the keyboard and comes with various predefined methods to choose from. These methods make it much easier for us to work with the keyboard and detect the user’s physical keypresses on the keyboard.

To install the keyboard module, execute the below command inside your command prompt or terminal.

pip3 install keyboard

First, you have to import the keyboard module into the program. Here, we are using three methods to detect keypress in Python read_key(), is_pressed() and on_press_key().

import keyboard

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

while True:
    if keyboard.is_pressed("q"):
        print("You pressed q")
keyboard.on_press_key("r", lambda _:print("You pressed r"))


You pressed p
You pressed q
You pressed r

The read_key() will read which key a user has pressed on the keyboard, and if it’s that key which you wanted, in this case, p, it will print the message You pressed p. The read_key() function returns a character.

The is_pressed() takes a character as an input, and if it matches with the key which the user has pressed, it will return True and False otherwise.

The on_press_key() takes two parameters as an input, the first is the character, and the second is the function. If the user presses the key that matches the key specified as the first parameter of the on_press_key() function, it will only execute the function you have passed in as the second parameter.

Detect KeyPress Using the pynput Module in Python

The pynput module is used to detect and control input devices, mainly mouse and keyboard. But in this tutorial, you will only see how to use this module for detecting keypress on the keyboard. Before using this module, you first have to install it using the command below.

pip3 install pynput

To use this module for detecting keypress, you first have to import keyboard from pynput module.

from pynput import keyboard

def on_press(key):
        print('Alphanumeric key pressed: {0} '.format(
    except AttributeError:
        print('special key pressed: {0}'.format(

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

# Collect events until released
with keyboard.Listener(
        on_release=on_release) as listener:


Alphanumeric key pressed: a 
Key released: 'a' 
Alphanumeric key pressed: b
Key released: 'b'
special key pressed: Key.ctrl_l 
Key released: Key.ctrl_l

Note that the above output may vary depending upon which keys are pressed by the user.

To detect keypress, we are defining two functions, on_press and on_release. The function on_press will be executed when the user will press a button on the keyboard, and as soon as the user releases that button, the on_release function will be executed.

Both functions are only printing the keys pressed and released by the user to the console window. You can change the implementation of these two functions based on your requirements.

Then at the end, we have a Listener that will listen to the keyboard events, and it will execute the on_press and on_release functions accordingly.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.


Related Article - Python Input

  • Read User Input as Integers in Python
  • Python Get User Input With Timeout
  • Take Input of Unspecified Length in Python
  • Simulate Keyboard Inputs in Python
  • Input Multiple Lines in Python