有些應用程式無法正確提供 macOS 輸入法框架當前游標的位置。請先試試看 macOS 其他內建輸入法是否一樣有類似問題。
我沒用過上述應用程式,所以不好說。如果你願意自行修改 OpenVallia 原始碼,倒是可以從這邊下手:
這一行設定選字窗的位置。位置來源是上述程式的前幾行 (lines 562-572)。你可以看出來,這其中有一些 fallback。或許上述應用程式給的資訊不完整,於是走了 fallback path。當然也不排除應用程式回報的位置不理想。
第三方輸入法是可以試圖偵測是哪個應用程式回報的。看一下這裡的作法(其實已經 obsolete,不過程式碼還留著):
這一行的意思是,如果應用程式是 Terminal,就特殊處理。你可以用 NSLog 去列出 [sender bundleIdentifier] 看你的應用程式的 bundle id 為何。
OV 原始碼用 Xcode 編譯後,記得先砍掉當前執行的 OV process,然後就可以直接在 Xcode 裡按 Run 執行。之後應用程式所使用的 OV instance 都會是 Xcode 執行的那一個。