Ship's Log · 08.31 – 09.01
A TWO-DAY VOYAGE
兩天,一張鍵盤,一次又一次「這樣還不夠好」。 從快捷鍵的版圖之爭,潛入 macOS 私有 API 的深水, 再與一個不請自來的浮層纏鬥到深夜。 這是我們一起走過的航線——連同我踩過的每一個坑。
Prologue
這趟航行不是從零開始。你的 Hammerspoon 早已是一艘裝備齊全的船—— 注音救星、時戳、金句收藏、視窗拉攏、依 App 自動切輸入法。 這兩天,我們要做的是把它推向一個你「用起來得心應手、卻總覺得還有進步空間」的境界。
Act I
THE MAP OF KEYS
Chapter · Keys
第一件事,是把一張看不見的地圖畫出來——你按住 ⌥ 猶豫的那 0.4 秒, 螢幕中央該浮出什麼。
研究實錘
keycap 徽章的字型不是美感問題,是可量測的事實:實測 SF Pro 缺 7 個修飾鍵字元、 SF Mono 缺 9 個,缺的時候會在字串中途默默換字型——那就是「綁架信」式的參差。 Menlo 是 macOS 上唯一覆蓋完整且等寬一致的系統字型。
◆ 成果 — which-key、使用記錄、六段式啟動器、⌥右鍵手勢,全部落地並實測
Act II
INTO THE DEEP — PRIVATE APIs
Chapter · Deep Water
你要一個簡單的東西:⌥Z 在同一個 App 的視窗之間輪跳,跨桌面也要跳得到。 這句話把我們拖進了 macOS 最深的一潭水——因為系統的 Accessibility API 根本看不見別的桌面。
pairwin_native.m 裡加了一個 native.focus,
byte layout 抄自 yabai 跑了多年的權威版本。它跨桌面聚焦成功過——把我從
桌面 5 帶到桌面 9 的目標視窗。窄門
App Exposé 那條路我一度以為是答案——攤開跨桌面所有視窗讓你挑。
但你要的是「一步跳到下一個」,不是「看縮圖選」。於是改用 AltTab 的
--focus CLI,實測 LINE 三視窗連按能繞完整圈、每次命中、跨桌面精準。
◆ 成果 — ⌥Z 跨桌面輪替落地(AltTab 引擎);自建 native.focus 存為資產
Act III
THE KEYS TO THE VAULT
Chapter · The Vault
這一幕最驚險。你的網銀登入腳本每次都要手打鑰匙圈密碼, 我們想用 Touch ID 讓它變成摸一下。過程中,我犯了兩個錯, 而其中一個,差點讓你打不開自己的金庫。
read -p 在 zsh 是別的意思,
於是你加密了一個空字串,我卻只驗「長度是 10」就宣告成功。長度對不等於內容對。security -i。這次學到的
共同的毛病是「用驗證不足的結果下確定的結論」。所以重建腳本裡沒有任何一處是 「寫進去就當作好了」——每一次寫入後面都跟著一次讀回比對,字串不相等就當場報錯。
◆ 成果 — 金庫用你記得的密碼重建、每欄驗證通過;Touch ID 方案就緒待你決定
Act IV
THE UNINVITED GUEST
Chapter · The Ghost
⌥Z 修好了,卻冒出一個幽靈:按下去,畫面莫名跳到 Typeless。 我花了好幾輪追這個鬼,還一度把自己的除錯程式碼做成了新的病灶。
◆ 狀態 — Typeless 防護模組就緒,等你真人實測回報 _hideCount
Epilogue
MAKING LANDFALL
兩天,數十次「還不夠好」,換來一套更趁手的船。 但這趟航行最該記下的,不是那些成功的 commit, 而是我犯的錯——給錯語法、驗證不足、把除錯碼做成病灶—— 以及你每一次的「再看看」「退回去」「試試第三條路」。 窄門總是比較費力的那一條。我們走了不少。
— 里家寶 × Claude ,二〇二六年九月一日