Detectar Keypress em Python

Sahil Bhosale 10 outubro 2023
  1. Detectar KeyPress usando o módulo keyboard em Python
  2. Detectar KeyPress usando o módulo pynput em Python
Detectar Keypress 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 Bhosale avatar Sahil Bhosale avatar

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

Artigo relacionado - Python Input