Python에서 키 누르기 감지

  1. Python에서keyboard 모듈을 사용하여 키 누름 감지
  2. Python에서pynput 모듈을 사용하여 키 누름 감지

키보드와 같은 입력 장치와 같은 하드웨어에 액세스해야하는 경우 Python에서 사용 가능한 모듈이있어 삶을 훨씬 쉽게 만들 수 있습니다. 이러한 모듈을 사용하면 시스템의 복잡성을 처리하지 않고도 원하는 작업을 쉽게 수행 할 수 있습니다.

이 기사에서는 Python의 모듈을 사용하여 키 누르기를 감지하는 방법을 배웁니다. Python에서 키 누르기를 감지하는 데 사용되는 모듈이 많이 있으며 그 중에서 가장 인기 있고 널리 사용되는 두 모듈은keyboardpynput입니다.

Python에서keyboard 모듈을 사용하여 키 누름 감지

keyboard 모듈을 사용하면 키보드를 완전히 제어 할 수 있으며 선택할 수있는 사전 정의 된 다양한 방법이 제공됩니다. 이러한 방법을 사용하면 키보드 작업을 훨씬 쉽게하고 키보드에서 사용자의 물리적 키 누르기를 감지 할 수 있습니다.

keyboard모듈을 설치하려면 명령 프롬프트 또는 터미널에서 아래 명령을 실행하십시오.

pip3 install keyboard

먼저keyboard모듈을 프로그램으로 가져와야합니다. 여기에서는 Python read_key(), is_pressed()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"))

출력:

You pressed p
You pressed q
You pressed r

read_key()는 사용자가 키보드에서 눌렀 던 키를 읽고 원하는 키 (이 경우p) 인 경우You pressed p메시지를 인쇄합니다. read_key()함수는 문자를 반환합니다.

is_pressed()는 문자를 입력으로 취하고 사용자가 누른 키와 일치하면TrueFalse를 반환합니다.

on_press_key()는 두 개의 매개 변수를 입력으로 취합니다. 첫 번째는 문자이고 두 번째는 함수입니다. 사용자가on_press_key()함수의 첫 번째 매개 변수로 지정된 키와 일치하는 키를 누르면 두 번째 매개 변수로 전달한 함수 만 실행됩니다.

Python에서pynput 모듈을 사용하여 키 누름 감지

pynput 모듈은 주로 마우스와 키보드와 같은 입력 장치를 감지하고 제어하는 데 사용됩니다. 그러나이 자습서에서는 키보드에서 키 누르기를 감지하는 데이 모듈을 사용하는 방법 만 볼 수 있습니다. 이 모듈을 사용하기 전에 먼저 아래 명령을 사용하여 설치해야합니다.

pip3 install pynput

이 모듈을 키 누름 감지에 사용하려면 먼저pynput모듈에서Keyboard를 가져와야합니다.

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()

출력:

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

위의 출력은 사용자가 어떤 키를 눌렀는지에 따라 달라질 수 있습니다.

키 누르기를 감지하기 위해on_presson_release의 두 가지 기능을 정의합니다. on_press기능은 사용자가 키보드의 버튼을 누를 때 실행되며 사용자가 해당 버튼을 놓 자마자on_release기능이 실행됩니다.

두 기능 모두 사용자가 눌렀다 놓은 키만 콘솔 창에 인쇄합니다. 요구 사항에 따라이 두 기능의 구현을 변경할 수 있습니다.

그런 다음 마지막에 키보드 이벤트를 수신하는 리스너가 있으며 그에 따라on_presson_release기능을 실행합니다.

관련 문장 - Python Input

  • Python에서 stdin의 입력을 읽는 방법