cocoa – 将NSString转换为AXUIElementPostKeyboardEvent的keyCode修饰符

编辑:事实证明,在我最初探索辅助功能API时,我被误导了.一旦我在AX层次结构中找到了安全文本字段,我就可以轻松设置该值.不知道该怎么处理这个问题,但我想为未来的搜索者更新这个问题.

我正在研究一些代码,这些代码会使用辅助功能API将键盘事件发布到目标应用程序.到目前为止,我已经能够编写一个简单的应用程序,允许我键入一个字符串值,然后将键盘事件与这些键代码一起发布到目标应用程序.实际上,字符串将从另一个位置读取.

我还没有弄清楚的是如何确定是否应该发布修改键和修改键.例如,当我输入Hello,world!在我的测试应用程序中,输入作为hello,world1发送到另一个应用程序,因为我还没有包含修饰键来创建大写H和感叹号.通过é或ü等多击键字符使这变得更加复杂.发送é发送没有重音的原始e.

我是否有一个简单的方法可以识别修饰符与键码相结合以创建特定的NSString或unichar?如果没有,是否有人建议如何进行?到目前为止,我提出的最好的方法是使用所有可能的修改器组合调用UCKeyTranslate,直到找到与我使用的unichar相匹配的一个 – [NSString characterAtIndex:]我不确定这是可扩展的还是可靠的,但是,鉴于如上所述的一些字符的多键击特性.

提前致谢!

最佳答案 这可能无济于事.但以防万一:是否真的有必要发送键盘事件?因为如果你需要支持Kotoeri,这将变得非常困难.

覆盖insertText:和doCommandBySelector:并发送键序列的结果而不是单独的击键是一件简单的事情.

点赞