본문 바로가기
기술 기록/기타

Hammerspoon, lua ) 해머스푼 init.lua v0.206a

by Fola 2023. 2. 19.

 

Hammerspoon, lua ) 해머스푼 init.lua v0.206a

 

이전글/관련글

2022.04.24 - [기술 기록/기타] - 카라비너(Karabiner-Elements) caps lock 커스텀 키 매핑, json 편집

2022.06.29 - [기술 기록/기타] - Hammerspoon, lua ) 해머스푼 코딩

 

0. Github Link

https://github.com/dpcalfola/hammerspoon_config

 

GitHub - dpcalfola/hammerspoon_config

Contribute to dpcalfola/hammerspoon_config development by creating an account on GitHub.

github.com

 

위의 링크를 타고 들어가시면 단축키 리스트와 해머스푼 설치 및 코드 적용 방법을 안내하고 있습니다.

코드 내부에도 자세히 주석을 달아놓았습니다.

lua 언어를 잘 모르더라도 쉽게 원하시는 방향으로 참고하시거나 수정하여 사용하실 수 있으리라 생각합니다.

 

위 저장소의 코드는 누구라도 사용, 수정 및 재배포가 가능합니다.

필수사항은 아니나, 재배포 시 출처를 표기해 주시면 감사하겠습니다.

 

 

1. 새 버전의 hammerspoon init.lua 코드

 

맥 os 환경에서 코딩 및 개발을 경험을 쌓으며

입력 속도와 MacOS 제어의 편의성을 개선하기 위해 틈틈이 여러 단축키들을 추가했습니다.

 

이 포스트는 지난 6월에 작성된 해머스푼 포스팅 이후 추가된 기능들에 대한 정리 및 안내 포스팅입니다.

 

 

2. 한영전환 인풋랙 문제 완전 해결

2.1

이전엔 한영전환의 커스텀 키를 Karabiner에서 설정하여 사용하였습니다.

그러나 이 방법에는 인풋랙이 존재했고, 이를 해결하기 위해 많은 시간을 투자했지만 결국 실패했습니다.

 

하지만 해머스푼에서 한영전환 키를 커스텀하면서 자연스럽게 인풋랙을 해결했습니다.

 

현재 매핑된 한영 전환 관련 조합키는 다음과 같습니다. 더불어 언어가 전환될 때 화면에 중앙에 0.4초간 현재 언어가 표시됩니다.

 

  • 한영 전환:
    • ctrl + space
  • 입력 언어 직접 선택 1:
    • ctrl + opt + cmd + K (Korean)
    • ctrl + opt + cmd + J (English)
  • 입력 언어 직접 선택 2 (빠르고 편함)
    • ctrl + shift + K (Korean)
    • ctrl + shift + J or L(English)
    •  

<입력 언어 직접 선택 2> 방법의 추천 손가락 배치는 다음과 같습니다. 익숙해지면 매우 편하고 빠르게 언어 선택이 가능합니다.

  • 왼쪽 ctrl - 왼손 소지
  • 오른쪽 shift - 오른손 소지
  • 오른쪽 K or J or L - 오른손 검지

 

2.2

이전에 사용하던 카라비너 세팅 파일에는 현재 해머스푼에서 한영전환 키로 사용하는 ctrl + space 가 맵핑되어 있습니다.

이를 삭제한 카라비너 세팅 파일 fola_custom_v2.2.json을 제공하고 있습니다.

 

https://github.com/dpcalfola/Karabiner_custom_json

 

참고) 사용하던 CapsLock 조합키 ( hjkl 방향키, delete, backspace, enter )는

Hammerspoon이 아닌 Karabiner에서 계속 처리합니다.

 

 

3. 시스템 잠그기, sleep 모드 진입

모니터를 접으면 자동으로 sleep 되는 맥북과 달리

맥스튜디오를 사용하면서는 자리를 비울 때마다

모니터 우상단의 시스템 메뉴 > sleep 버튼을 눌러 잠자기 모드에 진입하곤 했습니다.

 

마우스를 길게 움직이는 대신 단축키로 이를 해결하였습니다. 

 

* 시스템 잠그기

ctrl + opt + cmd + shift + L

즉시 시스템 잠금상태 돌입, 

잠금 상태에서 5초간 입력이 없다면 sleep 모드로 돌입한다.

 

 

4. 윈도우 컨트롤

4.1

저는 트리플 모니터를 사용하고 있습니다. 작업환경이 넓어지는 대신 마우스이 이동 범위가 꽤 길어지는 단점이 있습니다.

이를 보완하기 위해 만든 여러 단축키 중 하나입니다.

활성회된 윈도우를 왼쪽 혹은 오른쪽 모니터로 단축키로 이동시킵니다.

 

* 윈도우를 다른 확장 모니터로 이동

ctrl + opt + cmd + ([, ])

활성화된 윈도우가 (왼쪽, 오른쪽) 확장 모니터로 이동한다.

모니터 간 이동 이후 윈도우 크기 조절 및 이동 단축키를 사용하여 깔끔하게 윈도우를 위치시킬 수 있다. 

 

4.2

윈도우 사이즈 조정 및 이동

이전의 22년 6월 해머스푼 단축키에 대한 포스팅 시점에

1/2 단위 윈도우 사이즈 조정 및 이동 단축키를 만들어 사용하고 있었습니다.

 

* 1/2 단위 윈도우 사이즈 조정 및 이동

ctrl + opt + cmd + 조합키

조합키 목록:

  • left arrow -> 윈도우를 왼쪽 절반으로 이동
  • right arrow -> 윈도우를 오른쪽 절반으로 이동
  • up arrow -> 윈도우를 위쪽 절반으로 이동
  • down arrow -> 윈도우를 아래쪽 절반으로 이동
  • pageup or 0 -> 윈도우를 전체 화면 크기로 설정
  • home -> 윈도우의 세로 크기를 아래부터 2/3 크기로 설정

 

여기에 추가로 1/4 단위 단축키를 추가하였습니다.

 

* 1/4 단위 윈도우 크기 조절 및 이동

ctrl + opt + cmd + (O, P, L, ;)

활성화 윈도우가 1/4 크기로 조정되어 (1,2,3,4) 분면으로 이동한다

 

 

5. 현재 시간 표시

5.1

시간의 흐름을 인지하기 위해 만든 단축키입니다.

 

* 현재시각 표시

ctrl + opt + cmd + T

현재 시각이 소리와 함께 시:분:초 단위로 표시된다.

 

5.2

원래 목표는 타임 퍼즐링 현상(타임 퍼즐링과 관련한 내용은 언젠가 블로그에 글을 작성할 생각입니다)을 해소하기 위해

매 정시마다 현재 시각을 소리와 함께 표시하는 코드를 작성하려고 했습니다.

코드는 적절하게 작성되었다고 생각했는데, 최초 한두 번 이후에는 동작하지 않는 문제가 있었습니다. 

여러 아이디어를 짜 코드 수정을 해 보았지만, 원하는 결과를 얻지 못해 포기하였습니다.

 

그 과정에서 문제의 근본적인 원인을 추측하게 되었습니다. 

바로 lua 언어가 싱글 쓰레드만 지원하는 언어라는 점이었습니다.

 

매 정시에 알람이 울리는 코드가 큐에 올라가 있어도,

중간에 다른 코드가 실행되면 큐에 대기하고 있는 알람 코드를 덮어 씌운다는 가설입니다.

 

비동기 처리를 통해 해결해보려 했으나

lua 언어는 멀티쓰레드를 지원하지 않는다는 점을 알게 되었던 거죠.

 

매 정시 알람기능은 다른 프로젝트에서 다른 방법을 통해 새 솔루션을 개발해 보려고 합니다. 

 

 

6. 마치며

6.1

이 외에도 자잘한 기능들이 더 있습니다.

단축키 전체 리스트는 깃허브 README에 안내되어 있습니다.

 

제 코드가 누군가에게 도움이 되었으면 좋겠습니다.

 

6.2

새 아이디어가 떠오를 때마다 기능을 계속 추가할 예정입니다. 

새 기능이 적절하게 쌓이면 다음 포스팅으로 찾아뵙겠습니다.

감사합니다.

 

댓글