【问题标题】:Input Method (IMKit) setup trouble输入法 (IMKit) 设置问题
【发布时间】:2012-02-16 02:48:09
【问题描述】:

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

NumberInput 示例对我来说似乎工作正常,除了 tsInputMethodIconFileKeyInputMethodConnectionNameInputMethodServerControllerClassCFBundleIdentifier 的值之外,我可以找到的新输入法没有任何区别信息.plist。但我看到了这些问题:

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

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

提前致谢!

附:是的,我已经尝试注销并重新登录,甚至重新启动计算机,但似乎没有任何东西可以显着改变我上面提到的行为。

【问题讨论】:

    标签: macos cocoa textinput input-method-kit


    【解决方案1】:

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

    【讨论】:

    • 看来这确实是解决方案。可悲的是,它是如此简单但没有记录。谢谢!
    • 谢谢。文档完全没有说什么。我浪费了一个下午来找出问题,但在晚上我找到了你的答案:(
    • 它似乎也希望 inputmethod 在包标识符的前 3 个标记中。特别是com.myCompany.theInputName.inputmethod 对我不起作用,但com.myCompany.inputmethod.theInputName 可以。因此,不要只将 .inputmethod 添加到现有捆绑包标识符名称的 end 中。
    【解决方案2】:

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

    我要补充一点,我在TextInputSources.h 中找到了一些相关文档,其中包含Input Method Kit overview docs 中找不到的大量 cmets 和文档。值得一读。

    Carbon > Frameworks > HIToolbox > TextInputSources.h

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

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

    【讨论】:

    • 好发现!我建议提交一份 Radar,让他们知道此文档仅存在于 Carbon 标头中。显然它应该被移动/复制到别处!
    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 2010-11-16
    • 2019-12-03
    • 2013-04-20
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 2016-07-20
    相关资源
    最近更新 更多