카라비너(Karabiner)보다 뛰어난 키보드 툴을 소개합니다 (그 이유까지!)

BBetter Stack
Computing/SoftwareVideo & Computer GamesConsumer Electronics

Transcript

00:00:00안녕하세요, 키보드의 잠재력을 극대화해 주는 오픈 소스 도구인 Kanata를 소개합니다.
00:00:03키를 짧게 누를 때와 길게 누를 때 서로 다른 키가 입력되게 하거나,
00:00:08키 하나로 여러 키 입력을 실행하고,
00:00:10사용자 지정 키 매핑을 위해 여러 레이어를 활용할 수도 있죠.
00:00:12저처럼 주로 키보드만 사용하려고 노력하는 사람에게는 정말 유용한 도구입니다.
00:00:16그런데 설정 구문이 왜 이렇게 생소할까요?
00:00:19그리고 왜 Karabiner나 'K'로 시작하는 다른 도구 대신 이걸 써야 할까요?
00:00:24구독 버튼 누르시고, 바로 알아보겠습니다.
00:00:27Kanata는 원주민 이로쿼이어로 '마을'이라는 뜻인데,
00:00:30사실 키보드와는 아무런 상관이 없습니다.
00:00:33하지만 저처럼 기계식 키보드에 관심이 많으시다면 QMK에 대해 들어보셨을 겁니다.
00:00:37QMK는 유명한 오픈 소스 키보드 펌웨어로,
00:00:39키 입력 신호가 컴퓨터에 전달되기 전에 키보드 단에서 리매핑을 해줍니다.
00:00:42Kanata는 QMK와 비슷하지만 소프트웨어 수준에서 작동합니다.
00:00:46그래서 노트북 키보드를 포함한 모든 키보드에서 사용할 수 있죠.
00:00:49또한 Rust로 작성되었기 때문에 속도가 매우 빠르고,
00:00:52타이핑할 때 지연 시간이 거의 느껴지지 않습니다.
00:00:55하지만 설정하는 과정이 아주 간단하지는 않습니다.
00:00:57Mac용 Karabiner와 함께 Kanata를 설치한 후에는,
00:01:00이 부분은 나중에 더 자세히 설명해 드릴게요.
00:01:02Lisp에서 영감을 받은 S-표현식 구문을 사용해 설정 파일을 작성해야 하거든요.
00:01:07제가 본 것 중 가장 특이한 설정 구문입니다.
00:01:11일반적으로 함수 이름을 괄호 밖에 쓰는 것과 달리,
00:01:16이 설정 파일에서는 괄호 안에 인자와 함께 함수 이름을 씁니다.
00:01:21함수를 중첩해서 쓰기 시작하면 훨씬 더 생소하게 느껴지는데,
00:01:24설정에서 이런 중첩 사용은 꽤 흔합니다.
00:01:26함수 이름이 괄호 밖에 있지 않고
00:01:30모든 것이 안에 들어가 있어서 처음에는 이해하기 좀 어려워 보이죠.
00:01:35그래도 익숙해지면 괜찮아집니다.
00:01:36단순한 키맵 예시로 'A' 키를 'X'로 매핑하고 싶다고 가정해 봅시다.
00:01:41먼저 defsource 함수로 소스 키인 'A'를 지정하고,
00:01:46최소 하나 이상의 deflayer 함수를 사용해 출력될 키를 지정합니다.
00:01:50이름은 'base'로 하고 인자로 'X'를 주겠습니다.
00:01:53설정 파일에 나열되지 않은 키들은 원래대로 작동합니다.
00:01:57'B'와 'C'를 추가해서 각각 'X'와 'Z'로 매핑하면 이런 모습이 됩니다.
00:02:02다행히 공백과 탭은 상관없기 때문에,
00:02:04보기 편하게 간격을 띄워서 가독성을 높일 수 있습니다.
00:02:08설정 파일로 할 수 있는 몇 가지 멋진 기능들이 더 있습니다.
00:02:10탭-홀 기능을 설정해서 살짝 누를 때와 길게 누를 때의 동작을 다르게 할 수 있습니다.
00:02:15제한 시간을 설정하고 매핑할 키를 추가하기만 하면 됩니다.
00:02:19이 경우 'A'를 짧게 누르면 'X'가 입력되고, 길게 누르면 'Left Shift'로 작동합니다.
00:02:24편의를 위해 defvar 함수로 변수를 등록할 수도 있습니다.
00:02:28자주 쓰는 값을 변수로 정하고 달러 기호($)로 참조하면 아주 편리합니다.
00:02:32홈 로우(Home row) 키들을 4개의 조합 키로 매핑할 때 완벽한 기능이죠.
00:02:36솔직히 처음엔 정말 이상해 보였지만,
00:02:39지금은 완전히 익숙해져서 다른 방식으로는 키보드를 못 쓰겠더라고요.
00:02:42또한 'editor' 같은 이름으로 새로운 deflayer를 만들 수도 있습니다.
00:02:46영상 편집 전용 레이어를 만들어 완전히 새로운 키맵을 할당하고,
00:02:51레이어 전환 키를 통해 간편하게 바꿀 수 있죠.
00:02:54레이어 전환 등을 활용해 더 멋진 걸 해보고 싶다면,
00:02:58다른 프로그램이 신호를 받을 수 있도록 Kanata의 TCP 서버를 활성화하면 됩니다.
00:03:03제 경우에는 SketchyBar가 Kanata의 신호를 듣도록 설정해서,
00:03:06레이어를 바꿀 때마다 데스크탑 상단에 표시되게 했습니다.
00:03:10이 정도 수준까지 설정하려면 꽤 많은 공을 들여야 하지만,
00:03:13AI의 도움을 받으면 그리 어렵지 않습니다.
00:03:16그런데 이 모든 게 대단하긴 해도, 왜 Karabiner Elements 대신 Kanata를 써야 할까요?
00:03:21Karabiner는 Kanata의 모든 기능은 물론 그 이상의 기능도 갖췄으니까요.
00:03:24특정 애플리케이션이나 키보드별 매핑 기능도 있고,
00:03:28직관적인 이벤트 뷰어로 키를 테스트할 수도 있죠.
00:03:30터미널 명령어가 익숙지 않은 분들을 위한 깔끔한 GUI도 제공합니다.
00:03:35하지만 저에게 Karabiner의 탭-홀 기능은 홈 로우 모드용으로 쓰기에 많이 부족했습니다.
00:03:40제대로 작동하게 하려고 정말 많은 조사와 설정을 거쳐야 했죠.
00:03:45겨우 성공해도 Kanata만큼 직관적이지 않았습니다.
00:03:49길게 누른 걸 짧게 누른 것으로 인식하는 일이 잦았거든요.
00:03:51반면 Kanata는 별다른 조정 없이도 이 기능을 완벽하게 처리해 줬습니다.
00:03:56그래서 다시 Karabiner로 돌아갈 필요를 못 느꼈죠.
00:03:59홈 로우 모드를 쓰고 싶다면 Kanata를 강력 추천합니다.
00:04:03물론 Kanata가 완벽하다는 건 아닙니다.
00:04:05사용하는 키보드가 다르고 키맵도 다르다면 각각의 설정 파일이 필요합니다.
00:04:09키보드 연결을 해제할 때마다
00:04:12해당 키맵으로 전환하는 명령어를 실행해야 하는 게 좀 번거롭죠.
00:04:15또 Karabiner에서는 가능했던 재생/일시정지 버튼을 F8로 매핑하는 방법을 못 찾았습니다.
00:04:22MX Master 마우스와 연동하기 위해서도 몇 가지 수정이 필요했고요.
00:04:26다행히 대부분의 문제는 코딩으로 해결할 수 있었고,
00:04:30나중에 이 해결책들을 오픈 소스로 공개할 수도 있습니다.
00:04:31Kanata 커뮤니티가 더 커졌으면 좋겠네요.
00:04:34여러분이 친구나 동료들에게 이 영상을 공유해 주시면 도움이 되겠죠?

Key Takeaway

Kanata는 독특한 Lisp 기반 설정을 통해 홈 로우 모드와 탭-홀 기능을 완벽하게 구현하며, 기존 Karabiner보다 정교하고 빠른 키보드 커스터마이징 경험을 제공합니다.

Highlights

오픈 소스 키보드 커스텀 도구인 Kanata의 주요 기능 및 장점 소개

소프트웨어 수준에서 QMK 펌웨어와 유사한 기능을 구현하여 모든 키보드 호환 가능

Rust 언어 기반의 빠른 속도와 지연 시간 없는 타이핑 환경 제공

Lisp 스타일의 S-표현식(S-expression)을 사용하는 독특한 설정 방식

탭-홀(Tap-Hold) 기능 및 홈 로우 모드(Home row mods)에서의 탁월한 성능

TCP 서버 활성화를 통한 외부 상태 표시 도구(SketchyBar 등)와의 연동성

Karabiner Elements와 비교했을 때의 실질적인 사용 편의성 및 한계점

Timeline

Kanata 소개 및 주요 특징

영상은 키보드의 잠재력을 극대화할 수 있는 오픈 소스 도구인 Kanata를 소개하며 시작합니다. Kanata는 키를 짧게 누를 때와 길게 누를 때의 동작을 다르게 설정하거나, 레이어 기능을 통해 사용자 지정 키 매핑을 가능하게 합니다. 하드웨어 펌웨어인 QMK와 유사한 기능을 소프트웨어 레벨에서 제공하므로 노트북을 포함한 모든 키보드에서 사용 가능한 것이 큰 장점입니다. 특히 Rust 언어로 작성되어 매우 빠른 속도를 자랑하며 타이핑 시 지연 시간이 거의 발생하지 않습니다. 이러한 기술적 배경은 키보드 위주의 작업 효율을 중시하는 사용자들에게 강력한 매력으로 다가옵니다.

Lisp 기반의 독특한 설정 구문 이해

Kanata의 설정 파일은 Lisp에서 영감을 받은 S-표현식(S-expression) 구문을 사용하며, 이는 일반적인 설정 방식과는 매우 다릅니다. 함수 이름이 괄호 안에 들어가고 인자와 함께 기술되는 중첩 구조를 가지고 있어 처음 접하는 사용자에게는 생소하게 느껴질 수 있습니다. 화자는 'defsource' 함수로 소스 키를 지정하고 'deflayer' 함수로 출력 키를 매핑하는 기본적인 예시를 통해 설정 방법을 설명합니다. 비록 초기 학습 곡선은 존재하지만, 공백과 탭을 자유롭게 활용하여 가독성을 높일 수 있다는 점을 강조합니다. 이 섹션은 사용자가 Kanata의 독특한 문법 체계에 익숙해지도록 돕는 핵심적인 내용을 담고 있습니다.

고급 기능: 탭-홀, 변수 및 레이어 활용

단순 매핑을 넘어 탭-홀(Tap-Hold) 기능을 통해 하나의 키에 두 가지 역할을 부여하는 방법을 상세히 다룹니다. 예를 들어 'A' 키를 짧게 치면 입력이 되고 길게 누르면 'Shift'로 작동하게 설정할 수 있으며, 이는 홈 로우 모드 사용자에게 필수적입니다. 'defvar' 함수를 이용해 자주 사용하는 값을 변수로 지정하여 효율적으로 관리하는 팁과 영상 편집 전용 레이어를 만드는 방법도 소개합니다. 특히 Kanata의 TCP 서버를 활성화하여 SketchyBar와 같은 도구에 현재 레이어 상태를 실시간으로 표시하는 고급 활용 사례를 제시합니다. 이러한 기능들은 사용자가 자신의 작업 환경에 맞춰 키보드를 무한하게 확장할 수 있음을 보여줍니다.

Karabiner와의 비교 및 실제 사용 후기

많은 Mac 사용자들이 사용하는 Karabiner Elements와 Kanata를 직접 비교하며 Kanata를 선택한 이유를 설명합니다. Karabiner는 GUI와 다양한 기능을 제공하지만, 화자는 홈 로우 모드에서의 탭-홀 판정 정확도가 Kanata에서 훨씬 뛰어나다고 평가합니다. Karabiner에서 발생하던 입력 오류가 Kanata에서는 별다른 세부 조정 없이도 완벽하게 해결되었다는 점이 결정적인 전환 계기가 되었습니다. 물론 키보드별 개별 설정의 번거로움이나 특정 미디어 키 매핑의 어려움 같은 단점도 존재하지만, 이는 코딩과 커뮤니티의 도움으로 해결 가능한 수준입니다. 마지막으로 화자는 Kanata 커뮤니티의 성장을 기원하며 시청자들에게 정보 공유를 독려하며 영상을 마무리합니다.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video