1

我正在尝试使用Input Method Kit创建一个新的输入法。文档非常缺乏,但我相信我正确设置了项目,并且~/Library/Input Methods在构建后将输入法放入其中。但是,在查看语言和文本首选项中的输入源列表时,我看到了奇怪的行为。

NumberInput 示例对我来说似乎工作得很好,除了Info.plist 中的tsInputMethodIconFileKeyInputMethodConnectionNameInputMethodServerControllerClass和的值之外,我可以找到的新输入法没有任何区别。CFBundleIdentifier但我看到了这些问题:

  • 当我为应用程序使用我想要的包标识符时,列表中没有显示任何内容。(此捆绑 ID 在我系统的其他任何地方都不存在。)
  • 将包标识符更改为与 NumberInput 示例相同会使其显示在列表中,但是当我选择它时,它有时会重复列表中的条目,并且通常表现得很奇怪。
  • 当我对捆绑标识符进行轻微修改时,它似乎表现正常,但是一旦我将其更改回原始标识符(所需的标识符),它就会从列表中消失。
  • 如果我退出与我的输入法关联的进程,再次在菜单中选择它不会重新启动它。

有谁知道发生了什么?Apple 的 IMKit 文档几乎不存在,而且似乎没有多少人记录过他们自己制作输入法的尝试。有什么我想念的吗?

提前致谢!

PS 是的,我已经尝试注销并重新登录,甚至重新启动我的电脑,似乎没有什么能显着改变我上面提到的行为。

4

2 回答 2

3

这对我有用。试试这个:确保你的包标识符在路径中的某处包含“inputmethod”。示例“com.blugs.inputmethod.IPAPalette”。是的,AFAIK 完全没有记录。是的,文档很糟糕。希望这可以帮助!干杯。

于 2012-02-09T23:24:51.527 回答
1

此处接受的答案非常有用,可以添加.inputmethod.到您的 Bundle ID 中。

我将补充一点,我在 中找到了一些相关文档TextInputSources.h,其中包含大量的注释和文档,而这些注释和文档在Input Method Kit 概述文档中找不到。值得一读。

Carbon > Frameworks > HIToolbox > TextInputSources.h

在 Info.plist 文件中,CFBundleIdentifier 键的值必须是包含".keyboardlayout."; 通常这可能类似于"com.companyname.keyboardlayout.MyKeyboardLayouts"(在 Leopard 之前,它必须是一个以 开头的字符串"com.apple.keyboardlayout",即使对于 Apple 未提供的键盘布局也是如此)。

如果未指定此键,则将通过将 BundleID 与 InputModeID 后缀组合来构造 InputSourceID,该后缀是通过删除与 BundleID 匹配的任何前缀或以".inputmethod."

于 2015-12-11T22:25:37.403 回答