CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·일본산당 ·방탄소년당 ·자전거당 ·안드로메당 ·개발한당 ·이륜차당 ·골프당 ·나스당 ·소셜게임한당 ·클다방 ·가상화폐당 ·AI당 ·육아당 ·걸그룹당 ·물고기당 ·WOW당 ·창업한당 ·테스트당 ·스팀한당 ·덕질한당 ·요리한당 ·바다건너당 ·퐁당퐁당 ·노젓는당 ·키보드당 ·사과시계당 ·AI그림당 ·냐옹이당 ·갖고다닌당 ·PC튜닝한당 ·위스키당 ·축구당 ·방송한당 ·3D메이킹 ·X세대당 ·ADHD당 ·날아간당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·소시당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·나혼자산당 ·스타한당 ·파도탄당 ·테니스친당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·와인마신당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PC/모바일 오토핫키(AHK V2) CapsLock 으로 한영키 사용하기를 개선해 보기(+한자키 연동) 5

4
2024-04-03 09:46:32 수정일 : 2024-04-03 13:40:02 220.♡.155.36
Retaw

며칠전 에몽님의 글(https://www.clien.net/service/board/lecture/18682974CLIEN) 을 보고 현재 사용하는 컴퓨터에 적용을 해보았는데, 사용해보니 약간의 불편한 점이 있었습니다. 그건 바로 해당 스크립트로는 키를 릴리즈 했을 때, CapsLock 인지 한영전환인지가 결정된다는 점이었죠.


집에서 쓰고 있는 맥북은 그냥 누르고 있으면 일정 시간후에 불이 바뀌면서 아 CapsLock이 적용되었구나 하고 알 수 있었는데, 이건 땔때까지는 알수가 없으니, 이 사소한 차이가 불편하게 느껴졌습니다. 그래서 그렇다면 한번 코드를 개조해보자 생각하게 되었죠.


일단 저의 목표는 다음과 같습니다.

  1. CapsLock을 일정시간 이상 누르고 있으면 키를 때지 않아도 바로 CapsLock기능이 작동하게 한다.
  2. CapsLock을 일정시간이 되기 전에 때는 경우에는 한영키로 작동하게 한다.


AHK를 처음 접해봐서 몇번의 시행착오가 있었지만, 일단 완성된 코드를 먼저 공유하겠습니다. 코드는 다음과 같습니다.

capslock:: {
    While (GetKeyState("CapsLock", "P")) { ;키 눌림을 물리적으로 유지하는 동안
        if (A_TimeSinceThisHotkey >= 300) { ;이 Hotkey 실행 후 300ms(0.3s) 지났다면
            SetCapsLockState !GetKeyState("CapsLock", "T") ;CapsLock 토글
            KeyWait("CapsLock") ;키 릴리즈까지 대기
            Return ;Hotkey  종료
        }
    }

    Send("{vk15sc1F2}") ;한영키 전달
}


제가 주석을 달아놓기는 했지만 간단하게 설명드리자면,

우선 캡스락을 누르면 해당 Hotkey가 실행됩니다. 그리고 바로 키가 눌려있는 상태인지를 확인하고, 시간을 측정해서 0.3초가 지나면 캡스락 토글을 하고 바로 종료하도록 했습니다. 만약 0.3초가 되기전에 키가 릴리즈된다면, while문을 빠져나와 한영키로 작동하게 됩니다.

중간에 KeyWait("CapsLock") 가 들어간 이유는 릴리즈를 확인안하고 바로 종료시키게 되면 해당 핫키가 다시 실행되면서 캡스락 불이 깜빡깜빡하는 문제가 생기더라구요. 그래서 확실하게 키 릴리즈를 확인하고 종료시키기 위해서 들어갔습니다.

만약 좀더 오래 눌렀을 때 캡스락이 되도록 하고 싶으시다면 저 300부분을 수정하시면 됩니다.


일단 여기까지 만들고 나니 또 욕심이 하나 나더라구요. "그렇다면, 캡스락을 이중탭을 했을 때에는 한자키로 작동하도록 하면 어떨까?" 하구요. 그래서 코드를 아래와 같이 다시 수정하였습니다.

capslock:: {
    While (GetKeyState("CapsLock", "P")) { ;키 눌림을 물리적으로 유지하는 동안
        if (A_TimeSinceThisHotkey >= 300) { ;이 Hotkey 실행 후 300ms(0.3s) 지났다면
            SetCapsLockState !GetKeyState("CapsLock", "T") ;CapsLock 토글
            KeyWait("CapsLock") ;키 릴리즈까지 대기
            Return ;Hotkey 종료
        }
    }
    if (KeyWait("CapsLock","D T0.1")){ ;0.1초 안에 키가 눌렸을 경우
        Send("{vk19sc1F1}") ;한자키 전달
        KeyWait("CapsLock") ;키 릴리즈까지 대기
    }
    else {
        Send("{vk15sc1F2}") ;한영키 전달
    }
}

여기서 추가된 것 중에서 제일 큰 역할을 하는 건 KeyWait("CapsLock","D T0.1") 입니다. 이건 CapsLock키를 기다려라는 명령인데, 파라메터로 D를 넣게 되면 키가 눌릴때 까지 대기하라는 의미이고, T0.1은 0.1초 이내에 해당 조건을 만족하면 1, 아니면 바로 0을 리턴하게 됩니다.

그래서 추가된 부분만 설명하자면 CapsLock 키를 0.1초이내에 두번누르게 되면 한자키가 작동합니다.


이제 추가로 욕심이 나는 부분은, 캡스락 그리고 한영키가 작동할 때마다 모니터 한가운데에 알림을 띄워보면 어떨까 싶기는 한데, 일단 공부를 좀더 해봐야 할거 같고, 이런 기능은 아직 찾아보지는 않았지만 이미 나와있는 유틸리티들이 많이 있지 않을까 싶기도 하네요. 


그럼 제 글을 읽어주셔서 감사드리고 이만 물러가겠습니다. ㅎ

Retaw 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [5]
강물따라
IP 223.♡.40.60
04-03 2024-04-03 11:47:37
·
재능기부하시는 당신은 선한 목자^^
에몽군
IP 223.♡.99.211
04-03 2024-04-03 13:32:12
·
아 대박입니다!!!! 정말 생각도 못했네요.
제 글에도 이 글을 참조하시도록 링크를 걸게요.
천연수
IP 118.♡.0.167
04-03 2024-04-03 18:08:48
·
좋은 글 감사합니다!!
삭제 되었습니다.
Retaw
IP 220.♡.155.36
04-05 2024-04-05 08:40:20
·
@건기님 PowerToys로 하면 간편하긴 한데, 단순 키입력 변경 밖에 좀더 다양한 커스텀을 하기 힘들더군요. 오토핫키로 하니 여러 조건들을 넣을 수 있어서 좀더 유연하게 대응이 가능해서 좋네요.(그만큼 복잡하지만요)

여기서는 단순히 탭, 롱프레스, 더블탭 만 구분하게 해놨지만 좀더 응용하신다면 더블탭 롱프레스, 트리플탭 등등 입맛에 맞게 고칠수 있어요.
에몽군
IP 223.♡.99.211
10-30 2024-10-30 18:13:50
·
https://www.clien.net/service/board/lecture/18830540CLIEN

주셨던 코드에서 화면 중앙에 알림 표시하는 것을 추가했습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.