Requirements
Install
$ make clean && make install
預設設定
控制器正面
控制器背面
{
"deadzone": 0.15,
"mouseSpeed": 15,
"scrollSpeed": 2,
"leftStick": "mouse",
"rightStick": "scroll",
"bindings": {
"buttonA": { "type": "key", "key": "Space", "repeat": true },
"buttonB": { "type": "key", "key": "Return" },
"buttonX": { "type": "mouseButton", "button": "left" },
"buttonY": { "type": "key", "key": "Backspace", "repeat": true },
"leftShoulder": { "type": "key", "key": "Escape" },
"rightShoulder": { "type": "mouseButton", "button": "right" },
"leftTrigger": { "type": "key", "key": "RightShift" },
"rightTrigger": { "type": "key", "key": "Alt+Return" },
"leftThumbstickButton": { "type": "key", "key": "Cmd+C" },
"rightThumbstickButton": { "type": "key", "key": "Cmd+V" },
"dpadUp": { "type": "key", "key": "Up", "repeat": true },
"dpadDown": { "type": "key", "key": "Down", "repeat": true },
"dpadLeft": { "type": "key", "key": "Left", "repeat": true },
"dpadRight": { "type": "key", "key": "Right", "repeat": true },
"createButton": { "type": "key", "key": "Fn+Ctrl+Left" },
"optionsButton": { "type": "key", "key": "Fn+Ctrl+Right" }
}
}
PS5 示範設定 (易上手版)
下載後直接覆蓋到 ~/Library/Application Support/FooTinderPad/config.json 即可。
設計重點:善用 PS 慣例(Cross 確認 / Circle 取消)、讓三角 / 方塊 / 觸控板邊上的小鈕都各司其職、L2/R2 直接給最常用的複製貼上。
| 按鈕 | 對應 | 說明 |
|---|---|---|
| 左搖桿 | mouse | 滑鼠移動 · mouseSpeed: 25 |
| 右搖桿 | scroll | 滾輪捲動 · scrollSpeed: 5 |
| × Cross | 滑鼠左鍵 | PS 慣例「主要動作」 |
| ○ Circle | Escape | PS 慣例「取消/返回」 |
| ■ Square | Backspace (repeat) | 文字編輯刪除,按住連續刪 |
| △ Triangle | Space | 影片播放 / 瀏覽器捲頁 |
| L1 | LeftShift | 跟方向鍵搭配選文字,也跟 R1 (Return) 組成 Shift+Enter |
| R1 | Return | 確認 / 換行 |
| L2 | LeftCmd | 按住搭配實體鍵盤組合 Cmd 快捷鍵 |
| R2 | RightCmd | 同上,食指搆得到的位置,適合右手切換 app |
| L3 | / Slash | 常用於搜尋啟動 |
| R3 | 滑鼠右鍵 | Context menu |
| D-pad ↑↓←→ | 滑鼠微移動 | dpad: "mouse" · dpadMouseSpeed: 3,原始碼內建線性曲線 |
| Create(左上小鈕) | Cmd+V | 貼上 |
| Options(右上小鈕) | Cmd+C | 複製(拇指容易按到,比扳機順) |
| 觸控板按下 | Fn+Ctrl+Up | 呼叫 Mission Control(macOS 內建快捷鍵) |
Battery Indicator
🔋 Menu Bar 電量顯示
當控制器連線且回報電量時,menu bar 圖示右側會顯示百分比。
充電中加上 ⚡ 前綴;充滿時顯示 ⚡100%。放電時若降到 20% 或以下,數字轉為紅色提醒充電(充電中的低電量不轉紅,因為已在充電)。
DualSense over Bluetooth 和 Xbox Wireless Controller over BLE 都有 fallback reader:macOS GameController 沒提供電量時,app 會改走控制器專用讀取路徑。控制器未提供電量資訊(有線通用 HID、部分第三方型號)時不顯示百分比,只留 icon。
Launch at Login
🚀 登入自動啟動
從選單列點 FooTinderPad 圖示 → Launch at Login 切換開關。打開後 macOS 會在使用者登入時自動啟動 app,同樣的開關也會出現在「系統設定 → 一般 → 登入項目」。
第一次開啟時 macOS 可能要求核可:選單上的項目旁邊會出現黃色三角警示,點下去會帶你到「系統設定 → 一般 → 登入項目」,在那邊把 FooTinderPad 切到開即可。
若 app 是用本機 self-signed 簽章(例如預設的 FooTinderPadDev cert,沒有 Apple Developer Team Identifier),SMAppService 沒辦法登錄 login item。這時會自動 fallback:寫一份 LaunchAgent plist 到 ~/Library/LaunchAgents/com.purefuncinc.FooTinderPad.plist,下次登入由 launchd 啟動。要關掉一樣從選單按一次 Launch at Login 即可。注意這條路線下「系統設定 → 一般 → 登入項目」清單不會列出 FooTinderPad — 選單上的 toggle 才是真實狀態。
支援的按鍵
bindings 中使用的 key 字串由 KeyParser 解析。Token 大小寫不敏感,以 + 串接組合鍵(例:Ctrl+Shift+A)。
修飾鍵 (Modifiers)
| 修飾鍵 | 可用別名 |
|---|---|
| Control | ctrl · control · leftctrl · leftcontrol · rightctrl · rightcontrol |
| Option / Alt | alt · option · leftalt · leftoption · rightalt · rightoption |
| Shift | shift · leftshift · rightshift |
| Command / Win | cmd · command · win · leftcmd · leftcommand · leftwin · rightcmd · rightcommand · rightwin |
| Function | fn |
主鍵 (Main Keys)
組合規則
- 單一 token 可以是「主鍵」(例:
a、space)或「純修飾鍵綁定」(例:ctrl、fn) - 多 token 時,最後一個必須是主鍵,前面全部必須是修飾鍵,例如
Ctrl+Shift+A、Cmd+Space、Alt+Return - 重複的修飾鍵會自動去重
- 結尾若是修飾鍵(例:
Ctrl+Shift)會丟出modifierInMainKeyPosition錯誤 - 空 token(開頭、結尾或連續的
+)會丟出emptySeparatorComponent錯誤
自動重複 (auto-repeat)
加入 "repeat": true,按住按鈕時對應鍵會以 ~30 Hz 連續重發(400 ms 初始延遲後),
類似實體鍵盤按住 Backspace 連刪。預設為 false。
寫了 "repeat": true 但綁定是純修飾鍵 / mouseButton / none 的話會被忽略並產生 warning。
"buttonX": { "type": "key", "key": "Backspace", "repeat": true }