Wireframe

스페이스 키를 두 번 연타하여 엔터키로 만들기

작가와 같이 일반인들과 비교도 할 수 없을만큼 많은 글을 타이핑하는 분들은 흔히 오른쪽 새끼 손가락의 통증을 호소하는 분들이 많습니다. 아무래도 한글의 경우, 오른쪽 쉬프트 키의 사용이 잦은데다 엔터키도 많이 누르게 되니 오른손 새끼 손가락을 그만큼 많이 혹사하게 되는 것이죠. 그래서 스페이스 바를 두 번 연타하면 엔터로 작동하면 좋겠다는 생각을 하시는 분들이 종종 있는 것 같습니다. 그래서 오늘은 오토핫키를 사용해서 스페이스 키를 두 번 연타하여 엔터키로 만드는 방법에 대해서 알아보도록 하겠습니다.

단축키로 이것을 구현하는 방법은 간단합니다. 스페이스 바가 눌려졌을 때, 이전에 눌려진 같은 키와의 시간 간격이 매우 짧다면 앞에 입력된 공백을 지우고 엔터키가 입력되도록 하는 것입니다.

; 스페이스 바를 두 번 눌렀을 때 엔터키로 작동하는 스크립트
; ScrollLock 이 켜져 있을 때만 작동하도록 함
#HotIf GetKeyState("ScrollLock", "T") ==  1

$Space::
{
  if (A_PriorHotKey == ThisHotkey and A_TimeSincePriorHotkey < 180) {
    ; 위에서 180은 0.18초 이내에 두 번 눌려졌을 때를 의미하며
    ; 본인의 사용습관이나 타이핑 속도에 따라 조정
    Send("{BS}{Enter}") 
    ; 두 번째 눌려졌을 때, 앞에 입력된 공백을 삭제하고 엔터
    ; 굳이 앞의 공백을 지우지 않아도 된다면 {BS} 만 삭제
  } else {
    Send("{Space}")
  }
}

의의로 무의식중에 스페이스 바를 많이 누르는 습관이 있거나 할 수 있어서, 스크롤락이 켜져 있을 때에만 작동하도록 #HotIf 지시어로 조건을 달아주었습니다. 글 줄앞에서 스페이스 바로 간격을 띄우거나 하는 습관이 있는 분들은 shift+space, ctrl+space를 사용해서 스페이스를 입력하도록 해두는 등의 안전장치를 마련해두면 귀찮게 되는 상황을 어느 정도는 피할 수 있겠지요.

같은 키를 연타하여 다른 기능을 수행하는 동작

일반적인 타이핑에 사용하는 키가 아니라면, 같은 키를 연타하여 다른 동작을 수행하는 기능은 KeyWait() 함수를 사용해서 구현할 수 있습니다. 이 방식은 앞의 예와 달리 첫번째로 누른 키가 입력되지 않습니다. 이 말은 다시 말하자면 첫 키는 타임아웃 시간만큼 입력이 지연되는 부작용이 있다는 뜻이기도 합니다. 따라서 이 방법은 스페이스 바와 같은 타이핑에 사용되는 키는 적용하지 않는 것이 좋습니다.

예를 들어 구글 크롬에서 Esc키를 두 번 빠르게 눌렀을 때 페이지 맨 위로 돌아가도록 하는 기능은 다음과 같이 만듭니다. 웹서핑 중에서 Esc를 많이 누를 일은 없으니까요.

  1. Esc 키가 릴리즈 되기를 기다림
  2. Esc 키가 눌려지기를 기다림. 1~2 사이의 간격이 0.2초 이내라면 ctrl + Home 을 입력
  3. Esc 키가 다시 눌려지지 않았다면 Esc 키를 입력
; 구글 크롬에서 Esc 를 두 번 눌러 페이지 맨 위로 가게 하기
#HotIf WinActive("ahk_exe chrome.exe")
$Esc::
{
    KeyWait("Esc")
    if (KeyWait("Esc", "DT0.2") == 1) {
        Send("^{Home}")
    } else {
        Send("{Esc}")
    }
}

이 스크립트가 실행되면 구글 크롬에서 웹페이지를 보는 중에 Esc를 두 번 빠르게 누르면 페이지 위로 올라갑니다. 페이지 중간에 마우스 우클릭을 하고 표시되는 메뉴는 Esc 키로 닫을 수 있는데, 한 번만 눌러보면 0.2초의 딜레이 후에 닫히는 것을 확인할 수 있습니다. 컨텍스트 메뉴를 표시하고 있는 상태에서도 Esc 키를 두 번 눌렀다면 ctrl + Home 이 입력되는 셈이니, 메뉴에서 맨 위 항목이 하이라이트 되고 메뉴가 닫히지 않는 것도 확인할 수 있습니다.

들여다보기

아래 내용은 스크립트를 실행하고 브라우저에서 Esc 키를 두 번 연타한 후 오토핫키의 KeyHistory 창을 사용해서 키 입력 내역을 확인한 내용입니다. KeyWait() 에 의해 첫번째 Esc 키를 뗀 것은 무시됩니다. (s 로 표시됨 행) 두 번째 Esc 키를 누른 것이 인식되었고, 그러면 AHK 가 ctrl + Home 을 누른 신호를 생성합니다. (i라고 표시된 행들) 다시 두 번째 Esc 키가 떼어진 신호 역시 AHK에 의해서 무시됩니다.

1B  001	h	d	0.69	Escape         	첫번째 Esc키를 누름
1B  001	s	u	0.09	Escape         	첫번째 Esc키를 떼었으나, KeyWait에 의해 무시
1B  001	h	d	0.08	Escape         	두번째 Esc키를 누름
A2  01D	i	d	0.01	LControl       	AHK가 Ctrl 키 메이크 신호를 만듬
24  147	i	d	0.00	Home           	AHK가 Home 키 메이크 신호를 만듬
24  147	i	u	0.00	Home           	AHK가 Home 키 브레이크 
A2  01D	i	u	0.00	LControl       	AHK가 Ctrl 키 브레이크
1B  001	s	u	0.06	Escape          두번째 Esc키를 뗌. AHK에 의해 무시

새끼 손가락 통증에 효과적인 팁

날개셋 한국어 입력기를 설치하여 이를 한글을 위한 입력기로 사용하면 윈도 한글 입력기가 제공하지 않는 여러 고급 기능을 사용할 수 있습니다. 특히 쌍자음 등 Shift 키를 사용하는 데 있어서 고통을 받는 분이라면 한 번쯤 관심을 가져봐도 좋을 듯 한데요. 날개셋 입력기의 ‘낱자 처리’ 기능을 사용하면, 아이폰 자판처럼 ‘ㄱ’ 키를 두 번 눌러서 ‘ㄲ’을 입력하거나, ‘ㅕ ㅣ’를 순서대로 입력하여 ‘ㅖ’를 입력하는 방식으로 한글 입력 시 Shift 키 사용을 줄일 수 있습니다. 이와 관련된 내용은 다음 기회에 한 번 소개하도록 할게요.

Exit mobile version