Detectar Keypress em Python

  1. Detectar KeyPress usando o módulo keyboard em Python
  2. Detectar KeyPress usando o módulo pynput em Python

Se você precisa de acesso ao hardware, como dispositivos de entrada, como o teclado, existem módulos disponíveis em Python que podem tornar sua vida muito mais fácil. Usando esses módulos, você pode executar facilmente a tarefa que deseja, sem lidar com as complexidades do sistema.

Neste artigo, você aprenderá como detectar o pressionamento de teclas usando módulos em Python. Existem muitos módulos usados ​​para detectar o pressionamento de teclas em Python, e dos quais, os dois módulos mais populares e amplamente usados ​​são keyboard e pynput.

Detectar KeyPress usando o módulo keyboard em Python

O módulo keyboard permite-nos assumir o controle total do teclado e vem com vários métodos predefinidos para escolher. Esses métodos tornam muito mais fácil trabalhar com o teclado e detectar os pressionamentos de tecla físicos do usuário no teclado.

Para instalar o módulo keyboard, execute o comando abaixo dentro do seu prompt de comando ou terminal.

pip3 install keyboard

Primeiro, você deve importar o módulo keyboard para o programa. Aqui, estamos usando três métodos para detectar keypress em Python read_key(), is_pressed() e 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"))

Resultado:

You pressed p
You pressed q
You pressed r

A read_key() irá ler qual tecla um usuário pressionou no teclado, e se for aquela tecla que você deseja, neste caso, p, irá imprimir a mensagem You pressed p. A função read_key() retorna um caractere.

O is_pressed() recebe um caractere como entrada e, se corresponder à tecla que o usuário pressionou, retornará True e False caso contrário.

O on_press_key() leva dois parâmetros como uma entrada, o primeiro é o caractere e o segundo é a função. Se o usuário pressionar a tecla que corresponde à tecla especificada como o primeiro parâmetro da função on_press_key(), ele executará apenas a função que você passou como o segundo parâmetro.

Detectar KeyPress usando o módulo pynput em Python

O módulo pynput é usado para detectar e controlar dispositivos de entrada, principalmente mouse e teclado. Mas neste tutorial, você verá apenas como usar este módulo para detectar o pressionamento de teclas no teclado. Antes de usar este módulo, primeiro você deve instalá-lo usando o comando abaixo.

pip3 install pynput

Para usar este módulo para detectar o pressionamento de teclas, você primeiro deve importar keyboard do 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()

Resultado:

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

Observe que a saída acima pode variar dependendo de quais teclas são pressionadas pelo usuário.

Para detectar o keypress, estamos definindo duas funções, on_press e on_release. A função on_press será executada quando o usuário pressionar um botão no teclado, e assim que o usuário soltar esse botão, a função on_release será executada.

Ambas as funções imprimem apenas as teclas pressionadas e liberadas pelo usuário na janela do console. Você pode alterar a implementação dessas duas funções com base em seus requisitos.

Então, no final, temos um Listener que ouvirá os eventos do teclado e executará as funções on_press e on_release de acordo.

Artigo relacionado - Python Input

  • Verifique se a entrada é inteira em Python