오토마우스

오토마우스 프로그램 제작기 1

잡코신 2024. 3. 4. 18:00
728x90
반응형

오토마우스란?

마우스 입력을 자동으로 대신해주는 소프트웨어나 하드웨어 등을 말한다.
시중에 나와있는 오토마우스 프로그램도 많지만 직접 만드는게 더 편하고
원하는 기능도 알아서 추가할 수 있기에, 지금부터 파이썬으로 직접 만들어보겠다.

 

오토마우스 만들기

처음 만들 오토마우스는 특별한 기능이 들어 가는 것이 아닌 간단하게

내가 원하는 곳을 자동으로 클릭을 해주는 오토마우스다.

import pyautogui

먼저 PyAutoGUI 모듈을 사용할 것이기에 임포트 해준다.

 

이제 간단하게 자동 클릭 기능을 만들어보자

while True:
    pyautogui.click()

간단한 무한 클릭 코드를 만들었다.
클릭 횟수를 지정해 반복을 끝낼 수도 있지만
일단 지금 내가 원하는 것은 내가 끝내고 싶을 때까지 클릭하는 코드이기 때문에 무한 반복한다.

 

클릭은 간단하지만 '내가 원하는 곳을'의 조건을 충족 시키려면 약간의 고민이 필요하다.
나는 이를 간단하게 마우스의 위치가 5초동안 변하지 않으면 무한 클릭이 작동하고
그러다 마우스의 위치가 변하면 종료되는 프로그램으로 만들기로 했다.

먼저 프로그램내에서 시간을 다루기 위해 파이썬 내장 함수인 time을 이용한다.

import time

time.sleep(5)  # 5초간 대기

이렇게 하면 간단하게 5초간 프로그램이 대기하는 코드를 작성할 수 있다.

 

클릭을 위해선 마우스의 좌표를 받아와야 한다.

prev_x, prev_y = pyautogui.position()  # 초기 좌표
current_x, current_y = pyautogui.position()  # 현재 좌표

position() 이 (x, y) 튜플형태로 값을 받아오기 때문에
x와 y의 값을 따로 저장할 수 있도록 한다.

초기 좌표를 prev 현재 좌표를 current로 표현했다.

 

이제 초기 좌표와 현재 좌표를 비교해 같으면 클릭하는 코드를 만든다.

    if current_x == prev_x and current_y == prev_y:
        # 좌표 변화가 없으면 클릭
        pyautogui.click()
    else:
        # 좌표 변화가 있으면 종료
        break

if 문을 이용해 간단하게 코드를 만들 수 있다.

 

이렇게 모든 코드들을 합치면 최종 완성 코드는

import pyautogui
import time

time.sleep(5)  # 5초간 대기
prev_x, prev_y = pyautogui.position()  # 초기 좌표
time.sleep(5)  # 5초간 대기
while True:
    current_x, current_y = pyautogui.position()  # 현재 좌표
    if current_x == prev_x and current_y == prev_y:
        # 좌표 변화가 없으면 클릭
        pyautogui.click()
    else:
        # 좌표 변화가 있으면 종료
        break

프로그램 시작 후 5초가 지나면 초기 좌표를 받아온다.
이 좌표가 5초 후에도 변하지 않는다면 좌표가 변할 때까지 무한으로 반복하는 코드가 완성됐다.

 

오토마우스 사용하기

위 최종 프로그램엔 좌표가 한번 변하면 종료되는 프로그램이지만 난 오토마우스를 계속 사용하고 싶기에

코드를 더 편리하고 계속 동작하게 만들었다.

import pyautogui
import time

def auto_click():
    time.sleep(5)  # 5초간 대기
    prev_x, prev_y = pyautogui.position()  # 초기 좌표
    time.sleep(5)  # 5초간 대기
    while True:
        current_x, current_y = pyautogui.position()  # 현재 좌표
        if current_x == prev_x and current_y == prev_y:
            # 좌표 변화가 없으면 클릭
            pyautogui.click()
        else:
            # 좌표 변화가 있으면 종료
            break

        prev_x, prev_y = current_x, current_y  # 이전 좌표 갱신


while 1:
    auto_click()

코드를 함수 형태로 만들고 이전 좌표를 갱신해주는 코드를 만들었다.
이제 좌표가 바뀌면 무한 클릭은 종료되지만 프로그램이 종료되지는 않는다.
프로그램을 종료 시키기 전까지 또 좌표 변화가 없으면 무한 클릭이 시작될 것이다.

 

Next

다음엔 GUI 기능을 추가해 좀 더 보기 간편한 프로그램으로 만든다.

728x90
반응형

'오토마우스' 카테고리의 다른 글

오토마우스 제작기 4  (0) 2024.04.01
오토마우스 제작기 3  (1) 2024.03.25
오토마우스 제작기 2  (0) 2024.03.11