Python pynput : mouse (python으로 마우스 컨트롤하기, Python으로 mouse control)
pynput library로 mouse를 컨트롤 하는 방법을 알아봅시다.
(mac환경에서 진행됩니다.)
from pynput.mouse import Button, Controller
mouse = Controller()
print('The current pointer position is {0}'.format(mouse.position))
위처럼 mouse 객체를 만들면 position attribute는 마우스의 위치를 담고 있습니다.
화면의 왼쪽 가장 위가 (0, 0)이며
오른쪽으로 갈수록 x좌표가 양수로 증가하고
아래쪽으로 갈수록 y좌표가 양수로 증가합니다.
from pynput.mouse import Button, Controller
mouse = Controller()
# move pointer to specific position
# in this case, pointer will move to x=500, y=400 position.
mouse.position = (500, 400)
위처럼 position에 특정한 좌표를 할당시킴으로서 마우스의 위치를 변경할 수 있습니다.
from pynput.mouse import Button, Controller
mouse = Controller()
# move pointer relative to current position
mouse.move(dx=50, dy=-10)
move() method를 이용하여 마우스를 현재 위치에서 일정 거리만큼 움직일 수 있습니다.
dx는 x축(가로)으로 얼마나 움직일지
dy는 y축(세로)으로 얼마나 움직일지를 의미합니다.
from pynput.mouse import Button, Controller
mouse = Controller()
# press and release
mouse.press(Button.left) # press left button
mouse.release(Button.left) # release left button
mouse.press(Button.right) # press right button
mouse.release(Button.right) # release right button
좌클릭과 우클릭은 위처럼 press, release method를 이용하여 가능합니다.
press는 마우스 버튼을 누르는 것이며
release는 눌러진 마우스 버튼을 떼는 것입니다.
주의할 점은
release는 이미 눌러진 상태의 마우스 버튼을 다시 떼는 것이기 때문에
press를 실행하지 않고 release를 실행하면 아무 변화가 없습니다.
from pynput.mouse import Button, Controller
mouse = Controller()
# click. this is different from pressing and releasing
mouse.click(Button.left, count=1) # single click
mouse.click(Button.left, count=2) # double click
click() method는 말그대로 클릭을 의미합니다.
click이란 마우스 버튼을 누르고 떼는 작업을 의미합니다. (press, release와는 좀 다릅니다.)
count는 클릭의 횟수로서
1은 한 번 클릭
2는 두 번 클릭이 됩니다.
그래서 count를 2로 설정하면 더블클릭이 되죠.
from pynput.mouse import Button, Controller
mouse = Controller()
# Scroll two steps down
mouse.scroll(dx=0, dy=-100)
scroll method는 x축, y축으로 얼마나 스크롤링을 할지를 의미합니다.
dx=0, dy=-100의 의미는
현재 화면에서
x축 방향(가로)으로는 움직이지 말고
y축 방향(세로)으로는 100만큼 위로 올리라는 의미입니다.
주의할 점은 화면에서 기준점은 항상 화면의 왼쪽 상단이 (0, 0)으로 원점이 됩니다.
그리고 오른쪽으로 갈수록 x값이 양수로 증가하고, 아래쪽으로 갈수록 y값이 양수로 증가합니다.
반대로 왼쪽으로 갈수록 x값이 감소하며, 위쪽으로 갈수록 y값이 작아집니다.
그래서 dy=-100의 의미는 위쪽으로 100만큼 스크롤하라는 의미입니다.