Detecting Key Presses on Raspberry Pi 4

How to Monitor Keyboard Inputs Using Raspberry Pi 4

What will you learn?

In this tutorial, you will discover how to capture key presses using a Raspberry Pi 4. Learn how to interact with your projects in an exciting new way by detecting and responding to keyboard inputs.

Introduction to the Problem and Solution

When working on projects that require human interaction, such as controlling robots or navigating menus, detecting key presses becomes essential. This is especially true when utilizing a Raspberry Pi 4 for your projects.

To address this need, we turn to Python for its simplicity and robust libraries that facilitate hardware interaction. Our solution involves monitoring keyboard events and responding within our Python script. This approach not only streamlines the process but also unlocks a realm of possibilities for interactive project development.


import keyboard

def on_key_press(event):
    print(f"Key {} pressed")

# Hook the callback function to every key press event

# Keep the program running.

# Copyright PHD


The code snippet above demonstrates how straightforward it is to detect key presses with Python on a Raspberry Pi 4:

  1. Import the keyboard module to easily handle keyboard events.
  2. Define the on_key_press function to specify the action when a key is pressed (printing the name of the pressed key).
  3. Utilize keyboard.on_press(on_key_press) to trigger the on_key_press function upon any key press.
  4. Use keyboard.wait(‘esc’) to ensure the script continues running until the Escape key is pressed, preventing immediate script termination.

No root privileges are typically required for most keys, except for certain special keys like volume controls.

  1. Can I use this method without installing additional modules?

  2. No, you need to install the keyboard module via pip: pip install keyboard.

  3. Is it possible to detect combination keys (e.g., Ctrl+C)?

  4. Yes! The keyboard module allows you to check for combinations as well: if == ‘c’ and keyboard.is_pressed(‘ctrl’):.

  5. Does this work on all versions of Raspberry Pi?

  6. While specifically written for Raspberry Pi 4, this code should work across different versions with similar capabilities.

  7. Can I make this run at startup?

  8. Certainly! You can add your script to /etc/rc.local or set up a systemd service for automatic execution during boot.

  9. What if I want my program do more than just print keys?

  10. You have full flexibility in modifying the on_key_press function�execute commands over GPIO pins, trigger other scripts, etc.

  11. Will pressing ‘Esc’ always stop my program?

  12. In this example yes because we’ve used keyboard.wait(‘esc’). Customize as needed for alternative exit strategies!


By now, you have gained insights into effortlessly capturing keystrokes using Python on your Raspberry Pi. Whether it’s steering robots or navigating interfaces, these few lines of code empower you with endless possibilities. Explore further functionalities provided by the keyboard library for enhanced project interactivity!

Leave a Comment