HOWTO · Python
Detectar Keypress em Python
Este tutorial fornece uma demonstração de como detectar o pressionamento de teclas em um teclado 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.