2012-01-22 21 views
1

我試圖用Input Method Kit創建一個新的輸入法。該文檔非常缺乏,但我相信我正確設置了項目,並在構建完成後將輸入法放入~/Library/Input Methods。但是,在查看語言&文本首選項中的輸入源列表時,我會看到奇怪的行爲。輸入法(IMKit)設置問題

的NumberInput樣品似乎爲我工作的罰款,並有在我的新的輸入法沒有區別,我可以找到,除了從值tsInputMethodIconFileKeyInputMethodConnectionNameInputMethodServerControllerClass,並在Info.plist中CFBundleIdentifier。但我看到這些問題:

  • 當我使用我想要的應用程序包標識符時,沒有任何內容出現在列表中。 (此捆綁包ID在我的系統上的其他任何地方都不存在。)
  • 將捆綁包標識符更改爲與NumberInput示例相同使其顯示在列表中,但是當選擇它時,它有時會重複列表,並且一般表現很奇怪。
  • 由於我對包標識符進行了輕微的修改,似乎表現正常,但是一旦我將其更改回原始標識符(所需的標識符),就會從列表中消失。
  • 如果我退出與我的輸入法相關的過程,再次在菜單中選擇它不會重新啓動它。

有沒有人有任何想法發生了什麼?蘋果公司的IMKit文檔幾乎不存在,似乎並不像許多人已經記錄了他們自己的輸入方法的嘗試。有什麼我失蹤?

在此先感謝!

P.S.是的,我試過註銷並重新啓動計算機,似乎沒有什麼顯着改變我上面提到的行爲。

回答

3

這對我有用。試試這個:確保你的包標識包含路徑某處的「inputmethod」。示例「com.blugs.inputmethod.IPAPalette」。是的,它完全沒有記錄。是的,文件是可怕的。希望這可以幫助!乾杯。

+0

看來這真的是解決方案。傷心的是這件事很簡單但沒有記錄。謝謝! – jtbandes

+0

謝謝。文件完全沒有說什麼。我浪費了一個下午的時間來發現問題,但在晚上我找到了你的答案:( – Stackia

+0

它似乎還希望inputmethod在bundle標識符的前3個標記內,特別是'com.myCompany.theInputName.inputmethod'爲我工作,但'com.myCompany.inputmethod.theInputName'確實如此,所以不要只在現有捆綁包標識符名稱的* end *中添加'.inputmethod'。 – pkamb

1

這裏接受的答案非常有用,將.inputmethod.添加到您的套件ID中。

我要補充的是,我發現了這一點文檔中TextInputSources.h,其中包含了大量的意見和文檔中的Input Method Kit overview docs沒有找到。值得一讀。

Carbon > Frameworks > HIToolbox > TextInputSources.h

在Info.plist文件,對於CFBundleIdentifier密鑰必須是包括".keyboardlayout."字符串的值;通常這可能類似於"com.companyname.keyboardlayout.MyKeyboardLayouts"(在Leopard之前,它需要是一個字符串,即使對於不由Apple提供的鍵盤佈局,該字符串也開始於"com.apple.keyboardlayout")。

如果沒有指定該鍵,一個InputSourceID將由BundleID與通過刪除所述BundleID或".inputmethod."

重圓匹配任何前綴形成的InputModeID後綴組合構成
+0

好的發現!我會推薦提交雷達讓他們知道這個文檔只存在於Carbon頭文件中,顯然它應該被移動/複製到其他地方! – jtbandes