Hi AnMaster,

It seems better than mine to me. I'll test it with my X52 (not X52 pro  
but it looks useful with X52 too).

Thanks for your effort!!

Tat

On Dec 4, 2007, at 4:45 PM, AnMaster wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
>
> I have made a joystick config for Saitek X52 Pro: the axis numbers  
> and button
> numbers differ from the normal X52.
>
> This is an early version, I expect it to change as I find what is  
> useful and
> what isn't. If someone want to put it in CVS, the file is attached.
>
> Regards,
>
> AnMaster
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.7 (GNU/Linux)
>
> iD8DBQFHVQWdWmK6ng/aMNkRCsP8AKC1MOvJNtEvUfphX8ABtF47eVsY9wCgoljQ
> tynBvGtatKqQ/8cJaFOhmtE=
> =SDTP
> -----END PGP SIGNATURE-----
> <?xml version="1.0"?>
> <!--
>  Based on X52.xml and Aviator.xml
>  Modified by Arvid Norlander; 2007-12-03
>
>  This file is released under the GPL license.
> -->
>
> <!--
> Common Axis/Buttons
> + Roll/Pitch/Throttle/Rudder:  As There are
> + Top stick hat:               Airelon / Elevator trim
> + Bottom stick hat:            View directions (Increase/Decrease  
> visibility & Zoom In/Out when shifted)
> + Throttle foreside hat:       Up/down: View cycles (Shift: flaps up/ 
> down). Left/right: Rudder trim
> + Throttle slider:             Boost Control (if available)
> + Tirgger:                     Apply all brakes
> + Fire button:                 Toggle parking brake
> + Stick button "A":            Gear up (Shift: gear down)
> + Stick button "B":            HUD master switch
> + Stick button "C":            Reset view (hackish) (shift: Toggle  
> speedbrake)
> + Pinkie button:               Shift switch
> + Throttle button "D":         Right brake
> + Throttle button "E":         Left brake
> + Throttle button "i":         PTT (Push to talk, for fgcom)
> + Throttle mouse button:       Start Selected Engine(s)
> + T1/T2:                       Hook up/down (Increase/Decrease  
> spoilers when shifted)
> + T3/T4:                       Increase/Decrease slats
> + T5/T6:                       Increase/Decrease Speedbrake  
> (Increase/Decrease magneto when shifted)
>
> Mode 1: Propeller Aircraft
> + Top rotary dial:             Mixture
> + Bottom rotary dial:          Prop Advance
> + Throttle mouse button:       Start Selected Engine(s)
>
> Mode 2: Jet Aircraft
> + Top rotary dial:             Carb Heat
>
> Mode 3: Not implemented yet
>
> Linux Axis Numbers (no idea about window/mac ones, and they are not  
> same as plain X52 axis numbers on linux at least):
>  0     Roll (positive == right)
>  1     Pitch (positive == down/back/nose-up)
>  2     Throttle (positive == back/down/idle)
>  3     Bottom "rotary dial" on the throttle (positive == CW)
>  4     Top "rotary dial" on the throttle (positive == CCW)
>  5     Rocker switch ("rudder" control) on the throttle (positive ==  
> right)
>  6     Slider on the throttle (positive == forward)
>  7     Lower right hat horizontal axis (positive == right)
>  8     Lower right hat vertical axis (positive == down (Mac positive  
> is UP))
>  9     Mouse Y (positive = up)
>  10    Mouse X (positive = right)
>
> Button Numbers (Probably identical b/w Linux/Windows/Mac):
> 0  Trigger (half pressed)
> 1  Stick top "Fire" switch
> 2  Stick top "A" switch
> 3  Stick top "B" switch
> 4  Stick top "C" switch
> 5  Stick pinkie switch
> 6  Throttle "D" switch
> 7  Throttle "E" switch
> 8  T1
> 9  T2
> 10  T3
> 11  T4
> 12  T5
> 13  T6
> 15  Throttle mouse switch
> 16  Throttle forefinger wheel scroll down
> 17  Throttle forefinger wheel scroll up
> 18  Throttle forefinger wheel click
> 19  Upper left hat in "up" position
> 20  Upper left hat in "right" position
> 21  Upper left hat in "down" position
> 22  Upper left hat in "left" position
> 23  Throttle forefinger hat in "up/back" position
> 24  Throttle forefinger hat in "right" position
> 25  Throttle forefinger hat in "down/forward" position
> 26  Throttle forefinger hat in "left" position
> 27  Mode 1
> 28  Mode 2
> 29  Mode 3
> 30  Throttle "i" switch
> 31  Function wheel (below MFD) click (don't use, it is for timer)
> 32  START/STOP (don't use, for features in joystick itself)
> 33  RESET (don't use, for features in joystick itself)
> 34  Function wheel (below MFD) up
> 35  Function wheel (below MFD) down
> 36  MFD-select wheel below MFD up
> 37  MFD-select wheel below MFD down
> 38  MFD-select wheel below MFD click
> $Id: $
> -->
> <PropertyList>
>
>       <name>Saitek X52 Pro Flight Control System</name>
>       <name>Saitek Saitek X52 Pro Flight Control System</name>
>       <!-- No idea if there are more names for it, mine matches the last  
> entry here. -->
>
>       <!-- Custom section for storing some properties, based on  
> Aviator.xml -->
>       <data>
>               <modifier type="bool">false</modifier>
>               <mode type="int">0</mode>
>       </data>
>
>       <nasal>
>               <script>
>                       <![CDATA[
>                               var self = cmdarg().getParent();
>                               var data = self.getNode("data");
>                               var modifier  = data.getNode("modifier");
>                               var mode      = data.getNode("mode");
>                       ]]>
>               </script>
>       </nasal>
>
>       <axis n="0">
>               <desc>Aileron</desc>
>               <binding>
>                       <command>property-scale</command>
>                       <property>/controls/flight/aileron</property>
>                       <squared type="bool">true</squared>
>               </binding>
>       </axis>
>
>       <axis n="1">
>               <desc>Elevator</desc>
>               <binding>
>                       <command>property-scale</command>
>                       <property>/controls/flight/elevator</property>
>                       <factor type="double">-1.0</factor>
>                       <squared type="bool">true</squared>
>               </binding>
>       </axis>
>
>       <!-- Axis 2 is assigned for Rudder on Mac OS X -->
>       <axis n="5">
>               <desc>Rudder</desc>
>               <binding>
>                       <command>property-scale</command>
>                       <property>/controls/flight/rudder</property>
>               </binding>
>       </axis>
>
>       <!-- Bottom stick hat -->
>       <axis n="7">
>               <desc>View Direction; Shift: Increase/Decrease visibility</desc>
>               <low>
>                       <repeatable>true</repeatable>
>                       <binding>
>                               <command>nasal</command>
>                               <script>
>                                       <![CDATA[
>                                               if (modifier.getValue()) {
>                                                       # 
> fgcommand("increase-visibility", "/null");
>                                               } else {
>                                                       view.panViewDir(1);
>                                               }
>                                       ]]>
>                               </script>
>                       </binding>
>               </low>
>               <high>
>                       <repeatable>true</repeatable>
>                       <binding>
>                               <command>nasal</command>
>                               <script>
>                                       <![CDATA[
>                                               if (modifier.getValue()) {
>                                                       # 
> fgcommand("decrease-visibility", "/null");
>                                               } else {
>                                                       view.panViewDir(-1);
>                                               }
>                                       ]]>
>                               </script>
>                       </binding>
>               </high>
>       </axis>
>
>       <axis n="8">
>               <desc>View Elevation; Shift: Increase/Decrease field of 
> view</desc>
>               <low>
>                       <repeatable>true</repeatable>
>                       <binding>
>                               <command>nasal</command>
>                               <script>
>                                       <![CDATA[
>                                               if (modifier.getValue()) {
>                                                       view.increase();
>                                               } else {
>                                                       view.panViewPitch(1);
>                                               }
>                                       ]]>
>                               </script>
>                       </binding>
>               </low>
>               <high>
>                       <repeatable>true</repeatable>
>                       <binding>
>                               <command>nasal</command>
>                               <script>
>                                       <![CDATA[
>                                               if (modifier.getValue()) {
>                                                       view.decrease();
>                                               } else {
>                                                       view.panViewPitch(-1);
>                                               }
>                                       ]]>
>                               </script>
>                       </binding>
>               </high>
>       </axis>
>
>       <axis n="2">
>               <desc>Throttle</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.throttleAxis()</script>
>               </binding>
>       </axis>
>
>       <!-- Top Rotary dial on the throttle -->
>       <axis n="4">
>               <desc>Mode1: Mixture; Mode2: Carb Heat</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       var val = mode.getValue();
>                                       if (val == 1) {
>                                               controls.mixtureAxis();
>                                       } elsif (val == 2) {
>                                               controls.carbHeatAxis();
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </axis>
>
>       <!-- Bottom Rotary dial on the throttle -->
>       <axis n="3">
>               <desc>Mode1: Propeller Advance</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       var val = mode.getValue();
>                                       if (val == 1) {
>                                               controls.propellerAxis(-1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </axis>
>
>       <!-- Throttle slider; Please add Unix/Windows axis number -->
>       <axis n="6">
>               <desc>Boost Control</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       var val = 
> cmdarg().getNode("setting").getValue();
>                                       if 
> (getprop("/controls/engines/engine/raw-boost") != nil) {
>                                               # for j7w
>                                               
> props.setAll("/controls/engines/engine", "raw-boost", (val+1)/ 
> 2);
>                                       } else {
>                                               # for other prop airplanes
>                                               
> props.setAll("/controls/engines/engine", "boost", (val+1)/2);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </axis>
>
>       <!-- Trigger -->
>       <button n="0">
>               <desc>Brakes</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.applyBrakes(1)</script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>controls.applyBrakes(0)</script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <!-- Fire button -->
>       <button n="1">
>                       <desc>Toggle parking brake on or off</desc>
>                       <binding>
>                               <command>nasal</command>
>                               <script>controls.applyParkingBrake(1);</script>
>                       </binding>
>       </button>
>
>       <!-- Button "A" -->
>       <button n="2">
>               <desc>Gear up; Shift: Gear down</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.gearDown(1);
>                                       } else {
>                                               controls.gearDown(-1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>controls.gearDown(0);</script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <!-- Button "B" -->
>       <button n="3">
>               <desc>HUD Master Switch</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>aircraft.HUD.cycle_color();</script>
>               </binding>
>       </button>
>
>       <!-- button "C" -->
>       <button n="4">
>               <desc>Reset View (Shift: toggle speedbrake)</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               var c = 
> getprop("/controls/flight/speedbrake");
>                                               if (c < 0.1)
>                                                       
> setprop("/controls/flight/speedbrake", 1.0);
>                                               else
>                                                       
> setprop("/controls/flight/speedbrake", 0.0);
>                                       } else {
>                                               view.resetView();
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <!-- pinkie button -->
>       <button n="5">
>               <desc>Shift switch for X52</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>modifier.setBoolValue(1);</script>
>               </binding>
>               <mod-up>
>                       <binding>
>                       <command>nasal</command>
>                       <script>modifier.setBoolValue(0);</script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <!-- Button "D" -->
>       <button n="6">
>               <desc>Right Brake</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.applyBrakes(1, 1);</script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>controls.applyBrakes(0, 1);</script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <!-- Button "E" -->
>       <button n="7">
>               <desc>Left Brake</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.applyBrakes(1, -1)</script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>controls.applyBrakes(0, -1);</script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <!-- Tail hook up on button T1;  -->
>       <button n="8">
>               <desc>Tail hook up; Shift: Increase spoilers</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.stepSpoilers(1);
>                                       } else {
>                                               
> setprop("/controls/gear/tailhook", 0);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <!-- Tail hook down on button T2 -->
>       <button n="9">
>               <desc>Tail hook down; Shift: Decrease spoilers</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.stepSpoilers(-1);
>                                       } else {
>                                               
> setprop("/controls/gear/tailhook", 1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <!-- Flap control on the T3/T4 -->
>       <button n="10">
>               <desc>Increase slats</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.stepSlats(1);</script>
>               </binding>
>       </button>
>
>       <button n="11">
>               <desc>Decrease slats</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.stepSlats(-1);</script>
>               </binding>
>       </button>
>
>       <!-- per mode functions on the T6/T5 -->
>       <button n="12">
>               <desc>Increase speedbrake; Shift: Increase Magneto</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.stepMagnetos(1);
>                                       } else {
>                                               
> setprop("/controls/flight/speedbrake", 1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <button n="13">
>               <desc>Decrease speedbrake; Shift: Decrease Magneto</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.stepMagnetos(-1);
>                                       } else {
>                                               
> setprop("/controls/flight/speedbrake", 0);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <!-- Button "Trigger Maximum pressed" -->
>       <!-- Not implemented yet
>       <button n="14">
>       </button>
>       -->
>
>       <!-- Trim (upper) hat on the stick -->
>       <button n="19">
>               <desc>Elevator trim down</desc>
>               <repeatable type="bool">true</repeatable>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               
> setprop("/controls/flight/elevator-trim", 0);
>                                       } else {
>                                               controls.elevatorTrim(1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <button n="20">
>               <desc>Aileron trim right</desc>
>               <repeatable type="bool">true</repeatable>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               
> setprop("/controls/flight/aileron-trim", 0);
>                                       } else {
>                                               controls.aileronTrim(1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <button n="21">
>               <desc>Elevator trim up</desc>
>               <repeatable type="bool">true</repeatable>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               
> setprop("/controls/flight/elevator-trim", 0);
>                                       } else {
>                                               controls.elevatorTrim(-1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <button n="22">
>               <desc>Aileron trim left</desc>
>               <repeatable type="bool">true</repeatable>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               
> setprop("/controls/flight/aileron-trim", 0);
>                                       } else {
>                                               controls.aileronTrim(-1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <!-- Throttle foreside hat -->
>       <button n="23">
>               <desc>Scroll in reverse through views (shift: flaps up).</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.flapsDown(-1);
>                                       } else {
>                                               view.stepView(-1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>
>                                       <![CDATA[
>                                               if (modifier.getValue()) {
>                                                       controls.flapsDown(0);
>                                               }
>                                       ]]>
>                               </script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <button n="24">
>               <desc>Rudder trim right</desc>
>               <repeatable type="bool">true</repeatable>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               
> setprop("/controls/flight/rudder-trim", 0);
>                                       } else {
>                                               controls.rudderTrim(1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <button n="25">
>               <desc>Scroll views (shift: flaps down).</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               controls.flapsDown(1);
>                                       } else {
>                                               view.stepView(1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>
>                                       <![CDATA[
>                                               if (modifier.getValue()) {
>                                                       controls.flapsDown(0);
>                                               }
>                                       ]]>
>                               </script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <button n="26">
>               <desc>Rudder trim left</desc>
>               <repeatable type="bool">true</repeatable>
>               <binding>
>                       <command>nasal</command>
>                       <script>
>                               <![CDATA[
>                                       if (modifier.getValue()) {
>                                               
> setprop("/controls/flight/rudder-trim", 0);
>                                       } else {
>                                               controls.rudderTrim(-1);
>                                       }
>                               ]]>
>                       </script>
>               </binding>
>       </button>
>
>       <!-- mode switch (buttons 27-29) -->
>       <button n="27">
>               <desc>Mode 1</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>mode.setIntValue(1);</script>
>               </binding>
>       </button>
>
>       <button n="28">
>               <desc>Mode 2</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>mode.setIntValue(2);</script>
>               </binding>
>       </button>
>
>       <button n="29">
>               <desc>Mode 3</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>mode.setIntValue(3);</script>
>               </binding>
>       </button>
>
>       <!-- "i" button -->
>       <button n="30">
>               <desc>PTT (for fgcom)</desc>
>               <binding>
>                       <command>nasal</command>
>                       <script>controls.ptt(1);</script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               <script>controls.ptt(0);</script>
>                       </binding>
>               </mod-up>
>       </button>
>
>       <!-- mouse button on the throttle -->
>       <button n="15">
>               <desc>Fire Starter on Selected Engine(s)</desc>
>               <binding>
>                               <command>nasal</command>
>                               <script>controls.startEngine();</script>
>               </binding>
>               <mod-up>
>                       <binding>
>                               <command>nasal</command>
>                               
> <script>props.setAll("/controls/engines/engine", "starter", 0);</ 
> script>
>                       </binding>
>               </mod-up>
>       </button>
>
> </PropertyList>
> -------------------------------------------------------------------------
> SF.Net email is sponsored by: The Future of Linux Business White Paper
> from Novell.  From the desktop to the data center, Linux is going
> mainstream.  Let it simplify your IT future.
> http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4_______________________________________________
> Flightgear-devel mailing list
> Flightgear-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/flightgear-devel


-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to