
*-- Makros fr den Pilot-Lotse-Dialog im MS Flugsimulator FSX und FSX:SE --*
*-- mit Hilfe der Windows Speech Recognition und WSRMacros               --*
*-- Artikel "Dialog mit der KI" in c't 12/16, S. 168                     --*

Die nachfolgenden Makros mssen Sie auf Ihrem Computer anlegen. ffnen Sie 
dazu im WSRMacros-Kontextmen "New Speech Macro" und dann "Advanced". 
Ersetzen Sie im Gerst des neuen Makros den Teil <command> bis </command> 
mit einem der hier aufgefhrten Makros -- d.h. alles *innerhalb* 
von <speechMacros> bis </speechMacros>.
Fr alle "Callsign" setzen Sie Ihre eigene Flugzeugkennung ein wie im 
Artikel beschrieben.


<speechMacros> <!------------------ Makro "Verkehr" ---------------------->
  <command>
   <listenFor>"Callsign" [Verkehr]</listenFor>
    <!-- hier evtl. Aktivierung des ATC-Menu einsetzen wie unten beschrieben -->
   <sendKeys>{[Verkehr.Ziffer]}</sendKeys>
  </command>
  <!-- Die Rule "numbers" ist nur notwendig, wenn Sie Ziffern im Callsign nutzen wollen -->
  <numbers name="Nummer" start="0" stop="9"/> 

  <rule name="Verkehr">
    <o>Have the</o>
    <list propname="Ziffer">
      <p valstr="2">Traffic ?is</p>
      <p valstr="3">Traffic not</p>
    </list>
    <o>in sight</o>
  </rule>
</speechMacros> <!---------------------------------------------------------->



<speechMacros> <!------------------ Makro "Anmeldungen" -------------------->
  <command>
    <listenFor>[Airport] [Stationen] "Callsign" [Anmeldungen] [...]</listenFor>
    <!-- hier evtl. Aktivierung des ATC-Menu einsetzen wie unten beschrieben -->
    <sendKeys>{[Anmeldungen.Ziffer]}</sendKeys>
  </command>
  <numbers name="Nummer" start="0" stop="9"/> <!-- nur notwendig, wenn Ziffer im Callsign -->
  
  <rule name="Airport">
    <p><DICTATION MAX="1"/></p>
  <!-- Logisch wre zwar DICTATION MIN="1" MAX="2". Doch damit oder allein mit MAX="2" geht die Erkennungsrate in den Keller. -->
  </rule>
  
  <rule name="Stationen">
   <list>
    <p>Ground</p>
    <p>Delivery</p>
    <p>Clearance</p>
    <p>Approach</p>
    <p>Center</p>
    <p>Departure</p>
    <p>Tower</p>
    <p>Radar</p>
   </list>
  </rule>
  
  <listenForList name="Anmeldungen" propname="Ziffer" useSubset="true">
   <item propval="2">with information</item>
   <item propval="2">please say again</item>
  
   <item propval="3">ready for I F R departure to</item>
  
   <item propval="1">is passing at altitude</item>
   <item propval="1">with you at</item>
   <item propval="1">ILS approach runway</item>
   <item propval="1">to land runway</item>
   <item propval="1">approaching from west east nord south to land</item>
   <item propval="1">inbound I L S runway</item>
   <item propval="1">request taxi to the gate</item>
  </listenForList>
</speechMacros> <!------------------------------------------------------------------>

Eigentlich sollte es heien "[...] miles west east nord south to land". Doch das [...] am Anfang bzw.
mittendrin irritiert die WSR. Auch mit "[Nummer] [Nummer] miles " wirds nicht besser.


<speechMacros> <!------------------ Makro "Antworten" -------------------->
  <command>
    <listenFor>"Callsign" [Antworten] [...]</listenFor>
    <!-- hier evtl. Aktivierung des ATC-Menu einsetzen wie unten beschrieben -->
    <sendKeys>1</sendKeys>
  </command>
  <numbers name="Nummer" start="0" stop="9"/> <!-- nur notwendig, wenn Ziffer im Callsign -->

  <listenForList name="Antworten" useSubset="true">
    <item>Going to frequency</item>
    <item>Contacting tower on frequency</item>
    <item>Climb Descent and maintain</item>
    <item>Cleared for</item>
    <item>Taxiing hold short runway</item>
    <item>Taxiing to gate</item>
    <item>Continue taxi</item>
    <item>Roger</item>
    <item>Turn right left heading</item>  <!-- entfernen, wenn "TurnRightLeft" -->
    <item>Flying straight in runway</item>
  </listenForList>
</speechMacros> <!------------------------------------------------------------------>



Wenn Sie dieses Makro verwenden, mssen Sie im Makro "Antworten" 
das <item> "Turn right left heading" entfernen.

<!------------------ Makro "TurnRightLeft" ------------------->
<speechMacros>
  <command>
    <listenFor>"Callsign" Turn ?right ?left heading [...] [Antworten] [...]</listenFor>
    <!-- hier evtl. Aktivierung des ATC-Menu einsetzen wie unten beschrieben -->
    <sendKeys>1</sendKeys>
  </command
  <numbers name="Nummer" start="0" stop="9"/> <!-- nur notwendig, wenn Ziffer im Callsign -->
  
  <listenForList name="Antworten" useSubset="true">
    <item>proceed on course</item>
    <item>Descend Climb and maintain</item>
    <item>resume own </item>
    <!-- eigentlich "resume own navigation", aber "navigation" hier auslassen wg.[...] am Ende der listenFor-Zeile -->
    <item>expect vectors I L S runway</item>
  </listenForList>
</speechMacros> <!------------------------------------------------------------------>


Falls Sie im FSX hufiger das Problem haben, dass das ATC-Fenster nicht mehr im Focus ist 
und Ihre gesprochenen Anweisungen ins Leere gehen, sollten Sie einen zustzlichen Befehl 
vor die <sendKeys>-Zeile setzen; z.B.:

<switchToApp windowTitleContains="ATC Menu"/>

Das Kommando switchToApp aktiviert das ATC-Fenster jedesmal vor dem Senden des Tastenkodes -- 
allerdings nur, wenn Sie im Fenstermodus sind. Arbeiten Sie im Vollbildmodus, mssen Sie 
auf den "Mouse"-Befehl ausweichen:

<mouse button="left" command="click" position="1000,20"/>

Die Werte fr "position" mssen Sie selbst an Ihrem Bildschirm herausfinden. 
Die Position fr den Mausklick muss auf dem oberen Titelbalken des ATC-Fensters liegen. 
Das Fenster muss dafr immer an derselben Stelle bleiben.
