파이썬 프로그램 실행시 나타나는 콘솔창에 입력시 한영 전환키 안 눌러도 기본적으로 한글이 입력되도록 할 수 있나요.
조회수 2132회
제가 파이썬 프로그램을 하나 만들었는데, 실행하면 콘솔창이 뜨면서 데이터를 몇 개 입력하면 결과가 나오는 프로그램입니다.
그런데 입력하는 데이터가 모두 한글로 입력하는 것이라서, 키보드에서 한영 전환키를 눌러 한글로 전환하지 않고 바로 한글로 입력하면 좋겠는데 콘솔창 입력 기본 설정을 한글로 하는 것이 가능한지요?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
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)) #한 > 영 if get_hanguel_state() == 1: #1 일경우 vk_key : 0x15(한글키)가 활성화 change_state() #한글키 누르고(key_press) , 때기(release) test = raw_input() #영 > 한 if get_hanguel_state() == 0: #0 일경우 vk_key : 0x15(한글키)가 비활성화 change_state() #한글키 누르고(key_press) , 때기(release) test = raw_input() #getkeystate : https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeystate #sendinput : https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput #code : https://gist.github.com/Aniruddha-Tapas/1627257344780e5429b10bc92eb2f52a
win32api 를 이용한 키보드 상태 확인 후. 해당 조건에 맞게... 설정하는법입니다.
관련되어서는 링크 참고해주세요
-
댓글 입력