Detectar pulsaciones de teclas en Python

  1. Detectar la pulsación de teclas en Python usando el módulo keyboard en Python
  2. Detectar la pulsación de teclas en Python usando el módulo pynput en Python

Si necesita acceso al hardware como dispositivos de entrada como el teclado, hay módulos disponibles en Python que pueden hacer su vida mucho más fácil. Con dichos módulos, puede realizar fácilmente la tarea que desee sin tener que lidiar con las complejidades del sistema.

En este artículo, aprenderá a detectar pulsaciones de teclas utilizando módulos en Python. Hay muchos módulos que se utilizan para detectar pulsaciones de teclas en Python, y de los cuales, los dos módulos más populares y ampliamente utilizados son keyboard y pynput.

Detectar la pulsación de teclas en Python usando el módulo keyboard en Python

El módulo keyboard nos permite tomar el control total del teclado y viene con varios métodos predefinidos para elegir. Estos métodos nos facilitan mucho el trabajo con el teclado y la detección de las pulsaciones físicas del usuario en el teclado.

Para instalar el módulo keyboard, ejecute el siguiente comando dentro de su símbolo del sistema o terminal.

pip3 install keyboard

Primero, debe importar el módulo keyboard al programa. Aquí, estamos usando tres métodos para detectar pulsaciones de teclas en Python read_key(), is_pressed() y on_press_key().

import keyboard

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

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

Producción:

You pressed p
You pressed q
You pressed r

La read_key() leerá qué tecla ha pulsado un usuario en el teclado, y si es esa tecla la que querías, en este caso, p, imprimirá el mensaje You pressed p. La función read_key() devuelve un carácter.

El is_pressed() toma un carácter como entrada, y si coincide con la tecla que ha presionado el usuario, devolverá True y False en caso contrario.

on_press_key() toma dos parámetros como entrada, el primero es el carácter y el segundo es la función. Si el usuario presiona la tecla que coincide con la tecla especificada como primer parámetro de la función on_press_key(), solo ejecutará la función que ha pasado como segundo parámetro.

Detectar la pulsación de teclas en Python usando el módulo pynput en Python

El módulo pynput se utiliza para detectar y controlar dispositivos de entrada, principalmente mouse y teclado. Pero en este tutorial, solo verá cómo usar este módulo para detectar pulsaciones de teclas en el teclado. Antes de usar este módulo, primero debe instalarlo usando el siguiente comando.

pip3 install pynput

Para utilizar este módulo para detectar pulsaciones de teclas, primero debe importar keyboard desde el módulo pynput.

from pynput import keyboard

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

def on_release(key):
    print('Key released: {0}'.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:
    listener.join()

Producción:

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

Tenga en cuenta que la salida anterior puede variar según las teclas que presione el usuario.

Para detectar la pulsación de teclas, estamos definiendo dos funciones, on_press y on_release. La función on_press se ejecutará cuando el usuario presione un botón en el teclado, y tan pronto como el usuario suelte ese botón, se ejecutará la función on_release.

Ambas funciones solo imprimen las teclas presionadas y liberadas por el usuario en la ventana de la consola. Puede cambiar la implementación de estas dos funciones según sus requisitos.

Luego, al final, tenemos un Listener que escuchará los eventos del teclado y ejecutará las funciones on_press y on_release en consecuencia.

Artículo relacionado - Python Input

  • Comprobar si la entrada es un número entero en Python
  • Ejecutar validación de entrada en Python