여기 좋은 해결책이있다 :
#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;
}
가 호출 된 파일, 예를 들어,에 붙여 넣습니다 : http://lists.apple.com/archives/applescript-users/2009/Sep/msg00374.html
다음 코드를 가지고 keys.m.
$ gcc keys.m -framework Carbon -o keys
가 경로, 예를 들어, 어딘가에 keys
실행 파일을 넣어 :
는 다음과 같은 명령 줄 유틸리티를 구축 /usr/local/bin
또는 심지어 bash 스크립트와 동일한 디렉토리에있는 경우에도 예를 들어 다음과 같이 호출 할 수 있습니다. keys option
그리고 "0"또는 "1"에 대해 반환 된 문자열을 확인하십시오.
감사합니다. 실행 파일 자체가 옵션이 2048과 같이 터프하게 눌러 진 특정 숫자를 출력하는 것으로 보입니다. 어떻게 if 문으로 bash에서 직접 구현할 수 있습니까? 나는이 시도하지만 뭔가 떨어져 보인다 키 = "$ WORKDIR/키" 경우 [[ '키 옵션'== '1']] – devilhunter
@devilhunter : 그것은 단지 옵션 2048 리턴하면 돈 'option' 매개 변수를 전달하지 않습니다. 즉,'keys 옵션 '대신'keys'로 호출 한 경우입니다. 어떻게 작동하는지 보려면 터미널의 명령 행에서 시도해보십시오. –
감사합니다, 지금 작동합니다. 질문에 답했다. – devilhunter