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 

 

#If WinActive() shorthand? - AutoHotkey Community

Home Board index AutoHotkey Ask for Help Search It is currently 12 Jan 2023, 11:11 All times are UTC-05:00 Get help with using AutoHotkey and its commands and hotkeys leo007 Posts: 50 Joined: 26 Oct 2019, 04:56 Report this post @ Quote 18 Jan 2020, 04:30 H

www.autohotkey.com