소개
pynput 라이브러리는 키보드와 마우스 같은 입력 장치를 제어하고 모니터링(입력 감지)할 수 있게 해주는 파이썬 패키지입니다.
pynput.mouse 모듈은 마우스를, pynput.keyboard 모듈은 키보드를 각각 제어하고 감시하는 기능을 담당합니다.
이 글에서는 커서를 특정 좌표로 이동시키고, 클릭을 자동화하며, 키보드 입력을 시뮬레이션하는 방법까지 하나씩 살펴보겠습니다.
시작하기
pynput은 파이썬에 기본으로 포함되어 있지 않기 때문에 pip 패키지 관리자를 통해 직접 설치해야 합니다.
터미널을 열고 아래 명령어를 입력하세요.
pip install pynput
설치가 완료되면 파이썬 스크립트에서 바로 모듈을 임포트해 사용할 수 있습니다. 키보드와 마우스에 필요한 모듈이 서로 다르므로, import 문은 각 섹션에서 자세히 다루겠습니다.
마우스 제어하기
파이썬으로 마우스를 제어하려면 pynput 라이브러리에서 mouse 관련 클래스를 임포트해야 합니다. 클릭과 이동도 함께 시뮬레이션할 것이므로 Button과 Controller를 함께 가져옵니다.
from pynput.mouse import Button, Controller
먼저 Controller() 객체를 생성하면 화면 위에서 마우스를 자유롭게 움직일 수 있습니다.
mouse = Controller()
마우스를 원하는 위치로 옮기려면 해당 좌표를 지정하면 됩니다.
mouse.position = (50, 60)
현재 마우스 위치를 확인하고 싶다면 출력해 보세요.
print('Current mouse position -> {0}'.format(mouse.position))현재 위치를 기준으로 상대적으로 이동하려면 move() 함수를 사용합니다.
mouse.move(30, 15)
버튼 클릭을 시뮬레이션하려면 press()와 release() 메서드를 사용합니다.
mouse.press(Button.left)
mouse.release(Button.left)
mouse.press(Button.right)
mouse.release(Button.right)
더블클릭은 click() 메서드에 반복 횟수를 지정하면 됩니다.
mouse.click(Button.left, 2)
스크롤도 손쉽게 구현할 수 있습니다.
mouse.scroll(0, 2)
위 코드는 아래로 두 칸 스크롤합니다. x값은 좌우 스크롤, y값은 상하 스크롤을 담당합니다.
마우스 종합 예제
from pynput.mouse import Button, Controller
mouse = Controller()
mouse.position = (50, 60)
print('Current mouse position -> {0}'.format(mouse.position))
mouse.move(30, 15)
mouse.press(Button.left)
mouse.release(Button.left)
mouse.press(Button.right)
mouse.release(Button.right)
mouse.click(Button.left, 2)
mouse.scroll(0, 2)
이런 기능들을 조합하면 기본적인 좌표 기하학만으로 그림판에서 도형을 그리는 동작까지 자동화할 수 있습니다.
키보드 제어하기
먼저 필요한 모듈과 클래스를 임포트합니다. pynput의 keyboard 모듈에서는 Key와 Controller를 사용합니다.
from pynput.keyboard import Key, Controller
Controller 객체를 생성하면 키보드 입력을 시뮬레이션할 수 있습니다.
keyboard = Controller()
키 입력은 press()와 release() 메서드로 처리합니다.
keyboard.press('a')
keyboard.release('a')이 방식은 알파벳 전체에 적용되며, 대문자는 'A'처럼 그대로 넣어주면 됩니다.
Space, Ctrl, Alt 같은 특수 키도 Key 객체를 통해 시뮬레이션할 수 있습니다.
keyboard.press(Key.space)
keyboard.release(Key.space)
keyboard.press(Key.ctrl)
keyboard.release(Key.ctrl)
문장이나 단어를 한 번에 입력하려면 type() 함수를 사용하세요.
keyboard.type('Hello World!!')이것이 파이썬에서 키보드 장치를 제어하는 기본적인 방법입니다.
키보드 종합 예제
from pynput.keyboard import Key, Controller
keyboard = Controller()
keyboard.press('a')
keyboard.release('a')
keyboard.press(Key.space)
keyboard.release(Key.space)
keyboard.press(Key.ctrl)
keyboard.release(Key.ctrl)
keyboard.type('Hello World!!')
마무리
이제 파이썬의 pynput 라이브러리로 키보드와 마우스 입력을 시뮬레이션하는 방법을 익혔습니다.
이를 활용하면 클리커 게임용 자동 클릭 봇, 여러 형태의 메시지를 한꺼번에 전송하는 스팸 봇 등 다양한 자동화 도구를 만들 수 있습니다. 응용 범위는 사실상 무궁무진하다고 할 수 있습니다.
참고용 미니 프로젝트(SpamBot): https://github.com/SVijayB/Spam-botz
pynput의 더 많은 기능이 궁금하다면 공식 문서를 확인해 보세요: https://pynput.readthedocs.io/en/latest/index.html