Detectar Keypress em Python
-
Detectar KeyPress usando o módulo
keyboard
em Python -
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.
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.
LinkedIn