Caps Lock 防休眠、PSP 也能跑 CS 引擎:兩個獨立開發者的怪點子
一個東大學生把 Caps Lock 改造成 Mac 防休眠開關,AI agent 長任務不怕闔上筆電;另一個開發者用 JavaScript 重刻 FPS 引擎,把類 Counter-Strike 遊戲塞進 20 年前的 PSP,還跑滿 60 幀。兩個獨立小專案,背後是同一種聰明的怪點子。
目錄+
Mac 最沒用的一個鍵,最近被拿去做了最重要的事。同一個禮拜,另一個開發者把二十年前的掌機拿去跑《絕對武力》風格的射擊遊戲。兩個都是一個人做的專案,都開源,都跟「怎麼在限制裡榨出東西」有關。這篇講這兩個怪點子,也講它們背後同一個邏輯。
Caps Lock 變成 Mac 的防休眠開關
東京大學學生 Taketo Fujimaki 上禮拜公開了一個叫 Capsomnia 的 macOS 小工具。用法很直白:打開 Caps Lock,MacBook 闔上蓋子也不會睡;關掉 Caps Lock,一切恢復正常。
他做這個的理由很實際。跑 Claude Code 或 Codex 這類 AI agent 做長任務時,闔上筆電電腦就睡了,本地跑的東西全部停掉。但你總不能一直半開著筆電走來走去——換捷運、換會議室、去買杯咖啡,這動作看起來也很怪。之前的解法是 SSH 連遠端機器或用 tmux 保住 session,但那兩個都只解決「連線」,沒解決「闔蓋就睡」這件事本身。
技術上 Capsomnia 做得挺乾淨。它不去監聽鍵盤事件,只是每 250 毫秒讀一次 Caps Lock 目前的狀態,這樣完全不需要「輸入監控」這個敏感權限。偵測到打開,就透過一個權限受限的小型 root helper 執行 pmset -a disablesleep 1;關掉就執行 disablesleep 0。這個 helper 能接受的指令只有三條,寫死在 sudoers 規則裡,app 本體全程用一般使用者身分跑,不碰 root。它也不連網、不收集任何資料、不用註冊帳號,原始碼、helper、打包流程全部放在 GitHub,MIT 授權,Developer ID 簽章加 Apple 公證都做了。
這種做法能延伸出去的用途不少:長時間編譯、大檔案下載、SSH session 保活,都適用。如果你也是那種常常帶著 Mac 到處跑、又想讓長任務別中斷的人,其實回到定點工作時桌面端也值得補齊——蝦皮上這組開發者桌面四件套把鍵盤、USB-C Hub、螢幕掛燈都配好了,價格在三千元內,算是把行動和固定工作站接起來的基本盤。
真正有意思的地方不是「防止睡眠」這個功能本身——caffeinate 指令早就能做到。有意思的是他選的觸發方式。多數人對 Caps Lock 的想像僅止於「重新映射」:改成 Ctrl、改成 Escape、辦公室常見的 Vim 使用者標配。這些做法都是把 Caps Lock 變成另一個按鍵。Capsomnia 完全不同路——它沒有重新定義這顆鍵是什麼,而是把它原本就有的物理狀態(開/關、還帶一顆會亮的燈)直接接到一個完全不相干的系統功能上。這種思路在讓 AI coding agent 自主跑優化迴圈這類需要長時間背景任務的場景裡,其實比想像中更常被需要。
二十年前的掌機,也能跑類 Counter-Strike 的射擊遊戲
另一個項目來自開發者社群 PocketJS。他們釋出了一個叫 OpenStrike 的第一人稱射擊遊戲,能在 2004 年出的 Sony PSP 上跑,60 幀不掉。
先講清楚「clean-room」這個詞在這裡的意思,免得有人誤會。OpenStrike 不是把《絕對武力》(Counter-Strike) 的引擎程式碼複製過來改,它是自己重寫的 3D 引擎(叫 Pocket3D),渲染、碰撞、地圖載入全部從零實作,沒有用到 Valve 半行原始碼。但地圖資料是另一回事——遊戲本身完全不附 CS 的地圖跟材質檔,你得自己丟進去自己合法擁有的 .bsp、.wad 檔案,遊戲才讀得到 dust2、inferno 這些經典地圖。說白了,引擎是乾淨重做的,內容資產還是得你自己有正版遊戲才拿得到。
「fully open JavaScript mod API」也不是行銷詞。整個遊戲的規則、HUD、比賽流程都是用 TypeScript/TSX 寫的模組,跑在嵌進執行檔的 QuickJS 引擎裡——連基礎遊戲玩法本身,都是用同一套 mod 系統寫出來的「第一個 mod」,不是額外加上去的外掛層。這代表任何人都能改武器手感、換 HUD、寫全新的遊戲模式,不用碰底層 Rust 程式碼。目前是 0.1 版,單人模式,支援 bot 對戰跟基本回合制,但連線對戰、買槍階段、多把武器、bot 路徑規劃都還沒做——誠實講,離「完整的 CS」還有一段距離,目前更像一份技術示範。
宣稱的 ~12MB RAM 用量是官方自己講的數字,沒有第三方複測,這點先說清楚。但整個做法確實有底氣:同一份遊戲程式碼能同時跑在桌機(用 wgpu 渲染)跟 PSP 實機(用 PSP 原生的 sceGu 繪圖 API)上,兩邊共用同一套用 no_std Rust 寫的核心邏輯。這跟讓 49 個 AI Agent 組隊做遊戲工作室那種「用 AI 加速產出」的方向不一樣,OpenStrike 走的是老派的極限優化——把該省的記憶體都省下來,逼老硬體吐出新東西。
這兩件事其實是同一種腦洞
Caps Lock 被重新映射不是新鮮事,Karabiner、PowerToys、setxkbmap 這些工具早就把它變成 Ctrl 或 Escape 玩到爛。Capsomnia 聰明的地方在於它沒有跟著這條路走,而是把這顆鍵原本閒置的物理狀態接去了一個誰都沒想過的地方。
把完整 3D 引擎硬塞進小記憶體環境,也不是 OpenStrike 一個人在做。隨著 WebGPU 在 2026 年幾乎所有主流瀏覽器都能用,瀏覽器裡塞複雜 3D 場景已經越來越常見;把同樣的野心搬到真正的老掌機上、逼出 60 幀,算是把這股風氣推到了另一個極端。這兩個專案都不是靠更貴的硬體解決問題,是靠把問題重新框一遍。
利益揭露:本文含蝦皮聯盟連結,點擊購買我會獲得回饋,不影響你的價格。這則連結是根據文章主題挑選的相關商品,並非我本人長期使用後的推薦。
Caps Lock 閒置了幾十年,PSP 也閒置了快二十年。真正稀缺的從來不是硬體性能,是有沒有人願意花時間,把一個大家都放棄的東西重新看一遍。