한국어

SpaceLauncher macOS용

SpaceLauncher 이야기

2013년, Alfred에서 시작되었습니다.

Alfred에서 앱 단축키를 추가하는 글을 읽고 바로 감이 왔습니다. 키 하나로 앱에 가는 것이 검색해서 찾는 것보다 훨씬 빨랐습니다.

그 무렵 사람들은 Caps Lock을 ‘하이퍼키’로 바꾸고 있었지만, 저에게는 전혀 맞지 않았습니다. 저는 타자에 관해서는 고지식해서 키마다 담당 손가락이 정해져 있습니다. 그런데 Caps Lock은 1, Q, A, Z와 같은 왼쪽 새끼손가락 담당입니다. Caps Lock을 누르고 있으면 그 새끼손가락이 묶여서, 정작 조합하고 싶은 키에 닿지 못합니다. Caps Lock + A 같은 조합은 제 손이 만들 수 없는 동작입니다.

나중에 LaunchBar로 옮겼는데, 그 기능이 없었습니다. 그래서 Karabiner로 눈을 돌렸습니다. 어차피 키를 다시 매핑할 거라면 편한 키를 고르는 게 낫고 — 이미 엄지 아래에 있는 가장 편한 키가 스페이스였습니다. 오늘날 SpaceLauncher가 하는 일에 가까운 것을 전부 Karabiner 안에서 얼기설기 만들었습니다. (옛 설정은 여기 있습니다 — 아마 진작에 망가졌겠지만요.) 그러니까 맞습니다. Karabiner로도 할 수 있었습니다. 어떤 사람들에게는 지금도 가능합니다. 다만 모두에게는 아닙니다. 그 이유는 뒤에서 말씀드리겠습니다.

그러던 어느 날 macOS 업데이트가 나왔는데 Karabiner가 아직 따라오지 못했습니다. 이 타이핑 방식에 너무 길들여져 있어서 포기할 수 없었고, 당시에는 Karabiner가 버려진 줄 알았습니다. 그래서 직접 만들기로 했습니다. (전혀 버려지지 않았습니다 — 그 후로도 오랜 세월이 지난 지금까지 업데이트되고 있습니다. 고마워요, Karabiner.)

보기보다 어려웠던 부분

만들어서 다른 사람들 손에 쥐여 주고 나서야, 예상치 못한 사실을 배웠습니다. 사람마다 타자 리듬이 다르다는 것입니다.

실제 타이핑은 겹칩니다. 앞 키가 완전히 올라오기 전에 다음 키가 내려가는 일이 흔하고, 스페이스 주변에서는 늘 일어납니다. 스페이스가 단축키 트리거이면서 평범한 스페이스 바이게 하려면 엄청난 양의 로직을 써야 했습니다 — 시작할 때 짐작했던 것보다 훨씬 많이요. Karabiner, Hammerspoon, Keyboard Maestro 같은 범용 리매핑·자동화 도구도 이 중 일부는 흉내 낼 수 있지만, SpaceLauncher는 바로 이 스페이스 타이밍 문제를 중심으로 만들어졌습니다. 이 문제가 존재 이유의 전부입니다.

솔직히 말하면 저는 대단한 프로그래머가 아니고, 그 얽히고설킨 타이밍 로직에 머리가 핑핑 돌기 일쑤였습니다. 이렇게 어려울 줄 알았다면 그냥 Karabiner 업데이트를 기다렸을지도 모릅니다. 버틸 수 있었던 이유는 두 가지였습니다. 하나, 제가 매일 쓰고 있었습니다. 둘, 이따금 사용자가 따뜻한 쪽지를 보내 주거나, 풀 만한 가치가 있는 문제를 들고 와 주었습니다.

긴 우회로

길이 곧았다고는 하지 않겠습니다.

앱이 안정된 지점에 도달할 때마다 추진력이 바닥났습니다 — 새 기능을 더하기가 그저 어려웠으니까요. 그러다 2022년쯤, 한 사용자가 보조 키 한 번 누르기를 리더 키로 쓸 수 없느냐고 물었습니다. 마음에 드는 아이디어였습니다. 트리거 키를 윈도우를 통해 받는, App Store에 올릴 수 있을 만큼 깔끔한 방법을 찾아냈고, 그것이 keyseq가 되었습니다. 거기에도 정성을 들였습니다 — 보조 키 역시 리더 키와 일반 사용을 구분해야 하므로, 안에는 같은 종류의 까다로운 땜질이 조금 단순한 형태로 들어 있었습니다.

그러다 생각했습니다. keyseq가 SpaceLauncher의 핵심이 될 수 있지 않을까. 그것이 SpaceLauncher 2가 되었고, 오늘날의 모든 리더 키를 지원하게 되었습니다 — 하지만 그 바탕 구조에는 근본적인 결함이 있었습니다(트리거 키를 윈도우로 받는 것은 스스로 골칫거리를 만드는 훌륭한 방법으로 판명되었습니다). 그리고 그때쯤에는 너무 엉켜 버려서 다시 열어 볼 엄두가 나지 않았습니다. 그렇게 저는 keyseq 쪽으로 흘러갔습니다. SpaceLauncher, 미안해.

그래도 계속

그리고 2026년 초, AI가 마침내 충분히 좋아졌습니다.

말 그대로입니다 — 바로 지금, 간신히 충분할 만큼요. 여섯 달 전의 AI였다면 이렇게 뒤엉킨 로직을 풀어내지 못했을 겁니다. 그 도움으로, 몇 년 동안 하고 싶었던 일로 드디어 돌아갈 수 있게 되었습니다.

그래서 이 이야기에는 결말이 없습니다. SpaceLauncher는 완성되지 않았습니다 — 그리고 그것이 가장 좋은 부분입니다. 더 나은 것이 오고 있습니다. 자, 갑니다.