Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在Mac或PC机上实现备忘单或按键提示等功能_Macos_Shortcuts - Fatal编程技术网

Macos 如何在Mac或PC机上实现备忘单或按键提示等功能

Macos 如何在Mac或PC机上实现备忘单或按键提示等功能,macos,shortcuts,Macos,Shortcuts,Mac app cheatsheet()或keycue()具有收集活动应用程序的所有键盘快捷键的功能。我想知道如何实现此功能。在Mac上,有几种不同的方法可以实现此功能,包括: 枚举菜单和菜单项并从中读取击键。这同样可以通过三种不同的方式实现: 用户界面脚本。您可以通过AppleScript、ScriptingBridge、appscript、F-Script等与应用程序“系统事件”(请参阅其在AppleScript编辑器中的字典,特别是Process Suite)进行对话。这样做的缺点是,

Mac app cheatsheet()或keycue()具有收集活动应用程序的所有键盘快捷键的功能。我想知道如何实现此功能。

在Mac上,有几种不同的方法可以实现此功能,包括:

  • 枚举菜单和菜单项并从中读取击键。这同样可以通过三种不同的方式实现:
    • 用户界面脚本。您可以通过AppleScript、ScriptingBridge、appscript、F-Script等与应用程序“系统事件”(请参阅其在AppleScript编辑器中的字典,特别是Process Suite)进行对话。这样做的缺点是,用户必须启用辅助访问才能使其工作
    • 在每个应用程序中插入您自己的代码,并使用NSMenu API
    • 将代码插入每个应用程序可以用多种不同的方式完成,但最好只编写一个插件,这样你就不必自己想办法了
    • 从任何应用程序内部,如果它有一个ObjC运行时,您可以访问运行菜单栏的所有Cocoa类。在某些情况下,这甚至可以让您动态生成当前不存在但可能存在的菜单项
    • 缺点是它在碳应用程序上不起作用,但每天剩下的碳应用程序越来越少
    • 如果您对此感兴趣,请将其插入应用程序,并开始使用对象浏览器和脚本界面,您应该能够从中找到答案。然后你可以把你所学的翻译成你选择的语言
    • 在每个应用程序中插入您自己的代码,并使用HIToolbox中的Carbon菜单管理器API
    • 这些可以在Carbon/Menus.h中找到;它们更为灵活,未来的前景也要小得多,但目前它们将同时适用于碳和可可应用程序
  • 查看应用程序中嵌入的NIB文件。这非常简单,但只处理从NIB创建的菜单
  • 查看应用程序在操作系统中注册的快捷方式。这也很简单,但在现代OSX中几乎没有用处,因为通常只有全局快捷方式才能注册。(如果打开“系统首选项”的“键盘”窗格,可以看到其中的内容。)

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

第二,如何访问应用程序的MainMenu.nib文件,它是编码的。ThanksIt通常编码为二进制plist,您可以通过标准plist API来读取。plist本身表示一个NSKeyedArchiver归档文件(或NSCoder派生的其他文件)。这是NSNib使用的归档格式。因此,访问它最简单的方法是使用+[NSDictionary Dictionary WithContentsOfURL:],但最有用的方法是-[NSNib initWithContentsOfURL:]。另外,您如何准确地找到nib?你不应该只选择Contents/Resources/MainMain.nib;您必须查看Contents/Info.plist中的NSMainNibFile值(只有在没有“MainMenu”时才使用),然后首先查看相应的本地化资源目录,依此类推。NSBundle将有助于解决这里的大多数复杂问题。使用NSNib对象,我只能将其即时放到视图中。而无法从中读取xml数据。我想知道如何从中读取键盘快捷键。