반응형

키보드 입력 감지(후킹) 및 마우스 포인터 이동 예제

글, 오상문 sualchi@daum.net

 

F1~F10 기능 키가 눌리면 그 키를 글자로 출력합니다.

w, s, a, d 키가 눌리면 마우스 포인터를 상하좌우로 이동합니다.

다른 윈도우나 다른 프로그램에서 눌린 경우에도 동작합니다.

예제 코드는 다음과 같습니다.

 

import keyboard             # 키보드 입력 감지

import pyautogui as auto  # 마우스 포인터 이동
import time                    # 시간 지연
  
while True:          # 무한반복
    try:
        if keyboard.is_pressed('f1'):   # F1 키가 눌렸으면
            print("F1")                       # 글자 출력하고
            time.sleep(0.1)                # 0.1초 기다림
        elif keyboard.is_pressed('f2'):
            print("F2")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f3'):
            print("F3")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f4'):
            print("F4")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f5'):
            print("F5")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f6'):
            print("F6")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f7'):
            print("F7")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f8'):
            print("F8")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f9'):
            print("F9")           
            time.sleep(0.1)
        elif keyboard.is_pressed('f10'):
            print("F10")           
            time.sleep(0.1)            
        elif keyboard.is_pressed('w'):  # 'w' 키가 눌렸으면
            print("w")             
            auto.move(0, -10)   # 마우스 포인터를 위로 이동
            time.sleep(0.1)            
        elif keyboard.is_pressed('a'):
            print("a")              
            auto.move(-10, 0)  # 마우스 포인터를 왼쪽으로 이동
            time.sleep(0.1)            
        elif keyboard.is_pressed('s'):
            print("s")              
            auto.move(0, 10)   # 마우스 포인터를 아래로 이동
            time.sleep(0.1)            
        elif keyboard.is_pressed('d'):
            print("d")               
            auto.move(10, 0)   # 마우스 포인터를 오른쪽으로 이동 
            time.sleep(0.1)            
        else:
            pass
    except:
        pass

 

공식 레퍼런스에서는 앞에서 처리한 구조는 좋지 않다고 합니다(CPU 자원 소모). 다음 두 방법 중에서 하나를 사용하라고 합니다.

 

while True:

    keyboard.wait('space')

    print('space was pressed! Waiting on it again...')

 

또는

 

keyboard.add_hotkey('space', lambda: print('space was pressed!'))

keyboard.wait()

 

공식 레퍼런스 참조: https://github.com/boppreh/keyboard#api

 

<이상>

반응형

+ Recent posts