맥 한영전환 카라비너 설정 방법을 찾던 중, 터미널에서는 한글 입력이 자꾸 꼬이고 엑셀에서는 단축키가 겹쳐 결국 기본 설정으로 되돌렸던 경험이 있으신가요? 이런 문제가 발생하는 근본적인 이유는 Karabiner-Elements가 기본적으로 시스템 전역에 동일한 키 입력 규칙을 적용하는 '글로벌(Global)' 방식이기 때문입니다. 기본 설정만으로는 모든 애플리케이션에 똑같은 키보드 동작을 강제하게 되며, 이는 특정 키가 단축키로 필수적인 프로그램에서 치명적인 결함으로 작용합니다. 예를 들어, 개발자에게 있어 터미널의 한글 입력 오류는 단순한 불편함을 넘어 작업 효율을 급격히 떨어뜨리는 요인입니다. 이 글에서는 Karabiner의 내부 데이터 구조와 필터링 로직을 분석하여, 애플리케이션별로 맥 한영전환 카라비너 설정 방법을 완벽하게 분리하고 적용하는 원리와 절차를 상세히 다룹니다.
많은 사용자가 단순히 '한영키'를 'Cmd+Space'로 바꾸는 수준에서 설정을 마치지만, 실제로는 특정 앱에서는 이 기능이 비활성화되거나 다른 키로 동작해야 할 때가 많습니다. 단순 전역 설정은 한계가 명확합니다. 예를 들어, 포토샵에서는 특정 키 조합이 브러시 크기 조절로 쓰이지만, 일반 에디터에서는 한영 전환으로 쓰여야 하는 경우가 있습니다. 이런 충돌을 방지하기 위해 Karabiner는 애플리케이션을 식별하는 고유 기능을 제공합니다. 개발자가 코드를 작성하는 VS Code에서는 Ctrl+Space를 자동완성으로 사용해야 하므로 한영 전환용으로 쓸 수 없지만, 크롬 브라우저에서는 빠른 전환이 필요한 상황이 이에 해당합니다. Karabiner는 이러한 요구사항을 충족하기 위해 JSON 기반의 복잡한 조건문을 제공하며, 이를 활성화하면 앱마다 전혀 다른 키보드 맵을 구축할 수 있습니다.
이 글을 통해 단순한 키 매핑을 넘어, Karabiner의 complex_modifications 기능을 심층적으로 활용하는 방법을 익힐 수 있습니다. 단순히 키를 바꾸는 것이 아니라, "이 앱이 켜져 있을 때만, 그리고 이 입력 소스가 활성화되어 있을 때만"이라는 정교한 논리를 구사할 수 있게 됩니다. 특정 앱이 실행 중일 때만 규칙을 로드하는 '조건부 설정'을 통해, 터미널과 같은 개발 환경과 일반 문서 작성 환경에서의 키보드 동작을 완벽하게 분리하는 맥 한영전환 카라비너 설정 방법을 단계별로 설명합니다. 이를 통해 여러분의 맥북은 사용하는 프로그램에 따라 최적화된 입력 장치로 변모하게 될 것입니다.
- Karabiner의 JSON 설정 파일 구조와 conditions 블록의 역할 이해하기
- 애플리케이션 번들 ID(Bundle Identifier)를 활용한 정밀 타겟팅 기법
- 충돌을 방지하는 우선순위 설정 및 실전 JSON 코드 작성법
- 보안 및 접근 권한 문제를 자체적으로 해결하는 트러블슈팅 노하우
맥에서 카라비너 한영 전환을 앱별로 개별 설정하는 방법을 단계별로 안내해, 키보드 단축키와 시스템 환경설정을 조합해 효율적으로 전환할 수 있도록 돕습니다.
Karabiner-Elements의 필터링 원리와 한영 전환 로직 분석
Karabiner-Elements는 macOS 커널 확장이 아닌 '시스템 확장(System Extension)' 형태로 작동하며, 키보드 입력 이벤트가 운영체제에 도달하기 전에 이를 가로챕니다. 사용자가 키를 누르면 하드웨어 인터럽트가 발생하는데, Karabiner는 이 신호를 감지하여 미리 정의된 규칙 집합(Rule Set)과 대조합니다. 만약 규칙에 일치하는 항목이 있다면, Karabiner는 원래 키 입력을 삭제(delete)하고 변환된 키 입력(insert)을 생성하여 애플리케이션으로 전달합니다. 이 과정은 수백만분의 1초 단위로 처리되므로 사용자는 지체감을 전혀 느끼지 못합니다. 하지만 이 필터링 과정에 애플리케이션 식별 로직이 포함되지 않는다면, 모든 앱에 동일한 키가 전달되어 앞서 언급한 단축키 충돌 문제가 발생합니다.
한영 전환 설정의 핵심은 macOS의 입력 소스(Input Source)를 제어하는 키코드를 정확히 아는 데 있습니다. Apple은 공식적으로 한영 전환을 위해 특정 키코드를 할당하지 않고, 키보드 타입에 따라 다르게 동작하도록 허용했으나, Karabiner는 이를 key_code: korean_lang 또는 key_code: english_lang 같은 가상 키코드로 추상화하여 제공합니다. 실제로 내부 동작을 살펴보면, Karabiner는 현재 활성화된 입력 소스를 확인한 뒤, 해당 키코드가 입력되면 입력 모드를 토글(Toggle)하는 로직을 수행합니다. 즉, 사용자가 '한글' 상태에서 korean_lang 키를 누르면 시스템은 이를 감지하여 '영어'로 전환하고, 그 반대의 경우도 마찬가지입니다.
Karabiner-Elements 14.0.0 이상 버전부터는 입력 소스 변경을 더욱 정교하게 제어하기 위해
input_source 조건을 지원합니다. 이를 통해 단순히 키를 매핑하는 것을 넘어, 특정 입력 소스가 선택되어 있을 때만 특정 키를 동작시키는 규칙을 만들 수 있습니다. 예를 들어, 한글 입력 소스가 활성화되어 있을 때만 특정 단축키를 다른 기능으로 변경하는 등의 고급 설정이 가능해집니다.
앱별로 설정을 다르게 적용하기 위해서는 이러한 필터링 과정에 '조건(Condition)'을 추가해야 합니다. Karabiner의 이벤트 처리 파이프라인은 가장 먼저 현재 '전면(frontmost)'에 있는 애플리케이션 식별자를 확인합니다. 따라서 사용자가 '한글' 입력기가 필요한 에디터를 사용 중일 때는 한영 전환 키를 활성화하고, '영어'만 쓰는 터미널을 사용 중일 때는 이 키를 다른 기능(예: 커맨드 창 호출)으로 재매핑하는 것이 가능합니다. 이것이 맥 한영전환 카라비너 설정 방법의 기초가 되는 원리입니다. 또한, Karabiner는 simple_modifications와 complex_modifications 두 가지 모드를 제공하는데, 앱별 조건부 설정은 기능이 더 강력한 후자에서만 구현할 수 있다는 점을 기억해야 합니다.
이 필터링 메커니즘을 이해하면 단순한 키 변경 이상의 작업이 가능해집니다. 예를 들어, 특정 게임을 실행할 때는 키보드의 모든 입력을 원래 상태로 복구하거나, 특정 전문 소프트웨어에서만 펑션 키를 미디어 제어 키로 변환하는 등의 작업이 이 원리를 통해 가능합니다. 즉, Karabiner는 단순한 매크로 프로그램이 아니라, macOS의 입력 장치 드라이버 레벨에서 개입하여 사용자의 의도에 맞게 입력 데이터를 재가공하는 강력한 미들웨어라고 볼 수 있습니다.
Photo by Moritz Kindler on Pexels
맥 한영전환 카라비너 설정 방법의 핵심, JSON 구조와 조건문 파헤치기
Karabiner의 모든 설정은 JSON(JavaScript Object Notation) 형식으로 저장되며, 기본 경로는 ~/.config/karabiner/karabiner.json입니다. 이 파일은 Karabiner 앱 내의 'Complex modifications' 탭에서 규칙을 추가하면 자동으로 갱신되지만, 숙련된 사용자는 이 파일을 직접 수정하여 더욱 정교한 제어를 할 수 있습니다. 이 파일을 텍스트 에디터로 열어보면 profiles라는 배열(Array) 안에 다양한 설정이 포함되어 있는 것을 볼 수 있습니다. 사용자는 여러 개의 프로필을 만들 수 있으며, 각 프로필은 서로 독립적인 규칙 집합을 가질 수 있습니다. 앱별 설정을 구현하려면 현재 활성화된 프로필의 complex_modifications 섹션 내에 있는 rules 배열을 조작해야 합니다. 각 규칙(rule)은 description, manipulators라는 두 가지 주요 속성을 가지며, 실제 동작은 manipulators 안에 정의됩니다.
manipulators 객체 내부에는 from(입력), to(출력), 그리고 conditions(조건)이라는 필수 요소가 있습니다. 맥 한영전환 카라비너 설정 방법의 핵심은 바로 이 conditions 블록을 어떻게 구성하느냐에 달려 있습니다. from 블록에는 사용자가 누를 키(예: key_code: space, modifiers: command)를 정의하고, to 블록에는 변환될 키(예: key_code: korean_lang)를 정의합니다. 여기까지는 일반적인 키 매핑과 동일합니다. 하지만 conditions 블록이 추가되면 이 매핑은 "언제나"가 아닌 "특정 상황에서만" 발생하게 됩니다. conditions는 배열 형태로, 여러 개의 조건을 동시에 명시할 수 있으며, 기본적으로 AND 연산(모든 조건이 참이어야 함)으로 작동합니다.
conditions 객체에서 가장 중요한 키는 type입니다. 애플리케이션을 지정할 때는 type: frontmost_application_if를 사용하고, 반대로 특정 앱에서 제외할 때는 frontmost_application_unless를 사용합니다. 그리고 bundle_identifiers라는 배열 안에 타겟 앱의 고유 식별자를 입력합니다. 이 번들 ID는 앱의 파일명과 다를 수 있으므로 반드시 시스템에서 정확한 값을 확인해야 합니다. 예를 들어, 크롬 브라우저의 경우 com.google.Chrome이며, VS Code의 경우 com.microsoft.VSCode입니다. 이 구조를 통해 우리는 "만약 전면 앱이 크롬이라면, Cmd+Space를 한영 전환 키로 바꿔라"라는 명령을 내릴 수 있는 것입니다.
manipulators 배열 내의 하나의 객체는 다음과 같이 구성될 수 있습니다.- description: "Chrome에서 Cmd+Space를 한영전환으로 변경"
- from: { "key_code": "space",
동영상으로 보는 맥 한영전환 카라비너 설정 방법
글로 충분하지 않다면 관련 영상을 함께 보세요. 클릭하면 YouTube에서 검색 결과로 이동합니다.
자주 묻는 질문
Q. 맥에서 한영 전환을 카라비너(Karabiner)로 설정했는데, 특정 앱에서는 동작하지 않아요. 왜 그런가요
A. 일부 앱은 자체적인 키 입력 방식을 사용해 시스템 레벨의 키 리맵을 무시합니다. 카라비너의 ‘앱별 규칙’에서 해당 앱을 별도로 설정하거나, 그 앱의 단축키를 비활성화하면 해결됩니다.
Q. 한영 전환 키를 ‘스페이스 바 + 한/영’으로 바꾸고 싶은데 어떻게 해야 하나요
A. Karabiner-Elements → Complex Modifications → Add rule → ‘Change space bar to Korean/English toggle’ 같은 사전 정의된 규칙을 선택하면 됩니다. 직접 만들고 싶다면 JSON 파일에 "from": {"key_code":"spacebar","modifiers":["left_shift"]} 형태로 추가하세요.
Q. 카라비너를 최신 macOS에서 사용하려면 어떤 버전을 설치해야 하나요
A. macOS Ventura(13) 이상에서는 Karabiner-Elements 14.10.0 이상을 권장합니다. 공식 홈페이지에서 최신 릴리스를 다운로드하고, 시스템 환경설정 > 보안 및 개인 정보 보호에서 ‘입력 모니터링’ 권한을 부여하면 정상 작동합니다.
Q. 한영 전환 단축키가 다른 언어(예: 일본어) 입력에도 영향을 주나요
A. 기본 설정에서는 한/영 전환만을 감지하지만, ‘Input source toggle’ 옵션을 켜면 현재 선택된 입력 소스가 무엇이든 토글됩니다. 따라서 일본어 입력 중에도 같은 키를 눌르면 일본어/한영 전환이 이루어집니다.
함께 읽으면 좋은 글
