윈도우에서는 한/영 키가 존재하고 이 키를 누르면 한글 과 영문을 번갈아가면서 전환할 수 있습니다. 하지만 새로운 창이 뜨거나 처음 타이핑 시 현재 언어가 어떻게 지정되어 있는지 알 수 없기 때문에 다른 언어로 입력하고 지우는 과정을 반복하게 됩니다.
그래서 원하는 키를 한글과 영어로 분리해서 할당해두면 이런 불편함 없이 한글과 영문을 특정지어 전환할 수 있습니다1.
그런데 최근 윈도우 11 22H2 업데이트 후 키 전환이 정상적으로 동작하지 않아 원인을 찾다 보니 IME 가 새롭게 업그레이드 된 것을 알고 이를 이전(Legacy) 방식으로 수정하니 정상적으로 동작했습니다.
그래서 오늘은 오토핫키 한영 전환 분리해서 따로 사용하는 방법 과 윈도우 11 22H2 업데이트 후 정상적으로 동작 안되는 경우 오류의 원인 해결하는 방법에 대해서 알아 봅니다.
튜토리얼 환경: 윈도우 11 Pro (빌드: 22621.382), AutoHotKey
오토핫키 한영 전환 키 분리 할당
오토핫키를 설치한 상태에서 아래 스크립트를 이용해 오토핫키 파일을 생성 후 실행하면 한글 키와 영어 키를 분리해서 사용할 수 있습니다.
참고: macOS를 사용하는 경우 macOS에서 한영전환 키를 분리해서 사용하는 방법을 확인하세요.
+Space::
Goto,imeKorean
return
^Space::
Goto,imeEnglish
return
imeKorean:
if IME_CHECK("A")=0
{
Send, {vk15sc138}
Sleep, 10
}
return
imeEnglish:
if IME_CHECK("A")=1
{
Send, {vk15sc138}
Sleep, 10
}
return
IME_CHECK(WinTitle)
{
WinGet,hWnd,ID,%WinTitle%
Return Send_ImeControl(ImmGetDefaultIMEWnd(hWnd),0x005,"")
}
Send_ImeControl(DefaultIMEWnd, wParam, lParam)
{
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283,wParam,lParam,,ahk_id %DefaultIMEWnd%
if (DetectSave <> A_DetectHiddenWindows)
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
ImmGetDefaultIMEWnd(hWnd)
{
Return DllCall("imm32\ImmGetDefaultIMEWnd",Uint,hWnd,Uint)
}
; ----------------------------------------------------------------
; # win
; ! alt
; ^ ctrl
; + shift
; Reference: https://www.autohotkey.com/board/topic/7299-help-me-international-users-t-t-ime/ (Mr.Lee)
위와 같이 작성하면 다음과 같이 동작하며 +Space
와 ^Space
를 원하는 키로 변경하면 그대로 사용할 수 있습니다.
- Shift + Space 키를 동시에 입력하면 한글 자판 강제 전환
- Ctrl + Space 키를 동시에 입력하면 영문 자판 강제 전환
언어 전환 오류 해결 방법
윈도우 11 22H2 업데이트 후 위 과정으로 한영키 전환이 정상적으로 이루어지지 않는 다면 아래 설정을 체크해 보시길 바랍니다.
- 시작 버튼을 마우스 오른쪽 버튼으로 클릭해 퀵 링크 메뉴를 열고 설정을 선택합니다.
- 좌측 사이드 바의 탭을 시간 및 언어 로 전환 후 언어 및 지역 > 옵션 > Microsoft 입력기의 호환성 섹션 이전 버전의 Microsoft IME 토글 스위치를 우측 방향으로 이동해 켬으로 전환 해 이전 방식으로 원복합니다.
이제 스크립트가 정상적으로 동작하는 지 체크합니다.
2023. 03. 27 업데이트: 본문 설명에 오류가 있었고, 메뉴의 위치가 변경되어 개선된 내용을 업데이트 일자 기준 버전에 맞게 수정했습니다.
마무리
이번 포스트에서는 오토핫키 한영 전환 분리해서 따로 사용하는 방법 과 윈도우 11 22H2 업데이트 후 정상적으로 동작 안되는 경우 오류의 원인 해결하는 방법에 대해 알아 보았습니다.
개인적으로 단축키를 거의 병적으로 할당해서 사용하다 보니 오토핫키는 상당히 애정하는 도구 인데요. 맥에서는 Hammerspoon 이라는 도구가 있으니 관심있다면 체크 해 보시길 바랍니다.
한글 입력기를 1순위로 두는 방법은 어떻게 하는지 여쭤도 될까요?
저도 앞서 질문 주신 분처럼 해당 코드가 한/영 인식이 제대로 되지 않습니다.
한국어의 키보드에서 다른 언어 또는 입력기가 가장 상단에 위치해 있다면 이 부분을 삭제하고 추가하면서 기본 Microsoft 입력기가 상단으로 위치하도록 하면 문제가 개선되는 경우가 있습니다. 관련 내용을 정리한 글을 확인 해보세요.
그리고 본문에 오류가 있어 글을 수정했네요. 이전 버전의 Microsoft IMe 옵션을 끄라고 했는데;; 켜주어야 하네요. 켠 다음 다시 테스트 해보시겠어요?
메뉴 위치도 변경되어 이 부분도 같이 수정했습니다. (저는 현재 메인 PC와 포스팅을 위한 가상 윈도우 환경에서 모두 정상적으로 입력기 전환이 동작했네요.)
답변 감사드립니다.
수정해주신 부분에서 착오가 있었네요. 새로운 IME에서 작동되는 방법인줄 알았습니다ㅎ
혹 새로운 IME win11에서 동일한 기능을 사용할 수 있는 방법도 알고 계실까요?
저도 언제까지 이전 방식을 사용할 수 있을지 몰라 새로운 입력기로 사용 할 수 있는 방식을 찾고 있는데 아직 찾지 못했습니다. ㅠ
그러시군요 ㅠㅠ 저도 한번씩 찾아보고 있는데 아주 자료가 없네여 혹시 찾게 되면 연락드리겠습니다~
선생님 혹시 제가 겪는 문제가 이것과 관련있나요??
아래코드가 한글이었으면 영어로, 영타 였으면 그대로 영타로 만들어주는 코드였는데
윈도우 10 환경에서는 잘 작동하더니
윈도우 11로 넘오오니 구별없이 무조건 한영키를 바꿔주는 역할만 합니다. ㅠㅠㅠ 몇일을 고생 했는데 해결이 안되네요ㅠㅠㅠ 혹시 해결방법 있을까요
f2::
{
IME_CHECK(WinTitle) {
WinGet,hWnd,ID,%WinTitle%
Return Send_ImeControl(ImmGetDefaultIMEWnd(hWnd),0x005,””)
}
Send_ImeControl(DefaultIMEWnd, wParam, lParam) {
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, wParam,lParam,,ahk_id %DefaultIMEWnd%
if (DetectSave A_DetectHiddenWindows)
DetectHiddenWindows,%DetectSave%
return ErrorLevel
}
ImmGetDefaultIMEWnd(hWnd)
{
return DllCall(“imm32\ImmGetDefaultIMEWnd”, Uint,hWnd, Uint)
}
}
{
WinGetActiveTitle, ExplorerTitle
ime_status := % IME_CHECK(“A”)
if (ime_status = “0”)
{
}
else
Send, {vk15sc138}
return
}
안녕하세요. 저는 본문의 언어 전환 오류 해결 방법으로 해결되었고 현재 문제없이 사용 중인데요. 위 방식으로 해결되지 않는 다면 그 이유는 모르겠네요.
클린 부팅 상태에서 원인을 찾거나, 한글 입력기를 1순위로 두고 테스트 해보시면 개선될 수도 있을 듯 합니다.
하하 단축키를에 거의 병적으로 할당해서 사용한다는 말에 반갑네요. 해머스푼에 대해 알아봐야겠습니다. 고마워요
반갑습니다. ^^ 키보드로 다 되면 좋겠어요. ㅎ 저는 윈도우는 거의 오토핫키로 처리하고, 맥은 키보드 마에스트로, BTT, 해머스푼으로 윈도우와 거의 동일하게 세팅해서 사용 중이네요.