한영 전환키 check


글쓴이 Autohotkey.pe.kr 의 imMBR님의 글입니다.
우선... 제 시스템의 경우에는 한영변환키를 send하려면
Send,{vk15} 또는 Send,{vk15sc1F2}
이렇게 해주면 되더군요.

제가 처음 AHK를 접하고 이것저것 해보려고 꼼지락 거리던 때 이야기네요.
send명령어로 한영변환키를 보내도 싶은데 도저히 방법을 모르겠더군요.
영어랑 별로 안친하게 지낸 덕에 도움말 파일을 봐도 도저히...
 
AHK를 설치할때 같이 묻어오는 오토스크립트라이터로 확인을 해봐도
한영키를 입력하면  21이라는 숫자만 나오고...
나중에야 10진수-16진수 전환을 해주면 된다는 걸 알았네요.

도움말 파일을 뒤적인 끝에

#InstallKeybdHook
return

이렇게 실행시키고 key history로 확인할 수 있다는 걸 알게 되었습니다.

그런데, 아직도
 {vk15}
 {vk15sc1F2}
이 두 녀석의 차이점을 모르겠네요.
도대체 scan code는 어디에 쓰는 건가요?



그때는, 활성화 되어있는 윈도우의 입력모드가 한글인지 영문인지 확인하는 것도 무지하게 멍청한 방법을 사용했습니다.
텍스트 입력이 가능하면 send명령어로 키입력을 하나 보내고, 바로 클립보드에 잘라넣기 한 다음에 아스키코드로 확인을 했네요;;;

send,{shiftdown}{home}{shiftup}
send,^x
sleep,500
SourceText=%clipboard%
StringLen,length,SourceText
lang:=
loop,%length%
{
StringMid,chchr,SourceText,%A_Index%,1
chasc:=asc(chchr)
if (65<=chasc) and (chasc<=90)
{
lang=english
break
}
if (97<=chasc) and (chasc<=122)
{
lang=english
break
}
if (129<=chasc) and (chasc<=200)
{
lang=korean
break
}
}

정말 부끄럽군요;;;




지금은...
AHK포럼에 어느 분이 올려놓으신 API(?)를 이용한 정말 깔끔한 스크립트를 구해서 잘 써먹고 있습니다.




App  key:          ->English Mode
Right-win key:  -> Hangul Mode

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)
}


Rwin::
    ret := IME_CHECK("A")
    if %ret% = 0                 ; 0 :English
    {
        Send, {vk15sc138}  
    }
return

 

AppsKey::
    ret := IME_CHECK("A")
    if %ret% <> 0               ; 1 Hangul
    {
        Send, {vk15sc138}  
     }
return

 

어찌나 보기에도 깔끔하고 내용도 좋고^^
그저 막 부러울 따름입니다;;;


추가하자면 위에서 파란색 글씨를 소스에 추가 하시면 됩니다.
오른쪽 윈도우 키 -> 한글
우측 윈도우키와 Ctrl 사이의 키(마우스우측버튼과 같은역활하는키) -> 영어
입니다.
 

'Study > AutoHotKey' 카테고리의 다른 글

특정 창에서만 단축키가 작동하도록 하는 방법  (0) 2011.12.07
정규 표현식 강좌(Autohotkey)  (0) 2011.10.31
한줄씩 입력 받기  (0) 2011.10.20
Script> 좌표/색 도우미  (2) 2011.10.17
AHK 자주사용하는 명령어  (0) 2011.10.17
내장변수  (0) 2011.10.10
키보드 스캔코드  (0) 2011.10.10
Gui는 어렵다?  (0) 2011.10.09
정규 표현식 설명(예제포함)  (0) 2011.10.09
정규 표현식  (0) 2011.10.09