🌐 Language / 語言: English | 日本語 | 한국어 | 简体中文 | 繁體中文
適用於: Apple Mac、MacBook Air、MacBook Pro、Mac mini、iMac、Mac Studio、Mac Pro
Keywords: macOS, Screen Sharing, Input Method, IME, VNC, Hammerspoon
解決 macOS 螢幕共享時,本機與遠端輸入法不同步的惱人問題。
新版 macOS 螢幕共享已內建「同步鍵盤語言」功能。
請先檢查:螢幕共享 App → 設定,看是否有此選項。
- ✅ 有這個選項 → 直接勾選即可,不需要本工具
- ❌ 找不到這個選項 → 你的 macOS 版本較舊,請使用本工具
本工具適用於:
- 本機或遠端是舊版 macOS,沒有內建同步功能
- 內建功能有問題時的備案
使用 macOS 內建螢幕共享時,輸入法會出現以下情況:
| 本機輸入法 | 遠端輸入法 | 實際輸出 |
|---|---|---|
| 英文 | 注音 | 英文 ❌ |
| 注音 | 英文 | 注音 ❌ |
| 注音 | 注音 | 注音 ✅ |
這是因為螢幕共享傳送的是「本機輸入法處理過的字元」,而不是原始按鍵。
- ✅ 精確同步 — macism 模式直接指定輸入法,不會對不齊
- ✅ 每台主機獨立設定 — 可選 toggle 或 macism 模式
- ✅ SSH ControlMaster 加速 — 延遲只有 10-50ms
- ✅ 只在螢幕共享 focus 時觸發 — 不影響其他工作
- ✅ 自動詢問新主機 — 第一次連線時設定,之後自動記住
- ✅ 選單列管理 — 暫停/恢復、新增/編輯/刪除主機
| 模式 | 圖示 | 說明 | 遠端需求 |
|---|---|---|---|
| Toggle | 🔄 | 送 Ctrl+Space 切換 | 只需 SSH + 授權 |
| macism | 🎯 | 直接指定輸入法 ID,精確同步 | SSH + macism(需 macOS 10.15+) |
注意: macism 需要 macOS 10.15 (Catalina) 以上才能安裝。舊版請用 Toggle 模式。
本機(控制端):
- macOS 10.15 或更新版本
- Homebrew
- Hammerspoon
遠端(被控端):
- macOS 10.14 或更新版本
- 開啟 SSH(遠端登入)
- 授權輔助使用權限
系統偏好設定 → 共享 → 勾選「遠端登入」
記下顯示的連線資訊,例如 ssh user@192.168.1.100
SSH 執行 AppleScript 需要輔助使用權限:
系統偏好設定 → 安全性與隱私 → 隱私 → 輔助使用
- 點左下角 🔒 解鎖
- 點「+」新增
/usr/bin/osascript- 按
Cmd+Shift+G輸入路徑/usr/bin/ - 選擇
osascript
- 按
或者新增「終端機」App(/Applications/Utilities/Terminal.app)也可以。
在遠端 Mac 上直接執行:
osascript -e 'tell application "System Events" to key code 49 using control down'如果輸入法有切換,表示權限設定成功。
brew install --cask hammerspoonmkdir -p ~/.hammerspoon
curl -o ~/.hammerspoon/init.lua https://raw.githubusercontent.com/taigadit/mac-screen-sharing-input-sync/main/init.lua- 打開 Hammerspoon
- 到「系統設定 → 隱私權與安全性 → 輔助使用」
- 允許 Hammerspoon
# 產生金鑰(如果還沒有)
ssh-keygen -t ed25519
# 複製到遠端主機(需輸入遠端密碼一次)
ssh-copy-id user@遠端IP驗證免密碼登入:
ssh user@遠端IP "echo ok"如果直接顯示 ok 不用輸入密碼,就成功了。
ssh user@遠端IP "osascript -e 'tell application \"System Events\" to key code 49 using control down'"如果遠端輸入法有切換,表示一切正常!
mkdir -p ~/.ssh/sockets編輯 ~/.ssh/config,加入:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
設定權限:
chmod 600 ~/.ssh/config這可以把延遲從 200-500ms 降到 10-50ms。
點選單列 Hammerspoon 圖示(🔨)→ Reload Config
如果遠端是 macOS 10.15+ 且想要精確同步:
ssh user@遠端IP
brew tap laishulu/homebrew
brew install macism注意: macOS 10.14 (Mojave) 無法安裝 macism,請用 Toggle 模式。
- 開啟螢幕共享連到遠端 Mac
- 點進螢幕共享視窗(讓它 focus)
- 切換本機輸入法
- 遠端會自動同步!
第一次會跳出對話框:
- 輸入 SSH 連線資訊(例如
user@192.168.1.100) - 選擇同步模式(Toggle 或 macism)
- 設定會自動儲存,下次不用再輸入
Toggle 模式是用 Ctrl+Space 切換,只能來回 toggle。
重要: 使用前請先手動對齊兩邊輸入法(都切到英文或都切到注音),之後就會保持同步。
選單列會出現 ⌨️ 圖示,點開可以:
- ✅ 查看同步狀態
- ⏸️ 暫停/恢復同步
- 📋 管理主機列表
- ➕ 新增主機
- 🔄/🎯 切換同步模式
- 主程式:
~/.hammerspoon/init.lua - 主機對應表:
~/.hammerspoon/hostmap.lua
主機對應表格式:
return {
["Akane的Mac mini"] = { ssh = "user@192.168.100.4", mode = "macism" },
["辦公室 iMac"] = { ssh = "user@192.168.1.100", mode = "toggle" },
}-
確認 SSH 免密碼登入正常:
ssh user@遠端IP "echo ok" -
確認遠端已授權輔助使用:
ssh user@遠端IP "osascript -e 'tell application \"System Events\" to key code 49 using control down'"如果出現權限錯誤,請到遠端的「系統偏好設定 → 安全性與隱私 → 輔助使用」新增
osascript。 -
確認螢幕共享視窗是 focus 的(點進去)
- macism 模式:會直接指定輸入法,不會對不齊
- Toggle 模式:使用前先手動對齊,之後就會同步
macism 需要 macOS 10.15 (Catalina) 以上。如果遠端是 Mojave (10.14),只能用 Toggle 模式。
設定 SSH ControlMaster(見安裝步驟),可以把延遲從 200-500ms 降到 10-50ms。
點選單列 ⌨️ 圖示 → 暫停同步
編輯 ~/.hammerspoon/init.lua,找到這行:
cmd = "osascript -e 'tell application \"System Events\" to key code 49 using control down'"修改 key code 和 modifier:
49= Space50= 反引號`control down可改成{control down, option down}等
macOS 螢幕共享的鍵盤事件處理流程:
按下按鍵 → 本機輸入法處理 → 傳送處理結果到遠端
遠端收到的已經是處理過的字元,遠端的輸入法根本沒機會處理。
讓兩邊輸入法保持同步:
本機切換輸入法
↓
Hammerspoon 偵測到
↓
SSH 到遠端執行切換指令
↓
遠端輸入法同步
↓
兩邊一致 ✅
MIT License
Developed by Dajiade Co., Ltd. (taigadit)