我有一个相对简单的问题。
我有一些 Mac 应用程序,其启动器是用 bash 编写的。
我想向启动器添加一个小功能,让其他人在应用程序启动时按下“option/alt”键时访问 config.app 或位于 /Contents/Resources 中的其他内容。有点像 iTunes 或 iPhoto,您可以在其中访问一个小选项菜单。
我不知道纯粹在 bash 中的代码应该是什么样子;我发现了一些使用 applescript 和/或 cocoa hooks 的例子,但没有一个纯粹在 bash 中。
就像是:if 'optionKeyDown'; then open "$WORKDIR/../Resources/config.app"
或者这在纯 bash 中根本不可能?
这里有一个很好的解决方案:http://lists.apple.com/archives/applescript-users/2009/Sep/msg00374.html http://lists.apple.com/archives/applescript-users/2009/Sep/msg00374.html
采取以下代码:
#import <Carbon/Carbon.h>
int main (int argc, const char * argv[]) {
unsigned int modifiers = GetCurrentKeyModifiers();
if (argc == 1)
printf("%d\n", modifiers);
else {
int i, result = 1;
for (i = 1; i < argc; ++i) {
if (0 == strcmp(argv[i], "shift"))
result = result && (modifiers & shiftKey);
else if (0 == strcmp(argv[i], "option"))
result = result && (modifiers & optionKey);
else if (0 == strcmp(argv[i], "cmd"))
result = result && (modifiers & cmdKey);
else if (0 == strcmp(argv[i], "control"))
result = result && (modifiers & controlKey);
else if (0 == strcmp(argv[i], "capslock"))
result = result && (modifiers & alphaLock);
}
printf("%d\n", result);
}
return 0;
}
将其粘贴到名为的文件中,例如键.m.
然后构建一个命令行实用程序,如下所示:
$ gcc keys.m -framework Carbon -o keys
Put the keys
路径中某处的可执行文件,例如/usr/local/bin
,或者甚至与 bash 脚本位于同一目录中,那么您可以将其称为例如keys option
并检查返回的字符串是否为“0”或“1”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)