问题标签 [input-method-kit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
252 浏览

cocoa - Button with keyboard input via Input Method Kit

I am creating a virtual keyboard for my application via Input Method Kit (IMK).

However I am not able to simulate a keyboard event by pressing a button.

Is there any library I can used for keyboard event simulation?

Are there any reference materials/solutions for this problem?

0 投票
2 回答
905 浏览

macos - 有没有为 Mac OS X 创建输入法的参考或信息?

欢迎任何信息。

我对 OS X 中输入法的 API 一无所知。

0 投票
0 回答
190 浏览

cocoa - 如何更改 IMKTextInput 的标记文本格式?

默认情况下,IMKTextInput 协议的实现者将当前输入会话的标记文本显示为下划线(根据文档,带有 2 像素黑色下划线)。我开发了特定的输入法,并想使用另一种格式,比如不带下划线但带有背景颜色。我尝试过使用空格式的属性字符串:

但无济于事。那么,如何更改标记文本的格式?可能吗?

0 投票
3 回答
1197 浏览

objective-c - 在可可中,如何检查文本字段是密码

我正在开发 Mac OS 上的输入法。现在我有一个问题。如果当前输入文本字段用于密码,我需要将输入模式切换为英文。但我不知道如何进行检查。我如何知道当前输入字段是密码字段?

0 投票
0 回答
137 浏览

objective-c - 通过输入法停用 Microsoft Word 时崩溃

我正在开发一种输入法。现在我在microsoft word上崩溃了。当当前编辑字段处于非活动状态时,我需要做一些工作来清理标记的文本。我用:

但是当我用word做时,这个“setMarkedText”会崩溃。它喜欢 word 已经做了一些工作来清理 mared 文本本身。有人有什么想法吗?谢谢你。

0 投票
2 回答
606 浏览

macos - 输入法 (IMKit) 设置问题

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

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

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

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

提前致谢!

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

0 投票
2 回答
254 浏览

objective-c - NSPoint 和 IMKCandidate 窗口放置

我正在使用 inputmethodkit 并尝试在某些文本下方放置一个窗口。

_currentClient 是一个IMKTextInput实例

候选人是一个IMKCandidates实例

现在,我知道该windowInsertionPoint变量很好,当我调试时我可以看到它的值,例如: NSPoint: {647,365}

但是,当我使用它时,候选窗口只显示在屏幕的左下角。我以前没有使用过屏幕放置的东西,因此感谢您的帮助。

如果我将任意静态值传递给setCandidateFrameTopLeft,它将被放置在屏幕中。以下作品:

是指针问题吗?

0 投票
1 回答
291 浏览

objective-c - 使用 IMKit(或类似工具)拦截 Command+key

我正在寻找拦截命令组合键并认为这IMKit是一个不错的选择。通过扩展,IMKInputController我可以拦截大多数键,但它似乎忽略了修改过的键。

我试过覆盖

和(或者)

但没有运气;应用修饰符时,不会调用简单的方法。更具体地说,commandandalt键不会被上述方法捕获。shift像和ctrl工作这样的简单修饰符(并且flags在第二种方法中设置了修饰符变量)。启动 Apple 的示例应用程序NumberInput来亲自查看。

有什么建议么?我完全走错了吗?

0 投票
2 回答
322 浏览

cocoa - IMKit 捕捉 NSKeyup 事件

作为一项实验,我试图实现以下目标:

  • 让空格键用作修饰键 - 就像 Shift 键一样 - 按住空格键并键入键会打印不同的字母。释放空格键会将状态恢复为正常状态,只需按下它就像正常的空格键一样。

我正在考虑处理 keydown 和 keyup 事件,但显然handleEvent:client:IMKServerInput 协议中似乎只捕获 key down 和 mouse 事件。

没有太多可可经验,我尝试了一些方法但没有成功:

  • 通过互联网档案浏览了技术说明 2128 ,它给了我对 plist 项目的适当解释。仍然,没有关于keyup。
  • 尝试将 NSKeyUpMask 添加到recognizedEvents:IMKStateSetting Protocol,但这似乎也没有捕捉到事件。
  • 使用addLocalMonitorForEventsMatchingMask:handler:进行了一些测试, 但没有任何反应。
  • 未能找到NSFlagsChanged使用空格键触发事件的方法。
  • 阅读有关Quartz Event Service的信息,CGEventTap它似乎处理较低级别的用户输入。还没有走这条路。
  • IOHID 管理器

我得出一个结论,IMKit 只能被动接收事件。由于它不是应用程序,因此没有keyUp:方法可以覆盖-AFAIK,IMKit 不继承NSResponder类。

不幸的是,cocoa 太宽泛了,对于像我这样的新手来说,它的文档要少得多(或充满了无用的文档)。

任何人都可以帮助我走向正确的方向吗?

0 投票
1 回答
894 浏览

objective-c - 是否有一个 OSX API 可以自己绘制输入法候选者?

我想为全屏 OpenGL 游戏添加日语(和其他语言)输入支持,其中输入框是自定义渲染的小部件,即不是 NSViews。

我认为采用NSTextInputClient将使我能够利用输入法,但我不希望操作系统在我的游戏中呈现它的 OSX 风格的输入法 UI,因为这会破坏风格的连续性。

是否有一个较低级别的 API 可以让我 a.) 隐藏默认候选列表 UI,以及 b.) 监听输入法上的事件并接收正在编写的文本的候选列表,以便我可以呈现我的游戏内文本小部件上的候选列表以周围 UI 的样式显示?