2010-11-26 4 views
3

Ich habe eine relativ einfache Frage bekommen.Wie überprüft man, ob die Optionstaste beim Start einer Mac-Bash-Anwendung gedrückt wird

Ich habe ein paar Mac-Anwendungen, die Launcher in bash geschrieben haben. Ich wollte ein kleines Feature zu den Launcher hinzufügen, indem andere auf eine config.app oder etwas anderes in/Contents/Resources zugreifen, wenn sie beim Start der App die 'Option/Alt' Taste drücken. Ein bisschen wie iTunes oder iPhoto, wo Sie auf ein kleines Optionsmenü zugreifen können.

Ich weiß nicht, wie der Code aussehen sollte, wenn es rein in bash ist; Ich habe ein paar Beispiele gefunden, die AppleScript und/oder Kakaohaken verwenden, aber keine rein bash.

Etwas wie: if 'optionKeyDown'; then open "$WORKDIR/../Resources/config.app"

Oder ist dies nicht möglich, in reiner bash alle an?

Antwort

2

Es gibt eine gute Lösung hier: http://lists.apple.com/archives/applescript-users/2009/Sep/msg00374.html

Nehmen Sie den folgenden Code ein:

#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; 
} 

es in eine Datei einfügen genannt, z.B. Schlüssel.m.

Dann ein Kommandozeilen-Programm wie dieses bauen:

$ gcc keys.m -framework Carbon -o keys 

Setzen Sie die keys ausführbare irgendwo in Ihrem Pfad, z.B. /usr/local/bin, oder auch nur im selben Verzeichnis wie Ihr Bash-Skript, dann können Sie es als z. keys option und überprüfen Sie die zurückgegebene Zeichenfolge für "0" oder "1".

+0

Danke. Die ausführbare Datei selbst scheint die spezifischen Zahlen der Tasten gedrückt hart auszugeben, wie die Option ist 2048. Wie würde ich dies in bash direkt mit einer if-Anweisung implementieren? Ich habe versucht, diese, aber etwas scheint sich aus: Schlüssel = "$ WORKDIR/Tasten" if [[ 'Tasten Option' == '1']] – devilhunter

+0

@devilhunter: Es gibt 2048 nur für Option, wenn Sie don Übergeben Sie den 'option' Parameter nicht, dh wenn Sie ihn einfach als' keys' anstatt 'keys option' gewählt haben. Probieren Sie es über die Befehlszeile im Terminal aus, um zu sehen, wie es funktioniert. –

+0

Danke, funktioniert jetzt. Frage beantwortet. – devilhunter

Verwandte Themen