首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSString转换为AXUIElementPostKeyboardEvent的keyCode+modifiers

将NSString转换为AXUIElementPostKeyboardEvent的keyCode+modifiers
EN

Stack Overflow用户
提问于 2011-02-09 09:47:16
回答 2查看 1K关注 0票数 4

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

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

我还不能弄清楚的是,如何确定是否应该发布修改键,以及应该发布哪些修改键。例如,当我在我的测试应用程序中键入Hello, world!时,输入将作为hello, world1发送到另一个应用程序,因为我还没有包括用于创建大写字母H和感叹号的修饰键。像éü这样的多个击键字符使这一点变得更加复杂。例如,发送é会发送不带重音的原始e

有没有一种我忽略的简单方法来识别修饰符,以便与创建特定NSString或unichar的关键代码相结合?如果没有,有没有人有建议如何继续呢?到目前为止,我想出的最好的方法是用所有可能的修饰符组合调用UCKeyTranslate,直到我找到一个与我使用-[NSString characterAtIndex:]得到的unichar匹配的修饰符。我不确定这是否可伸缩或可靠,因为上面提到的一些字符具有多键特性。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-02-10 01:09:57

这可能无济于事。但以防万一:真的有必要发送键盘事件吗?因为如果你需要支持,比如说,Kotoeri,这将变得非常困难。

覆盖insertText:和doCommandBySelector:并发送按键序列的结果,而不是单个击键,这很简单。

票数 1
EN

Stack Overflow用户

发布于 2011-02-17 22:48:04

我找到了一个做trick的例子,但它并不完整:它不是一个通用的解决方案,在任何情况下,...how,它能处理多种键盘布局吗?

有一个cgquartz过时函数可以做到这一点:CGPostKeyboardEvent (不确定是否可以只传递字符?)可能仍然可以使用(标记为未记录,但有一些副作用..)。

编辑: UCKeyTranslate作为构建字典的一种方式。有趣的是,操作系统是如何做到这一点的呢?更好的答案应该隐藏在某个地方!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4940557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档