问题标签 [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.
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?
macos - 有没有为 Mac OS X 创建输入法的参考或信息?
欢迎任何信息。
我对 OS X 中输入法的 API 一无所知。
cocoa - 如何更改 IMKTextInput 的标记文本格式?
默认情况下,IMKTextInput 协议的实现者将当前输入会话的标记文本显示为下划线(根据文档,带有 2 像素黑色下划线)。我开发了特定的输入法,并想使用另一种格式,比如不带下划线但带有背景颜色。我尝试过使用空格式的属性字符串:
但无济于事。那么,如何更改标记文本的格式?可能吗?
objective-c - 在可可中,如何检查文本字段是密码
我正在开发 Mac OS 上的输入法。现在我有一个问题。如果当前输入文本字段用于密码,我需要将输入模式切换为英文。但我不知道如何进行检查。我如何知道当前输入字段是密码字段?
objective-c - 通过输入法停用 Microsoft Word 时崩溃
我正在开发一种输入法。现在我在microsoft word上崩溃了。当当前编辑字段处于非活动状态时,我需要做一些工作来清理标记的文本。我用:
但是当我用word做时,这个“setMarkedText”会崩溃。它喜欢 word 已经做了一些工作来清理 mared 文本本身。有人有什么想法吗?谢谢你。
macos - 输入法 (IMKit) 设置问题
我正在尝试使用Input Method Kit创建一个新的输入法。文档非常缺乏,但我相信我正确设置了项目,并且~/Library/Input Methods
在构建后将输入法放入其中。但是,在查看语言和文本首选项中的输入源列表时,我看到了奇怪的行为。
NumberInput 示例对我来说似乎工作得很好,除了Info.plist 中的tsInputMethodIconFileKey
、InputMethodConnectionName
、InputMethodServerControllerClass
和的值之外,我可以找到的新输入法没有任何区别。CFBundleIdentifier
但我看到了这些问题:
- 当我为应用程序使用我想要的包标识符时,列表中没有显示任何内容。(此捆绑 ID 在我系统的其他任何地方都不存在。)
- 将包标识符更改为与 NumberInput 示例相同会使其显示在列表中,但是当我选择它时,它有时会重复列表中的条目,并且通常表现得很奇怪。
- 当我对捆绑标识符进行轻微修改时,它似乎表现正常,但是一旦我将其更改回原始标识符(所需的标识符),它就会从列表中消失。
- 如果我退出与我的输入法关联的进程,再次在菜单中选择它不会重新启动它。
有谁知道发生了什么?Apple 的 IMKit 文档几乎不存在,而且似乎没有多少人记录过他们自己制作输入法的尝试。有什么我想念的吗?
提前致谢!
PS 是的,我已经尝试注销并重新登录,甚至重新启动我的电脑,似乎没有什么能显着改变我上面提到的行为。
objective-c - NSPoint 和 IMKCandidate 窗口放置
我正在使用 inputmethodkit 并尝试在某些文本下方放置一个窗口。
_currentClient 是一个IMKTextInput
实例
候选人是一个IMKCandidates
实例
现在,我知道该windowInsertionPoint
变量很好,当我调试时我可以看到它的值,例如: NSPoint: {647,365}
但是,当我使用它时,候选窗口只显示在屏幕的左下角。我以前没有使用过屏幕放置的东西,因此感谢您的帮助。
如果我将任意静态值传递给setCandidateFrameTopLeft
,它将被放置在屏幕中。以下作品:
是指针问题吗?
objective-c - 使用 IMKit(或类似工具)拦截 Command+key
我正在寻找拦截命令组合键并认为这IMKit
是一个不错的选择。通过扩展,IMKInputController
我可以拦截大多数键,但它似乎忽略了修改过的键。
我试过覆盖
和(或者)
但没有运气;应用修饰符时,不会调用简单的方法。更具体地说,command
andalt
键不会被上述方法捕获。shift
像和ctrl
工作这样的简单修饰符(并且flags
在第二种方法中设置了修饰符变量)。启动 Apple 的示例应用程序NumberInput来亲自查看。
有什么建议么?我完全走错了吗?
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 太宽泛了,对于像我这样的新手来说,它的文档要少得多(或充满了无用的文档)。
任何人都可以帮助我走向正确的方向吗?
objective-c - 是否有一个 OSX API 可以自己绘制输入法候选者?
我想为全屏 OpenGL 游戏添加日语(和其他语言)输入支持,其中输入框是自定义渲染的小部件,即不是 NSViews。
我认为采用NSTextInputClient将使我能够利用输入法,但我不希望操作系统在我的游戏中呈现它的 OSX 风格的输入法 UI,因为这会破坏风格的连续性。
是否有一个较低级别的 API 可以让我 a.) 隐藏默认候选列表 UI,以及 b.) 监听输入法上的事件并接收正在编写的文本的候选列表,以便我可以呈现我的游戏内文本小部件上的候选列表以周围 UI 的样式显示?