macos - 如何在Mac或PC上实现cheatsheet或keycue等功能

标签 macos shortcut

Mac 应用程序备忘单 ( http://www.cheatsheetapp.com/CheatSheet/ ) 或 keycue ( http://www.ergonis.com/products/keycue/ ) 具有收集事件应用程序的所有键盘快捷键的功能。我想知道如何实现这个功能。

最佳答案

在 Mac 上,有几种不同的方法可以执行此操作,包括:

  • 枚举菜单和菜单项并从中读取击键。这同样可以通过三种不同的方式来完成:
    • 用户界面脚本。您可以通过 AppleScript、ScriptingBridge、appscript、F-Script 等与应用程序“系统事件”(请参阅​​ AppleScript 编辑器中的字典,特别是 Processes Suite)对话来完成此操作。这样做的缺点是用户必须启用辅助功能访问权限才能使其发挥作用。
    • 将您自己的代码插入每个应用并使用 NSMenu API。
    • 可以通过多种不同的方式将代码插入到每个应用中,但最好只编写 SIMBL插件,这样您就不必自己弄清楚如何做。
    • 在任何应用程序内部,如果它有 ObjC 运行时,您就可以访问运行菜单栏的所有 Cocoa 类。在某些情况下,这甚至可以让您动态生成当前不存在但可能存在的菜单项。
    • 缺点是它不适用于 Carbon 应用,但这样的应用每天都在减少。
    • 如果您对此感兴趣,请注入(inject) fscript进入应用程序并开始使用对象浏览器和脚本界面,您应该能够从那里弄清楚它。然后您可以将您所学到的内容翻译成您选择的语言。
    • 将您自己的代码插入每个应用程序并使用 HIToolbox 中的 Carbon Menu Manager API。
    • 这些可以在 Carbon/Menus.h 中找到;它们更加繁琐,而且前途渺茫,但目前它们适用于 Carbon 和 Cocoa 应用程序。
  • 查看应用程序中嵌入的 NIB 文件。这非常简单,但只能处理从 NIB 创建的菜单。
  • 查看应用程序向操作系统注册的快捷方式。这也很简单,但在现代 OS X 中几乎没有用,因为通常只注册全局快捷方式。 (如果您打开“系统偏好设置”的“键盘” Pane ,您可以看到其中的内容。)

在 Windows 上,我相信这涉及发送某种类型的 WM_* 消息,但您可能希望将其作为一个单独的问题(未标记 osx),而不是将其附加到此问题。

关于macos - 如何在Mac或PC上实现cheatsheet或keycue等功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11417661/

相关文章:

visual-studio-2010 - 如何在 MSI 安装程序创建的快捷方式上设置 "Run as administrator"标志

iphone - 是否有日历的 iPhone URL 快捷方式?

macos - osx 上的屏幕截图

eclipse - Kepler 和 Mac OS 的 PyDev 安装问题

python - anacron 是否已针对 Mac 弃用?为什么我在运行 anacron 时看不到任何输出?

eclipse - ALT+CMD+R 停止工作

android - 我可以在 Android 快捷方式功能中为图标着色吗?

wix - 当键路径是RegistryKey/Value时,Wix使用哪些元素自动生成ComponentId guid

macos - 如何在 Homebrew 软件上构建带有 mpi 支持的 boost?

macos - OS X : Setting at runtime the Application name as it appears in Dock and Menu Bar