WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   Tastenkombi im Gauge (http://www.wcm.at/forum/showthread.php?t=177638)

Michael Kock 06.11.2005 16:12

Tastenkombi im Gauge
 
Moin!

Gibt es die Möglichkeit, eine Tastenkombination in ein Gauge einzubinden und wenn diese aktiviert wird, das dann diese Kombi ausgeführt wird?

Jumbojet 06.11.2005 16:51

Ich denke nicht. Vielleicht muss man das Einprogrammieren, dass nimmt aber einige Stunden in Anspruch.

harry3 06.11.2005 17:50

Re: Tastenkombi im Gauge
 
Zitat:

Original geschrieben von Michael Kock
Moin!

Gibt es die Möglichkeit, eine Tastenkombination in ein Gauge einzubinden und wenn diese aktiviert wird, das dann diese Kombi ausgeführt wird?


Michael,

das gleiche hab ich mich auch schon gefragt. Zumindest ich weiß keinen Weg wie man das machen könnte. In XML bin ich mir sicher dass das nicht geht, in C/C++ unter Umständen(aber ich denke nicht dass es funktioniert...ich hab sowas nämlich noch nie gesehen)

@Jumbojet: Poste bitte nicht immer zu Themen von denen du gar keine Ahnung hast.


Grüße,
Harri

derBruchpilot 06.11.2005 22:53

Re: Tastenkombi im Gauge
 
Zitat:

Original geschrieben von Michael Kock
Moin!

Gibt es die Möglichkeit, eine Tastenkombination in ein Gauge einzubinden und wenn diese aktiviert wird, das dann diese Kombi ausgeführt wird?

Im gps_500 steht folgender Quelltext.

PHP-Code:


    
<Keys>
        <
On Event="GPS_NEAREST_BUTTON">@NRSTButton</On>
        <
On Event="GPS_OBS_BUTTON">@OBSButton</On>
        <
On Event="GPS_MSG_BUTTON">@MSGButton</On>    
        <
On Event="GPS_FLIGHTPLAN_BUTTON">@FPLButton</On>
        <
On Event="GPS_TERRAIN_BUTTON">@TerrainButton</On>
        <
On Event="GPS_PROCEDURE_BUTTON">@PROCButton</On>
        <
On Event="GPS_ZOOMIN_BUTTON">@ZOOMINButton</On>
        <
On Event="GPS_ZOOMOUT_BUTTON">@ZOOMOUTButton</On>
        <
On Event="GPS_DIRECTTO_BUTTON">@DTOButton</On>
        <
On Event="GPS_MENU_BUTTON">@MENUButton</On>
        <
On Event="GPS_CLEAR_BUTTON">@CLRButton</On>
        <
On Event="GPS_CLEAR_ALL_BUTTON">@CLRALLButton</On>
        <
On Event="GPS_ENTER_BUTTON">@ENTButton</On>
        <
On Event="GPS_CURSOR_BUTTON">@PushCRSRButton</On>
        <
On Event="GPS_GROUP_KNOB_INC">@TopRightKnob</On>
        <
On Event="GPS_GROUP_KNOB_DEC">@TopLeftKnob</On>
        <
On Event="GPS_PAGE_KNOB_INC">@BottomRightKnob</On>
        <
On Event="GPS_PAGE_KNOB_DEC">@BottomLeftKnob</On>
        <
On Key="AlphaNumeric">
            <
Visible>10 19 (C:fs9gps:enteringInputrng 31 (C:fs9gps:enteringInput) == or</Visible>
            (
M:Keychr (>C:fs9gps:IcaoSearchEnterChar) @InitBlinker
        
</On>
        <
On Key="Ascii">
            <
Visible>110 119 (C:fs9gps:enteringInputrng 131 (C:fs9gps:enteringInput) == or</Visible>
            (
M:Keychr (>C:fs9gps:NameSearchEnterChar) @InitBlinker
        
</On>
        <
On Key="Backspace">
            <
Visible>(C:fs9gps:enteringInput)</Visible>
            
10 19 (C:fs9gps:enteringInputrng 31 (C:fs9gps:enteringInput) == || if{ -(>C:fs9gps:IcaoSearchBackupChar) @InitBlinker quit }
            
110 119 (C:fs9gps:enteringInputrng 131 (C:fs9gps:enteringInput) == || if{ -(>C:fs9gps:NameSearchBackupChar) @InitBlinker quit }
        </
On>
        <
On Event="GPS_CLEAR_BUTTON_DOWN">(@g:clrButtonDown== if{ (>@g:clrButtonDown(>@g:clrButtonCount) }</On>
        <
On Event="GPS_CLEAR_BUTTON_UP">(@g:clrButtonDown== if{ (>@g:clrButtonDown) (@g:clrButtonCount) @CLRButtonDelay &lt; if{ @CLRButton } }</On>
        <
On Event="GPS_MSG_BUTTON_DOWN">(@g:msgButtonDown== if{ (>@g:msgButtonDown(>@g:msgButtonCount) }</On>
        <
On Event="GPS_MSG_BUTTON_UP">(@g:msgButtonDown== if{ (>@g:msgButtonDown) (@g:msgButtonCount) @MSGButtonDelay &lt; if{ @MSGButton } }</On>
    </
Keys

Schau Dir mal die Zeile <backspace> an, dass sieht mir verdächtig danach aus, dass das über die enstprechende Taste etwas im gauge gesteuert wird. Das C: sind makrovariablen, müsste aber auch mit L:Variablen gehen. Habe es allerdings noch nicht ausprobiert.


Gruß R.


Jumbojet 06.11.2005 22:58

Ech gut gemachtes Beispiel.
Ich denke, jedoch wird es da für den unerfahrenen User schwierig den Durchblick zu behalten. Denn es ist auch schon der ein oder andere damit bestraft worden, dass der Flusi abschmiert, wenn man was falsch Programmiert hat.

derBruchpilot 06.11.2005 23:44

Zitat:

Original geschrieben von Jumbojet
Denn es ist auch schon der ein oder andere damit bestraft worden, dass der Flusi abschmiert, wenn man was falsch Programmiert hat.
Ach? Erzähl mal!

Gruß R.

derBruchpilot 07.11.2005 07:41

Zitat:

Original geschrieben von Jumbojet
Ech gut gemachtes Beispiel.
Ich denke, jedoch wird es da für den unerfahrenen User schwierig den Durchblick zu behalten. Denn es ist auch schon der ein oder andere damit bestraft worden, dass der Flusi abschmiert, wenn man was falsch Programmiert hat.

btw: In Anbetracht Deines jugendlichen Alters und der daraus relativ simpel abzuleitenden Tatsache, dass auch Du ein Pisa-Opfer bist, erlaube ich mir mal einige Verbesserungsvorschläge:

Ech - schreibt man im Deutschen für gewöhnlich mit einem "t" am Ende, also "Echt".

Programmiert - das ist in diesem Satz das Verb (oder das Tun-Wort für Feldbusch-Fans). Verben schreibt man im Deutschen allgemein klein, im Gegensatz zu Substantiven, die schreibt man groß. Also müsste es "programmiert" heißen.

Das Komma im ersten Satz zwischen "denke" und "jedoch" scheint mir ein gefühltes Komma zu sein, oder täusche ich mich da? Na ja, als Rheinländer findet man naturgemäß sehr schwer zu einer vernünftigen Sprachmelodie, die es einem erlauben würde, die Kommata wirklich nach Gefühl zu setzen. Es ist halt nicht jeden gegeben. Mein Tip: Vermeide einfach Sätze mit mehr als drei Wörtern, da bist Du auf der richtigen Seite!


Der Sinn des Wortes "jedoch" erschließt sich mir auch nicht ganz - ich hätte eher geschrieben - "es wird jedoch für den ...". Aber wie gesagt, Satzbau und Sprachmelodie sind vielleicht Dinge, die sich Dir aufgrund Herkunft und Alter nicht gänzlich erschließen - also, vermeide Sätze mit mehr als drei Wörtern!





Gruß R.



Gruß R.

thscholz 07.11.2005 15:19

Zitat:

Original geschrieben von derBruchpilot
Das Komma im ersten Satz zwischen "denke" und "jedoch" scheint mir ein gefühltes Komma zu sein, oder täusche ich mich da? Na ja, als Rheinländer findet man naturgemäß sehr schwer zu einer vernünftigen Sprachmelodie, die es einem erlauben würde, die Kommata wirklich nach Gefühl zu setzen. Es ist halt nicht jeden gegeben. Mein Tip: Vermeide einfach Sätze mit mehr als drei Wörtern, da bist Du auf der richtigen Seite!


Der Sinn des Wortes "jedoch" erschließt sich mir auch nicht ganz - ich hätte eher geschrieben - "es wird jedoch für den ...". Aber wie gesagt, Satzbau und Sprachmelodie sind vielleicht Dinge, die sich Dir aufgrund Herkunft und Alter nicht gänzlich erschließen - also, vermeide Sätze mit mehr als drei Wörtern!

Ist doch einfach:

Er denkt, jedoch er hat keinen Durchblick.:D

Grüße

Thomas

Matt_EDDW 07.11.2005 16:25

...irgendwie erinnert der mich an Rico in "light" ...

:smoke: ... wer erinnert sich nicht gern

EduHir 07.11.2005 18:15

Michael,
Rob Barendregt hat da ein XLM-Gau geschrieben. Das müsste deinen Anforderungen eigentlich entsprechen??
Entsprechend anpassen!

http://library.avsim.net/esearch.php...atID=fs2004gau



Hmm, mit einer Sprachmelodie.. na ja ÖSI halt.

Ich hätte auf EVIAN getippt!

Gruß freundliche halt

edi

harry3 07.11.2005 19:49

Mmmh, anscheinend hat sich in Sachen Gauges beim FS2002->FS2004 doch mehr als nur ein bisschen geändert.
Denn im FS2002 war das definitiv nicht möglich.
Aber jetzt will ich mir den FS2004 auch nicht mehr zulegen, wenn der Neue doch schon so nah ist.

Aber das Bsp. leitet meiner Meinung nur die Befehle um, wirklich definieren dass bei dem Tastendruck von z.B. SHIFT+D dies und jenes passiert ist doch damit nicht möglich!?
Und das wollte Michael doch machen, oder irre ich mich da jetzt?

@Jumbojet: Erzähl mal aus der Programmiererlaufbahn ein bisschen. Was hast du alles schon programmiert? EHSI, EADI? Nee, viel zu simpel. Du hast doch sicher schon ein richtig schönes FMC programmiert, stimmts!?
:lol:


Grüße,
Harri

Horst LOWW 07.11.2005 19:50

Hallo,
bei ACES "Blogger" Susan (lead panel and gauge systems developer):
http://blogs.technet.com/engauged/
findet man Informationen über XML Variablen.
und die K_events bei Bartels:
http://library.avsim.net/search.php?...zip&CatID=root

Vielleicht hilfst,
Horst

Michael Kock 07.11.2005 21:11

Wie Harry sagt, ich suche ein Gauge, mit den ich verschiedene Tastenkombi definieren kann. Als Beispiel einen Knopf, den ich drücke um ein neues Fenster zu öffenen (shift+w).

AOG 07.11.2005 21:17

Hi!

klar geht das, nur das ist nicht ganz trivial und ich kann mir eine Lösung nur in C/C++ vorstellen, XML kenn ich mich nicht aus

Man denke and die FMC's vom PMDG zBsp...

Du willst doch dass eine Tastenkombi irgendetwas asuführt oder?

nen mal ein beispiel...

florian

harry3 07.11.2005 21:18

Zitat:

Original geschrieben von Michael Kock
Wie Harry sagt, ich suche ein Gauge, mit den ich verschiedene Tastenkombi definieren kann. Als Beispiel einen Knopf, den ich drücke um ein neues Fenster zu öffenen (shift+w).
Und genau das ist meiner Meinung nach nicht möglich. Im FS2002 fix nicht.
Und ich traue mir fast zu wetten dass das im FS2004 auch nicht möglich ist.

Aber vielleicht hat Jumbojet eine Möglichkeit gefunden das zu programmieren?*gg*


Grüße,
Harri

harry3 07.11.2005 21:22

Zitat:

Original geschrieben von AOG
Hi!

klar geht das, nur das ist nicht ganz trivial und ich kann mir eine Lösung nur in C/C++ vorstellen, XML kenn ich mich nicht aus

florian

Vielleicht dass man in C direkt auf die Tastatureingaben zugreift und diese auswertet. Frag mich jetzt aber bitte nicht wie das geht:D...WINAPI lässt grüßen!
Evtl. kann dir Hans Hartmann dazu was sagen weil er hat auch der Maus ein Nicht-MSFS-mäßiges Verhalten gegeben.(rechter Klick=>drehen des Schalters nach rechts, während im MSFS normalerweise damit ein Menu geöffnet wird)


Grüße,
Harri

AOG 07.11.2005 21:28

Ahh habs grad gelesen du willst eine Tastenkombi senden...

Geht auch aber noch etwas komplizierter..

Jedoch für viele Flusibefehle gibt es ja die KEY_EVENTS und die sind wiederum recht leicht zu proggen...
Die komplette Listen ist im FS SDK zu finden...

ob SHIFT+W dabei ist weiß ich nicht...

Du kannst unter windows aber jedem laufenden programm einen Tasterturbefehl senden das ist aber nicht ganz so einfach. Muss man die instanz des Programmes ermitteln, auf die locken usw...

Genaue info findest du ziehmlich sicher in
http://www.programmersheaven.com/

usw

Flo

AOG 07.11.2005 21:32

Hi

Das mit maus rechts ist nur eine definition des Mouse Windows..da muss man nicht direkt etwas an der Maus ändern...

Wenn du Tastenkombis vor dem Flusi abfragen/abfangen willst, geht das am besten über DirectInput (directx).

Wenn du Tasten zum Flusi senden willst dann geht das mit der vorher beschriebenen Möglichkeit oder mit der funktion trigger_key_events sofern sie für deine Anwendung vorhanden sind

florian

derBruchpilot 07.11.2005 22:23

Also, ich glaube, wir reden hier von zwei verschiedenen Sachen:

1. Eine Tastenkombination bzw. eine einzelne Taste ruft eine Aktion / Funktion in einem gauge auf, z. B. Betätigen eines Schalters. Die Taste und die Aktion / Definition sollen frei wählbar sein, der Vorteil wäre, dass man mit der Maus nicht den Schalter anklicken muss, um die Aktion auszuführen.

2. Eine gauge, dass eine zunächst Tastenkombination, im Endeffekt aber eine Funktion auslöst, indem man mit der Maus auf das gauge klickt.

derBruchpilot 07.11.2005 22:27

zu 1) Funktioniert! :hammer:

Ich habe einmal das unter http://www.wcm.at/forum/showthread.p...211post1720211 vorgestellte HUD modifiziert, und zwar den Schalter_TagNacht zur Änderung der Helligkeit der Anzeige. Der Quelltext sieht jetzt wie folgt aus:
PHP-Code:

<Gauge Name="Schalter_TagNacht" Version="1.0">
   <
Element>
      <
Image Name="psp_galet.bmp" Luminous="Yes" >
         <
Axis X="11" Y="23" PointsTo="Notrh"/>
      </
Image>
      <
Rotate>
         <
Value>(L:Color,enum)</Value>
         <
Nonlinearity>
            <
Item Value="0" Degrees="-90"/>
            <
Item Value="1" Degrees="-60"/>
            <
Item Value="2" Degrees="-30"/>
            <
Item Value="3" Degrees="0"/>
            <
Item Value="4" Degrees="30"/>
            <
Item Value="5" Degrees="60"/>
         </
Nonlinearity>
         <
Delay DegreesPerSecond="250"/>
      </
Rotate>
   </
Element>



   <
Mouse>
      <
Area Left="0" Right="22" Top="0" Bottom="21">
        <
Cursor Type="UpArrow"/>
        <
Click>
        (
L:Color,enum&lt; if{ (L:Color,enum+ (&gt;L:Color,enum)
    </
Click>
      </
Area>
      <
Area Left="0" Right="22" Top="24" Bottom="45">
        <
Cursor Type="DownArrow"/>
        <
Click>
        (
L:Color,enum&gt; if{ (L:Color,enum- (&gt;L:Color,enum)
    </
Click>
      </
Area>
   </
Mouse>


   <
Keys>
    <
On Key="L">
        (
L:Color,enum&lt; if{ (L:Color,enum+ (&gt;L:Color,enum)
    </
On>
    <
On Key="K">
        (
L:Color,enum&gt; if{ (L:Color,enum- (&gt;L:Color,enum)
    </
On>
   </
Keys>

</
Gauge

In der mouse-section wird je nach area beim Klicken die Variable L:Color um einen Wert erhöht bzw. vermindert.
In der keys-section ist die gleiche Aktion den Tasten "L" bzw. "K" zugewiesen. Funktioniert prächtig, nur sollte man darauf achten, Tasten nicht mehrfach zuzuweisen.


Gruß R.

derBruchpilot 07.11.2005 22:30

zu 2)

Wenn ich das richtig kapiert habe, ist ja das Ziel die "Aktion". Daher würde ich nicht den Weg über die Tastenkombination gehen, sondern die Aktion mit dem entsprechenden Event dirket aufrufen, z. B.
KEY_CHASE_VIEW_NEXT KEY_CHASE_VIEW_NEXT Cycle view to next target
KEY_CHASE_VIEW_PREV KEY_CHASE_VIEW_PREV Cycle view to previous target
KEY_CHASE_VIEW_TOGGLE CHASE_VIEW_TOGGLE Toggles chase view on/off



Gruß R.

EduHir 07.11.2005 22:39

So ein Gau hat eh der Thomas g'schrieben!
Du drückst einen Button und das XLM-GAU schickt ein "E+2" und der exit 2 geht auf.

Ich habe mir sein GAU für diverse Türen angepasst.

Oder habe ich die Frage noch immer nicht verstanden:heul:

edi

PS.:
Noch mal nachg'schaut. Stimmt nicht ganz.
Es schickt ein (&gt;K:TOGGLE_AIRCRAFT_EXIT) (&gt;K:SELECT_2)

derBruchpilot 07.11.2005 22:47

Zitat:

Original geschrieben von EduHir
Du drückst einen Button und das XLM-GAU schickt ein "E+2" und der exit 2 geht auf.

edi

Versteh ich nicht. Statt der Tastenkombination würde doch TOGGLE_AIRCRAFT_EXIT ausreichen? Oder liege ich da falsch?


Gruß R.

EduHir 08.11.2005 09:33

Damit wird der Exit 2 geöffnet. Wenn einer vorhanden ist.

TOGGLE_AIRCRAFT_EXIT müsste den Hauptausgang betätigen. Allerdings habe ich da auch K:select_1 dabeistehen.

Müsste man probieren, was TOGGLE_AIRCRAFT_EXIT allein macht.

edi

thscholz 08.11.2005 09:54

Zitat:

Original geschrieben von EduHir
Müsste man probieren, was TOGGLE_AIRCRAFT_EXIT allein macht.

Mit TOGGLE allein wird der Hauptausgang geöffnet.

Auszug aus SDK:

Toggles primary door open/close. Follow by KEY_SELECT_2, etc for subsequent doors.

Was den ursprünglichen Thread betrifft, ist mir noch immer nicht klar, ob das Gauge auf Tastatureingaben reagieren soll oder das Gauge eine Tastatureingabe simulieren soll, sprich einen Key Code senden soll.

Grüße

Thomas

thscholz 08.11.2005 12:06

Zitat:

Original geschrieben von thscholz
Mit TOGGLE allein wird der Hauptausgang geöffnet.
Sollte heißen: Mit TOGGLE_AIRCRAFT_EXIT allein wird der Hauptausgang geöffnet.

Michael Kock 08.11.2005 14:31

Zum Thema:
Das Gauge soll einen Tastenkombi ausführen, und nicht nur zum FS schicken. Meine Absicht: Ich will einen unsichtbaren knopf über den Schalter legen, der den Transponder in der PMDG aktiviert. Dieser Knopf soll dann eine Tastenkombi zum FS schicken bzw. zum IVAP und dort den Transponder aktivieren.

thscholz 08.11.2005 15:16

Das Senden von Key Codes ist meines Wissens in einem XML-Gauge nicht möglich (nur das Empfangen von Tastatureingaben).

Mit C/C++ ist das in einem Gauge leicht mit keybd_event zu machen.

Grüße

Thomas


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag