[업무자동화] 파이썬으로 키보드 제어하기

반응형
    반응형

    pyautogui 키보드 제어

    파이썬 모듈인 pyautogui를 통한 키보드 제어방법입니다.
    키보드 제어는 원하는 키를 자동으로 입력하고 떼는 기능만이 전부라서 많은 지식이 필요하진 않습니다.

    pyautogui 키보드 기능

    1. typewrite() : 키보드에 문자열 입력
    2. press() : 단일 키를 누르고 뗀다
    3. keyDown() : 키를 누르고 있는다.
    4. keyUp() : 키를 뗀다.
    5. hotkey() : 조합 키를 누른다.
    6. write() : typewrite() 와 유사하게 문자열 입력.
    import pyautogui
    
    ## 문자열 입력하기
    pyautogui.typewrite('Hello.World!)
    
    ## 단일키 누르기
    pyautogui.press('ctrl')
    
    ## 조합키 누르기
    pyautogui.hotkey('ctrl','c')
    

    typewrite와 write의 차이는 typewrite는 한글자씩 입력을 하는 반면, write는 한번에 입력을 해줍니다.

    단축키 적용되나

    단축키 적용됩니다.
    다음은 문자열을 메모장에 입력후 해당 문자열을 복사,붙여넣기 하는 예제입니다.

    import pyautogui
    import time
    import subprocess
    
    # 복사할 텍스트
    
    text_to_copy = "Hello, World!"
    
    # 메모장 불러오기
    subprocess.Popen(["notepad.exe"])
    
    # 잠시 대기
    time.sleep(2)
    
    # 텍스트 입력 및 복사하기
    pyautogui.typewrite(text_to_copy)
    pyautogui.hotkey('ctrl', 'a')  # 모든 텍스트 선택
    pyautogui.hotkey('ctrl', 'c')  # 텍스트 복사
    
    
    
    # 모든 텍스트 선택 풀기
    pyautogui.press('down')
    pyautogui.press('Enter')
    
    # 붙여넣기
    pyautogui.hotkey('ctrl', 'v')

    한글 영어 섞여있을때 입력 방법

    pyautogui의 글자 입력은 타이핑을 하는 방식이기 때문에 한글 영어가 섞여있으면 중간에 영어나 한글로 바꿔주지 않으면 원하는 문자가 나오지 않습니다. 더구나, pyautogui는 한글 지원이 안되기 때문에 문자열에 한글이 있으면 한글로 강제로 쓰여지는 곳이 아니라면 입력이 안됩니다. 그러다보니 이런 경우에는 다른 방식으로 해야합니다.

    실제로 메모장에 자동글쓰기를 위해 한글을 섞어넣으면 영어만 나오고 한글은 나오지 않는 현상이 발생합니다.

    그러므로, 대안으로 클립보드를 활용합니다.
    pyperclip라는 모듈이 있는데요. 지정한 문자열을 클립보드에 복사해줍니다.

    import pyautogui
    import time
    import subprocess
    import pyperclip
    
    # 복사할 텍스트
    
    text_to_copy = "Hello, World!"
    
    
    # 메모장 불러오기
    
    subprocess.Popen(["notepad.exe"])
    
    # 잠시 대기
    
    time.sleep(2)
    
    
    
    pyautogui.typewrite(text_to_copy)
    pyautogui.press('enter')
    
    # 한글 텍스트 복사
    
    text_to_copy = "Hello, 월드"
    
    # 클립보드에 한글 텍스트 복사
    
    pyperclip.copy(text_to_copy)
    
    # 붙여넣기
    
    pyautogui.hotkey('ctrl', 'v')
    

    마치며

    키보드 제어를 할 수 있으면 생각보다 활용할 곳이 많을 것 같습니다.

     

    함께보면 좋은글

    [업무 자동화 파이썬] pyautogui로 마우스 제어하기

    [업무 자동화 파이썬] Listener를 이용한 마우스 이벤트 제어

    [업무자동화] 윈도우 작업스케줄러 사용해 파이썬 실행하기

    댓글

    Designed by JB FACTORY

    ....