gpt4 book ai didi

macos - 如何在 Mac OS X 的辅助功能 API 中获取当前键盘焦点坐标?

转载 作者:行者123 更新时间:2023-12-02 17:44:46 30 4
gpt4 key购买 nike

我正在寻找 Mac OS X Accessibility API 来获取当前键盘(而非鼠标)焦点位置的坐标。根据我在 http://www.apple.com/accessibility/pdf/Mac_OS_X_Tiger_vpat.pdf 找到的文档的第 2 页,这是可行的:

Supported: Mac OS X exposes the location of the current keyboard and mouse focus to assistive technologies via the Accessibility API and also provides a visual indication of the focus on-screen.

尽管有上述声明,但我似乎无法找到 API 本身。我是一名经验丰富的开发人员(自 1982 年开始编码),但从未在 Mac OS X 上开发过;请温柔点。

最佳答案

OSX 似乎有一个不对称的可访问性 API;你可以使用NSAccessibilityProtocol要使您自己的应用程序可访问,但要访问另一个应用程序的可访问性,您必须使用一组单独的接口(interface)/对象,AXUIElement和 friend 。

我在 Retreiving the window that has focus 上找到了一篇文章可能在这里有用:似乎关键步骤是:

  • 使用AXUIElementCreateSystemWide创建一个“系统范围”的可访问性对象
  • 通过调用 AXUIElementCopyAttributeValue 请求 kAXFocusedApplicationAttribute 来为当前获得焦点的应用程序请求该对象
  • 使用 AXUIElementCopyAttributeValue 再次询问聚焦窗口的返回对象,但这次是 NSAccessibilityFocusedWindowAttribute - 实际上看起来您可以跳过这一步下面,直接从焦点应用程序转到焦点 UI 元素...
  • 再次使用相同的 API 向返回的对象请求当前获得焦点的元素,但这次使用 NSAccessibilityFocusedUIElementAttribute
  • 向该元素询问其 kAXSizeAttribute/kAXPositionAttribute

您可能还想查看 UIElementInspector 的源代码它显示有关鼠标指针下的元素的信息(尽管它似乎没有对焦点执行任何操作)。

看起来您还需要通过 GUI(参见上面的文章)或 via terminal 启用可访问性 API。对于上述任何一项工作 - 大概这是为了让用户防御流氓应用程序控制他们的桌面。

我还没有亲自使用过这些中的任何一个(还);但我对无障碍 API 足够熟悉,知道去哪里找 - 希望这有帮助。

关于macos - 如何在 Mac OS X 的辅助功能 API 中获取当前键盘焦点坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16462909/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com