바로 코드부터 알려주고 설명함, keywait뿐만 아니라 특정 키 막는법으로 활용 가능.
우선 키 블록 hack을 발동시키기 위한 임의의 라벨을 생성
keyblock:
return
이제 keyblock 라벨을 쓰면 의미없이 리턴나게 되니까 저걸 참조해서
Hotkey, a, keyblock, On
KeyWait, a, d
Hotkey, a, keyblock, Off
이런식으로 예제에서 a 를 keywait 로 기다려서 발동하게 하고 싶은데,
기본값은 이 a가 눌릴 때 a가 한 번 입력되면서 그 이후가 발동되는데, 실제로 아무 값이 없는 keyblock을 a에 등록해 발동시킴으로서 똑같이 동작하는데 자기 자신(즉 a)의 입력을 막을 수 있음.
예제로 전체 구성을 보여주자면 이런식
keyblock:
return
$f1::
sendinput, example
Hotkey, @, keyblock, On
KeyWait, @, d
Hotkey, @, keyblock, Off
sendinput, @email.com
return
이런식으로 하면 핵을 적용하지 않았을 시 자기자신이 눌려 결과값이 example@@email.com가 되지만,
핵을 사용하면 자기자신은 블록되고 keywait후만 적용되니까 결과값이 example@email.com 가 됨.
예제는 이해하기 쉽게 @ 로 해서 의미 없어 보이지만, 실제로는 여러 키를 조합할때 굉장히 유용함.
실제로 유용한 실전용 코드를 보너스로 줌
keyblock:
return
$^'::
SetControlDelay,-1
SetKeyDelay, -1, -1
SetBatchLines, -1
SetTitleMatchMode, RegEx
IfWinActive, Post .* WordPress
{
SendInput,{' up}{ctrl up}
Loop
{
if not GetKeyState("'", "P")
break
}
SendInput,'^b
Hotkey,',keyblock, On
KeyWait,',d
Hotkey,',keyblock, Off
SendInput,{right}'
}
else
{
SendInput, ^'
}
return
이런 식으로 적용하면 워드프레스에서 Ctrl+'를 눌렀을 때 따옴표로 감싸면서 바로 볼드시키고 마음대로 입력한 뒤
이후 따옴표를 다시 눌러서 볼드종료를 먼저 시키고(기존값은 '키가 눌려버림) '를 닫을 수 있음.
즉 원래 '예제''되던게 '예제'가 되는것. 사실 이 코드가 메인일 정도로 유용함.
단순하게 '가 아니라 다른 키를 하면 될 일이지만, 직관적으로 '를 사용하는 접근성을 유지할 수 있음.
왜 핵을 써야하나 싶은데 기본 기능으로는 구현이 안되는듯.