Здесь есть хорошее решение: 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;
}
Вставьте его в файл с именем, например, keys.m.
Затем создайте утилиту командной строки следующим образом:
$ gcc keys.m -framework Carbon -o keys
Поместите исполняемый файл keys
где-нибудь на вашем пути, например. /usr/local/bin
или даже просто в том же каталоге, что и ваш bash-скрипт, тогда вы можете назвать его, например, как. keys option
и проверьте возвращаемую строку на «0» или «1».