etc/Vim
AHK로 특정 프로그램(IDE) 실행시에만 Esc 클릭시 한/영 전환되게 하기
기억용블로그
2023. 1. 13. 01:23
728x90
ESC 클릭시에 한영 전환되도록 설정하는 스크립트는 많이 존재하는데 특정 프로그램 실행 중에만 한영 전환 되도록 하는 스크립트를 찾을 수 없어 해당 코드를 공유하고자 합니다.
#If WinActive("ahk_exe notepad.exe") OR WinActive("ahk_exe notepad++.exe") OR WinActive("ahk_exe Code.exe") OR WinActive("ahk_exe studio64.exe") OR WinActive("ahk_exe idea64.exe") OR WinActive("ahk_exe webstorm64.exe")
$Esc::
if(IME_CHECK("A"))
Send, {VK15}
Send, {Escape}
return
#If
/*
IME check
*/
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)
}
Ctrl + Shift + ESC를 눌러 작업 관리자에 들어가 추가하고자 하는 프로그램 우클릭 -> 속성으로 정확한 프로그램 이름을 확인합니다. case sensitive하므로 정확한 이름 확인을 해야합니다.
확인 한 이후에 OR WinActive("ahk_exe webstorm64.exe")로 계속 붙여나가면서 추가하면 됩니다. 이 방법이 조금 지저분하다면 다음과 같은 코드를 사용해도 무방합니다. #If WinActive가 아닌 #IfWinActive라는 점에 주의해주세요.
SetTitleMatchMode, REGEX
#IfWinActive ("ahk_exe idea64.exe")|("ahk_exe webstorm64.exe")
...
#IfWinActive
출처
https://www.autohotkey.com/boards/viewtopic.php?t=71714