Wie wähle ich per Tastendruck aus der AppleScript-Dialogliste aus?

Ich habe eine Anwendung mit AppleScript in Automator erstellt.

Die Anwendung präsentiert dem Benutzer auf Anhieb eine Dialogliste.

Standardmäßig gibt es zwei Möglichkeiten, ein Element aus der Liste auszuwählen:

  1. Verwenden Sie Ihre Maus.

  2. Verwenden Sie die Pfeiltasten auf Ihrer Tastatur.

Ich möchte dem Benutzer jedoch eine dritte Option anbieten: das Auswählen des Elements basierend auf einem Tastendruck oder einer Tastenkombination. Ich möchte auch, dass das ausgewählte Element direkt gesendet wird, nachdem der Tastendruck oder die Tastenkombination gedrückt wurde.

Zum Beispiel:

on run {input, parameters}

    set FruitList to {"Banana (#1)", "Kiwi (#2)", "Mango (#3)", "Coconut (#4)", "Pear (#5)"}

    set FavoriteFruitAnswer to choose from list FruitList with title "Fruit Dialog" with prompt "What's your favorite fruit?" default items "Banana (#1)"


    if FavoriteFruitAnswer is false then
        error number -128 (* user cancelled *)
    else
        set FavoriteFruitAnswer to FavoriteFruitAnswer's item 1 (* extract choice from list *)
    end if

    return input
end run

Der vorhergehende Code erzeugt Folgendes:

Was ich möchte, ist, wenn der Benutzer die Zahl "2" auf seiner Tastatur drückt, daher wird "Kiwi (#2)" ausgewählt und dann wird automatisch die Schaltfläche "OK" gedrückt. Wenn der Benutzer die Ziffer „4“ auf seiner Tastatur drückt, wird daher „Kokosnuss (#4)“ ausgewählt und dann automatisch die Schaltfläche „OK“ gedrückt. Usw.

Ist das möglich?

Was ich weiß, ist möglich, ein Dialogfeld mit einem Textfeld zu erstellen, in dem der Benutzer die Nummer manuell eingibt und der Benutzer dann manuell die Eingabetaste drückt und die Nummer der entsprechenden Fruchtart zugewiesen wird.

Das ist aber keine besonders schöne Lösung.

Antworten (1)

AppleScript ist nicht robust genug, um genau das zu tun, was Sie verlangen. Wenn Sie jedoch nach Nummer auswählen möchten, setzen Sie die Nummer vor den Namen der Frucht , obwohl Sie nach dem Drücken der Nummerenter noch drücken müssen . Andernfalls wird es auch durch Drücken des ersten Zeichens des Listenelementeintrags ausgewählt.

Ändern Sie beispielsweise die folgenden zwei Codezeilen von:

set FruitList to {"Banana (#1)", "Kiwi (#2)", "Mango (#3)", "Coconut (#4)", "Pear (#5)"}
set FavoriteFruitAnswer to choose from list FruitList with title "Fruit Dialog" with prompt "What's your favorite fruit?" default items "Banana (#1)"

Zu:

set FruitList to {"1. Banana", "2. Kiwi", "3. Mango", "4. Coconut", "5. Pear"}
set FavoriteFruitAnswer to choose from list FruitList with title "Fruit Dialog" with prompt "What's your favorite fruit?" default items "1. Banana"

Nebenbei bemerkt, ein Doppelklick auf einen Listeneintrag, um ihn mit der Maus auszuwählen, löst ebenfalls enterautomatisch den Tastendruck aus.