본문 바로가기
프로그래밍/Python

[Python] 파이썬 키보드 제어하는 방법 (PyAutoGUI 라이브러리 이용)

by _BlankSpace 2019. 6. 23.

이전 포스팅으로 PyAutoGUI 라이브러리를 이용하여 파이썬에서 마우스를 제어하는 방법을 포스팅하였습니다. 혹시, 궁금하신 분들은 아래 글을 참고해주세요.

[Python] 파이썬 마우스 제어하는 방법 (PyAutoGUI 라이브러리 이용)

 

메시지 박스 출력 및 스크린샷 기능을 사용하는 방법도 포스팅하였으니, 관심 있는 분은 아래 글을 참고해주세요.

[Python] 파이썬 메시지 박스 및 스크린샷하는 방법 (PyAutoGUI 라이브러리 이용)

 

PyAutoGUI 라이브러리를 사용하면 키보드 제어도 굉장히 간단하다고 할 수 있습니다.

 

그래서 이전 포스팅에 이어서, 이번 포스팅에서는 키보드 제어에 대한 내용을 정리하도록 하겠습니다.

 

0. 들어가기 전에...

내용을 정리하기 전에, 포스팅을 진행하는 환경부터 정리하도록 하겠습니다.

 

OS : Windows7

파이썬 버전 : Python 3.7.3

 

그리고, PyAutoGUI 라이브러리를 설치해야합니다. Python을 설치하면 pip도 보통 같이 설치되는 데, 이 pip를 이용하여 PyAutoGUI 라이브러리를 설치하도록 하겠습니다.

명령어는 아래와 같습니다.

 

pip install pyautogui

 

설치는 이게 끝이므로, 이제 라이브러리 함수에 대해서 설명하도록 하겠습니다.

 

1. 키보드를 제어해보자.

바로 키보드 제어 함수에 대해서 설명하도록 하겠습니다.

 

문자 입력하기

typewrite(내용, interval) - 키보드 제어의 가장 기본이 되는 함수라고 할 수 있습니다. 해당 함수를 사용하면, 내용을 interval로 설정한 기간동안 자동으로 타이핑 합니다. 

import pyautogui
pyautogui.typewrite("hello test1") # "hello test1" 문구를 바로 입력한다.
pyautogui.typewrite("hello test2", interval=0.5) # "hello test2" 문구를 0.5초 주기로 한 문자씩 입력한다.

주의할 점은 오로지 문자만 입력됩니다. 때문에 Shift 키나 F1키와 같은 것은 입력되지 않습니다.

그럼, Shift 키나 F1과 같은 특수 명령 키는 입력할 방법은 없을까요? 

당연히 있습니다. 아래 함수를 사용하면 가능합니다.

 

 

키 입력하기

press(key, presses, interval) - 입력한 key를 누르고 떼는 기능을 하는 함수입니다. presses는 key 내용을 반복할 인자이고, interval은 그 내용을 입력할 기간을 설정하는 인자입니다. 즉, 아래에서 설명할 keyDown() 후에 keyUp()을 실행한것과 같은 효과입니다.

이때, key로 누를 수 있는 것들은 KEYBOARD_KEYS로 설정된 것들입니다. 이것은 포스팅 아래에 링크를 적어둘테니 참고하시면 좋을 것 같습니다.

import pyautogui
pyautogui.press('left') # 키보드의 왼쪽 방향키를 누른다.
pyautogui.press('shift') # 키보드의 Shift 키를 누른다.
pyautogui.press('right') # 키보드의 오른쪽 방향키를 누른다.

 

press() 함수는 단일 키 내용만 넘길 수 있는 것은 아닙니다. 리스트로된 명령어 키를 함수의 인자로 보낸다면, typewrite()와 같은 효과를 만들어낼 수도 있습니다.

아래 간단한 예제를 보신다면 이해하시는 데 더욱 편할 것입니다.

import pyautogui
pyautogui.press(['a', 'b', 'c', 'd']) # 'a', 'b', 'c', 'd' 문자를 입력합니다.
pyautogui.press(['a', 'b', 'c', 'd'], 2) # 'a', 'b', 'c', 'd' 문자를 2번 반복 입력합니다.
pyautogui.press(['a', 'b', 'c', 'd'], 2, 0.5) # 'a', 'b', 'c', 'd' 문자를 2번 0.5초 간격을 두어서 입력합니다.

 

keyDown(key) - 입력한 키를 누르고 있는 함수입니다. 즉, 키보드의 버튼을 누르고 있는 효과입니다.

keyUp(key) - 입력한 키를 떼는 함수입니다. 즉, 키보드의 버튼을 뗀 효과입니다.

즉, 아래의 코드를 실행하면, a라는 문자가 입력되겠죠.

import pyautogui
pyautogui.keyUp('a') # 키보드의 'a' 버튼을 누르고 있는다.
pyautogui.keyDown('a') # 키보드의 'a' 버튼을 뗀다.

hotkey(key, key ..) - 이 함수는 key로 설정한 것들을 하나씩 keyDown()하고, keyUp하는 함수입니다. 간단히 예제를 보면서 설명하도록 하겠습니다.

import pyautogui
pyautogui.hotkey('a', 'b', 'c') # 키보드의 'a', 'b', 'c' 버튼을 차례대로 누르고 뗀다.

위에 내용은 결국 아래와 같습니다. 그리 어렵지 않은 내용이므로, 예제를 보시고 한번만 따라해보시면 이해할 수 있을거에요.

import pyautogui
pyautogui.keyDown('a') # 'a' 버튼을 누른다.
pyautogui.keyDown('b') # 'b' 버튼을 누른다.
pyautogui.keyDown('c') # 'c' 버튼을 누른다.
pyautogui.keyUp('a') # 'a' 버튼을 뗀다.
pyautogui.keyUp('b') # 'b' 버튼을 뗀다.
pyautogui.keyUp('c') # 'c' 버튼을 뗀다.

아래 링크에서 KEYBOARD_KEYS는 press(), keyUp(), keyDown() 함수에서 사용할 수 있는 키보드의 키 모음입니다. 참고하시면 좋을 것 같습니다.

KEYBOARD_KEYS 확인하기.

 

이상으로 PyAutoGUI 라이브러리를 이용한 키보드 제어에 대한 정리를 마치겠습니다. 혹시나 잘못된 내용이 있다면 댓글 남겨주세요.

댓글