티스토리 뷰
Capslock을 오래(0.1초 이상) 누르고 있으면 Ctrl로 동작하고
0.1초 이내로 짧게 누르는 경우 0.1초 이내에 Capslock 요청이 한 번 더 온다면 Esc로 동작,
짧게 눌렀고 요청이 한 번 더 오지 않는다면 한영전환(vk15)로 동작하게 된다.
Ctrl을 누르는 경우 Modifier key로 동작하게 하기 위함(다른 키가 더 입력되기를 기다리는)이 대부분이기 때문에 오래 누르고 있는 경우 {Control Down}으로 인식하고 로직이 끝난 후에 {Control Up}을 진행한다.
$Capslock::
KeyWait, Capslock, T0.1
if (ErrorLevel)
;long press
Send, {Ctrl Down}
else {
KeyWait, Capslock, D T0.1
;single press
if (ErrorLevel)
Send, {vk15}
;double press
else
Send, {esc}
}
KeyWait, Capslock
Send, {Ctrl Up}
return
(2023-01-09) 추가 : 위의 기능을 좀 더 보강하여 Capslock을 한번 클릭시 영어, 두번 클릭시 한글로 변경되게 수정해보았다.
$Capslock::
KeyWait, Capslock, T0.1
if (ErrorLevel)
;long press
Send, {Ctrl Down}
else {
KeyWait, Capslock, D T0.1
;single press
;Capslock 한번 클릭시 무조건 영어.
if (ErrorLevel) {
ime_status := % IME_CHECK("A")
;한글이라면 영어로 전환
if(ime_status = "1") {
Send, {VK15}
} else {}
}
;double press
;Capslock 2번 클릭시 무조건 한글.
else {
ime_status := % IME_CHECK("A")
;영어라면 한글로 전환
if(ime_status = "0") {
Send, {VK15}
} else {}
}
}
KeyWait, Capslock
Send, {Ctrl Up}
return
/*
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)
}
레퍼런스
https://gist.github.com/volks73/1e889e01ad0a736159a5d56268a300a8
AutoHotkey script to change Caps Lock to Control on hold and Escape on press and release
AutoHotkey script to change Caps Lock to Control on hold and Escape on press and release - AutoHotkey.ahk
gist.github.com
https://www.autohotkey.com/boards/viewtopic.php?t=10067
single press, double press and long press - AutoHotkey Community
Report this post @ Quote 01 Nov 2015, 11:45 It's a matter of brackets. Wrap your 5 lines after } Else inside of a block as well. RIght now, only your KeyWait, z, D T0.2 line is associated with the Else. So what happens is when Send longpress happens, and t
www.autohotkey.com
'etc' 카테고리의 다른 글
Intellij 기본적인 세팅 정리 (0) | 2022.11.12 |
---|
- Total
- Today
- Yesterday
- 레디스
- Dap
- ModelAttribute
- neovim
- RequestBody
- lunarvim
- 아키텍처
- 도커
- RequestParam
- vim
- 루나빔
- IDE
- 배포
- RequestPart
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |