AutoPercenty3/KO_EN.py

74 lines
2.5 KiB
Python

import ctypes
import time
from ctypes import wintypes
wintypes.ULONG_PTR = wintypes.WPARAM
hllDll = ctypes.WinDLL("User32.dll", use_last_error=True)
VK_HANGUEL = 0x15
class MOUSEINPUT(ctypes.Structure):
_fields_ = (("dx", wintypes.LONG),
("dy", wintypes.LONG),
("mouseData", wintypes.DWORD),
("dwFlags", wintypes.DWORD),
("time", wintypes.DWORD),
("dwExtraInfo", wintypes.ULONG_PTR))
class HARDWAREINPUT(ctypes.Structure):
_fields_ = (("uMsg", wintypes.DWORD),
("wParamL", wintypes.WORD),
("wParamH", wintypes.WORD))
class KEYBDINPUT(ctypes.Structure):
_fields_ = (("wVk", wintypes.WORD),
("wScan", wintypes.WORD),
("dwFlags", wintypes.DWORD),
("time", wintypes.DWORD),
("dwExtraInfo", wintypes.ULONG_PTR))
class INPUT(ctypes.Structure):
class _INPUT(ctypes.Union):
_fields_ = (("ki", KEYBDINPUT),
("mi", MOUSEINPUT),
("hi", HARDWAREINPUT))
_anonymous_ = ("_input",)
_fields_ = (("type", wintypes.DWORD),
("_input", _INPUT))
def get_hanguel_state():
# 현재 한/영 전환 키의 상태를 확인하는 함수
return hllDll.GetKeyState(VK_HANGUEL)
def change_state():
# 한/영 키 전환 함수
x = INPUT(type=1 ,ki=KEYBDINPUT(wVk=VK_HANGUEL))
y = INPUT(type=1, ki=KEYBDINPUT(wVk=VK_HANGUEL,dwFlags=2))
hllDll.SendInput(1, ctypes.byref(x), ctypes.sizeof(x))
time.sleep(0.05)
hllDll.SendInput(1, ctypes.byref(y), ctypes.sizeof(y))
def set_keyboard_language(target_lang):
"""
한글 또는 영어로 키보드 상태를 전환하는 함수.
Args:
target_lang (str): 'kor'이면 한글로 전환, 'eng'이면 영어로 전환.
"""
current_state = get_hanguel_state()
if target_lang == 'kor' and current_state == 0:
# 현재 영어인 경우 한글로 전환
change_state()
print("키보드를 한글로 전환했습니다.")
elif target_lang == 'eng' and current_state == 1:
# 현재 한글인 경우 영어로 전환
change_state()
print("키보드를 영어로 전환했습니다.")
else:
# 이미 원하는 상태인 경우
print(f"이미 {target_lang} 상태입니다.")
# # 사용 예시
# set_keyboard_language('kor') # 한글로 전환
# set_keyboard_language('eng') # 영어로 전환