74 lines
2.5 KiB
Python
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') # 영어로 전환
|