繁體中文

SpaceLauncher macOS 版

SpaceLauncher 的故事

故事開始於 2013 年,和 Alfred 有關。

我讀到一篇關於在 Alfred 裡新增 App 熱鍵的文章,立刻覺得這件事很對:用一個鍵跳到某個 App,比先搜尋它要快得多。

那時候也有很多人把 Caps Lock 改成「hyperkey」,但這一直不適合我。我對打字有點老派,每個鍵都有固定手指負責;Caps Lock 和 1、Q、A、Z 都由左手小指負責。按住 Caps Lock 時,小指就被佔住了,反而碰不到那些我想和它組合的鍵。像 Caps Lock + A 這樣的組合,我的手根本做不出來。

後來我轉向 LaunchBar,但它沒有這個功能。於是我開始用 Karabiner。既然已經要改鍵,我不如選一個最舒服的鍵。最舒服的鍵已經在拇指下面,就是 Space。我完全用 Karabiner 拼出了一個和今天 SpaceLauncher 很接近的東西。(舊配置在這裡,現在大概早就壞了。)所以,是的,Karabiner 可以做這件事。對一些人來說它現在仍然可以。但不是對所有人都可以,原因後面會說。

後來一次 macOS 更新來了,Karabiner 還沒跟上。我已經太習慣這種打字方式,沒法不用它。當時我誤以為 Karabiner 已經停止維護,於是決定自己做一個。(其實它完全沒有停止維護,直到今天還在更新。謝謝 Karabiner。)

比看起來更難的部分

真正做出來並交給其他人用以後,我才學到一件沒預料到的事:每個人的打位元組奏都不一樣。

真實打字是重疊的。下一個鍵常常會在上一個鍵完全抬起之前按下,在 Space 周圍尤其常見。為了讓 Space 同時作為快速觸發器和普通空白鍵,我必須寫很多邏輯,比一開始想象得多得多。Karabiner、Hammerspoon、Keyboard Maestro 這類通用改鍵和自動化工具可以近似處理其中一部分,但 SpaceLauncher 是專門圍繞 Space 時序問題構建的。這個問題就是它存在的原因。

老實說,我不是一個很厲害的程式設計師,這團時序邏輯經常讓我頭暈。如果早知道它這麼難,我可能會直接等 Karabiner 更新。兩件事讓我繼續做下去:第一,我自己每天都用它。第二,時不時會有使用者發來很友善的訊息,或者帶來值得解決的問題。

一段很長的繞路

這條路並不筆直。

每當 App 達到一個穩定狀態,我就會失去動力,因為新功能真的很難加。到了 2022 年左右,有使用者問能不能把單個修飾鍵輕按作為前導鍵。我喜歡這個想法。我做出了一種透過視窗接收觸發鍵的方法,足夠乾淨,可以放到 App Store,於是它變成了 keyseq。我也認真打磨了它;修飾鍵同樣需要區分「前導鍵」和「正常使用」,所以裡面也有同類細碎的修補,只是稍微簡單一些。

然後我想:也許 keyseq 可以成為 SpaceLauncher 的核心。於是有了 SpaceLauncher 2,它支援今天所有型別的前導鍵。但底層結構有一個根本缺陷:透過視窗接收觸發鍵,後來證明很容易給自己製造麻煩。到那時它已經太繞了,我不想再開啟它。於是我慢慢轉向了 keyseq。SpaceLauncher,對不起。

還在繼續

然後,2026 年初,AI 終於變得足夠好了。

我說的是字面意思:剛剛足夠好,就在這個時間點。六個月前的 AI 還沒法解開這麼擰巴的邏輯。有了這些幫助,我終於可以回到多年來一直想做的事情。

所以這個故事還沒有結尾。SpaceLauncher 還沒有完成,而這正是最好的部分。更好的版本正在路上。我來了。