맥에서 특정 키를 무조건 한글 또는 무조건 영어로 한영 전환하기

필자의 경우 윈도우에서는 오토핫키를 이용해 Ctrl + Spacebar 를 누르면 무조건 영어로, Alt + Spacebar 를 누르면 무조건 한글로 변환되도록 세팅해두고 사용을 하고 있습니다. Windows 와 macOS 를 동시에 사용하다 보니 맥에서도 동일하게 세팅을 해서 사용중인데요.

맥에서 위와 같은 언어 전환 방식을 적용하는 방법은 Karabiner-Elements 또는 구버전의 구름 입력기 등 다양한 형태로 진행 할 수 있지만 개인적으로 가장 간편하고 효과적인 것은 macOS용 데스크톱 자동화 도구인 Hammerspoon 을 사용하는 것으로, 이 방식을 꽤 오래도록 사용 하고 있습니다.

그래서 오늘은 맥에서 Hammerspoon 을 사용해 특정 키를 무조건 한글 또는 무조건 영어로 한영 전환하기에 대해서 알아 봅니다.

해당 포스트는 충분한 테스트 및 검증 후 작성 되었지만 이것이 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 봐주시길 바랍니다.


튜토리얼 환경 : macOS Monterey 12.2.1(m1), Hammerspoon

선행 사항

Hammerspoon_공식_사이트
Hammerspoon 공식 사이트

Hammerspoon 을 통해서 진행 하는 것이기 때문에 사용하는 맥에 Hammerspoon 이 설치 되어 있어야 합니다. Hammerspoon 을 설치하는 방법은 Hammerspoon 설치 및 기본적인 사용 방법에서 확인 할 수 있습니다.

macOS용 데스크톱 자동화 도구인 해머스푼을 이용 하여 시스템 레벨 API 를 Lua 스크립팅 엔진에 연결하거나 Lua 스크립트를 작성하는 것으로 시스템을 간단하게 조작할 수 있습니다.

컴퓨터에서 PC 유튜브 와 유튜브뮤직 을 앱으로 설치 해서 사용하는 방법

특정 키 입력 시 한글 및 영어 고정으로 언어 전환하기

해머스푼을 설치 후 언어 변경을 위한 Lua 스크립트를 등록 하면 아주 간단하게 원하는 단축키로 특정 언어로의 전환이 가능합니다.

Reload_Config_메뉴
Reload Config 메뉴
  1. 상단 메뉴막대의 해머스푼 hammespoon아이콘(1)을 클릭 해 점프 메뉴를 확장 후 Open Config (2)를 선택 한 뒤 init.lua 파일을 열어줍니다.
initlua_파일에_스크립트_작성
initlua 파일에 스크립트 작성
  1. init.lua 파일에 아래 스크립트를 작성 하거나 붙여넣기 ( Cmd + V ) 합니다.
---english
local input_english = "com.apple.keylayout.ABC"

function input_eng()
  local input_source = hs.keycodes.currentSourceID()
  if not (input_source == input_english) then
     hs.keycodes.currentSourceID(input_english)
  end
  hs.eventtap.keyStroke({}, '')
end
---korean
local input_korean = "com.apple.inputmethod.Korean.2SetKorean"

function input_kor()
  local input_source = hs.keycodes.currentSourceID()
  if not (input_source == input_korean) then
     hs.keycodes.currentSourceID(input_korean)
  end
  hs.eventtap.keyStroke({}, '')
end
--shortcut 
hs.hotkey.bind({'ctrl'}, 'space', input_eng)
hs.hotkey.bind({'shift'}, 'space', input_eng)
hs.hotkey.bind({'cmd'}, 'space', input_eng)
hs.hotkey.bind({'alt'}, 'space', input_kor)

위 스크립트는 주석 표기 기준으로 상단 입력 소스를 영문으로 변경하는 input_eng 함수 와 입력 소스를 한글로 변경하는 input kor 함수로 되어 있습니다. 하단 shortcut 이라고 표기 된 주석에서 각자 지정하고 싶은 키를 지정해 주면 되겠습니다.

  • 필자의 경우 3개의 키를 영문 전환 , 1개의 키를 한글 전환으로 사용 중입니다.
  • 단축키는 hs.hotkey.bind({'modifier keys'}, 'normal key', 입력 소스) 와 같은 형식으로 지정 합니다.
    • modifier keys : Cmd , Shift , Option , Ctrl 키로 지정 할 수 있습니다. ( OptionAlt 로 지정 해도 동일합니다.)
    • normal key : modifier keys 를 제외한 모든 키로 지정 할 수 있습니다.
  • 작성이 완료 되었다면 Cmd + S 로 파일을 저장합니다.
Reload_Config_로_적용
Reload Config 로 적용
  1. 다시 상단 메뉴막대의 해머스푼hammespoon 아이콘을 클릭 해 점프 메뉴를 확장 후 Reload Config를 선택 해 변경 내용을 다시 로드합니다. 이제 정상적으로 변환이 되어야 합니다.

FAQ

우선 단축키를 cmd 단일로 사용할 수도 있나요.

네, cmd 단일 키로 단축키를 설정할 수 있습니다. 그러나 이 경우, 단일 cmd키는 대부분의 맥OS 기능에서 사용되므로, 이를 단축키로 설정하면 기능간 충돌이 발생할 수 있습니다.
이는 특히 cmd 키를 눌러 다른 키와 결합하여 사용하는 경우에 문제가 될 수 있습니다. 그렇기 때문에 일반적으로 단축키 설정 시 단일 cmd키를 사용하는 것은 권장되지 않습니다. 이에 대해 이해하지만 그래도 필요하다면, 다음과 같이 코드를 수정하면 됩니다:

hs.hotkey.bind({}, 'cmd', input_eng)

위 코드는 cmd 키 단일로 눌렀을 때 input_eng() 함수가 실행됩니다. 이렇게 설정하면 cmd 단일 키를 사용하여 영어 입력 모드로 전환할 수 있습니다.

단축키를 오른쪽 cmd로 특정해서 사용할수 있나요.

macOS에서는 기본적으로 오른쪽 cmd 키와 왼쪽 cmd 키를 동일하게 취급합니다. 따라서 오른쪽 cmd 키만을 특정 단축키로 사용하는 것은 제한적입니다. 왼쪽 cmd 키와 오른쪽 cmd 키를 모두 포함하는 단축키로 설정하는 것은 가능합니다.


필요하다면 다른 라이브러리나 확장을 사용하여 왼쪽과 오른쪽 cmd키를 구분하는 것을 구현할 수는 있을 듯 합니다. 아직 지원이 되는지는 확인하지는 못했지만 세부적인 키 매핑과 수정을 할 수 있는 도구인 Karabiner-Elements 등을 활용하면 가능할 수도 있습니다.

단축키 설정이 기본적인 키 동작에 영향을 미칠 수 있나요.

이 부분도 추후 궁금해 할 분들이 계실까 해서 추가로 정리합니다.

  • 위의 코드는 특정 단축키를 설정하는 것이므로 기본적인 키 동작에 직접적인 영향을 주지 않습니다.
  • macOS에서는 단축키 설정에 대한 우선순위가 있으며, 해당 단축키가 등록되어 있을 때에만 동작합니다.
  • 하지만 앞선 내용에도 언급했듯 다른 키와 조합 시 충돌이 발생하거나 작업의 흐름에 방해가 될 수 있으니 이 부분을 이해해야 합니다.

1clipboard로 클립보드 매니저 히스토리 관리 동기화하기

마무리

이렇게, 맥에서 Hammerspoon 을 사용해 특정 키를 무조건 한글 또는 무조건 영어로 한영 전환하기에 대해 알아 보았습니다.

이렇게 한번 사용해 보기 시작하면 다시는 예전으로 돌아가지 못할 거라고 생각합니다.

그 만큼 편리한데요. 이렇게 저와 같이 무조건 한글 또는 무조건 영어로 전환하고 싶은 경우 위 내용을 참고 해 적용 후 사용 해 보시길 바랍니다.

참고

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

4 thoughts on “맥에서 특정 키를 무조건 한글 또는 무조건 영어로 한영 전환하기”

    • 안녕하세요. 질문 내용이 약간 모호해서 이해한 내용을 기준으로 답변을 드릴게요.
      cmd 단일 키로 단축키를 설정할 수 있으며 다음과 같이 코드를 수정하면 됩니다.

      hs.hotkey.bind({}, 'cmd', input_eng)

      그러나 이 경우, 단일 cmd 키는 대부분의 맥OS 기능에서 사용되므로, 이를 단축키로 설정하면 기능간 충돌이 발생할 수 있습니다. 이는 특히 cmd키를 눌러 다른 키와 결합하여 사용하는 경우에 문제가 될 수 있습니다. 그렇기 때문에 일반적으로 단축키 설정 시 단일 cmd 키를 사용하는 것은 권장되지 않습니다.
      그외 내용은 본문 FAQ에 업데이트 해 두었으니 같이 확인해 보세요.

      응답
  1. 좋은 설명 감사합니다.
    구름입력기를 사용하면 위 코드를 사용해도 한글로 전환이 안되는것 같습니다.
    혹시 구름입력기를 위 코드에서 사용할 수 있는 방법이 있을까요?

    응답
    • 네 아쉽게도 맥 자체 입력기 간 전환을 강제하는 것으로 구름 입력기라는 다른 입력기 상태에서는 사용할 수 는 없네요.(제가 알기론 ㅠ)

      응답

Leave a Comment