1) Fixed hat-switch axis numbering under Windows.
2) Modifier switches stored value in property-tree with js[0] specifically in path. Changed to ordinary Nasal variable.

Can someone please commit?

Macnab

<?xml version="1.0" encoding="UTF-8"?>
<!--Joystick binding definitions for "Saitek Cyborg X" and "Saitek F.L.Y. 5" Joysticks.
This file was modified from the "Cyborg-Gold-3d-USB.xml" file that is distributed with FlightGear v2.60

Modified By Andy Wagner(e-Tron on FlightGear forum)

Changed by macnab for:
1) Correct hat=switch axis numbering
2) Use variable instead of property-tree for modifyer, especially as there is no guantaree
   that it will be js[0]




Axis #	(direction)				mapped to
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
axis 0:(left-right)				aileron
axis 1:(forward-backward)	elevator
axis 2:(slider)						throttle
axis 3:(twist)						rudder





~~~~ Modifiers ~~~~
button 9:(Button 10)			"^"		Modifier 1
button 10:(Button 11)			"F3"	Modifier 2
button 13:(Shift state)		"F4"	Modifier 3




Button #(location)						No Mod					Mod 1							Mod 2						Mod 3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
button 0:(trigger)						Brakes					Parking Brake			SpeedBrake			Thrust Reverse
button 1:(Button 2)						Flaps Up				Gear Up								#									#
button 2:(Button 3)						Flaps Down			Gear Down							#									#
button 3:(Button 4)						Previous View		Trim Rudder						#									#
button 4:(Button 5)						Next View				Trim Rudder						#									#
button 5:(Button 6)						Reset View			Reset All Trim		Cockpit View		Tail Wheel Lock
button 6:(Button 7)						Pause								#									#									#
button 7:(Button 8)							#									#									#									#
button 8:(Button 9)							#									#									#									#
button 11:(scroll wheel up)		Zoom In							#									#									#
button 12:(scroll wheel dwn)	Zoom Out						#									#									#

axis 6: (hat left-right)			look l/r				Trim Aileron			Adj Mixture						#
axis 7: (hat up-down)					look u/d				Trim Elevator			Adj Propeller					#
(It is axis 5 & 6 for mac and unix)
-->

<PropertyList>


<name>Saitek Cyborg X</name>
<name>Cyborg X</name>
<name>F.L.Y 5</name>
<name>FLY 5</name>
<name>FLY5</name>
<name>Saitek FLY5</name>
<name>Saitek F.L.Y. 5</name>
<name>Saitek FLY 5</name>

<nasal>
  <script>
    cyborg-X-Modifier = 0
  </script>
</nasal>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Axis Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ -->


<axis n="0">
  <desc>Aileron</desc>
  <binding>
    <command>property-scale</command>
    <property>/controls/flight/aileron</property>
    <power type="double">2</power>
 </binding>
</axis>

<axis n="1">
  <desc>Elevator</desc>
  <binding>
    <command>property-scale</command>
    <property>/controls/flight/elevator</property>
    <factor type="double">-1.0</factor>
    <power type="double">2</power>
  </binding>
</axis>

<axis>
	<number>
		<mac>3</mac>
		<unix>2</unix>
		<windows>2</windows> 
	</number>
	<desc>Throttle</desc>
	<binding>
		<command>nasal</command>
		<script>controls.throttleAxis()</script>
	</binding>
</axis>

<axis>
	<number>
		<mac>2</mac>
		<unix>3</unix>
		<windows>3</windows>
	</number>
	<desc>Rudder</desc>
	<binding>
		<command>property-scale</command>
		<property>/controls/flight/rudder</property>
		<power type="double">2</power>
	</binding>
</axis>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Hat Switch ~~~~~~~~~~~~~~~~~~~~~~~~ -->
<axis>
	<desc>View Direction; Aileron Trim;</desc>
	<number>
		<unix>5</unix>
		<mac>5</mac>
		<windows>6</windows>
	</number>
	<low>
		<repeatable>true</repeatable>
		<binding>
			<command>nasal</command>
			<script>
				mod = cyborg-X-Modifier;
				if (mod == nil or mod == 0) {
					v = getprop("/sim/current-view/view-number");
					if (v == 0 or v == 4) {
						view.panViewDir(2);
					} else {
						view.panViewDir(2);
					}
				} elsif (mod == 1) {
					controls.aileronTrim(-0.75);
				} elsif (mod == 2) {
					controls.adjMixture(-2);
				} elsif (mod == 3) {
					#
				}
			</script>
		</binding>
	</low>
	<high>
		<repeatable>true</repeatable>
		<binding>
			<command>nasal</command>
			<script>
				mod = cyborg-X-Modifier;
				if (mod == nil or mod == 0) {
					v = getprop("/sim/current-view/view-number");
					if (v == 0 or v == 4) {
						view.panViewDir(-2);
					} else {
						view.panViewDir(-2);
					}
				} elsif (mod == 1) {
					controls.aileronTrim(0.75);
				} elsif (mod == 2) {
					controls.adjMixture(2);
				} elsif (mod == 3) {
					#
				}
			</script>
		</binding>
	</high>
</axis>

<axis>
	<desc>View Elevation; Elevator Trim;</desc>
	<number>
		<unix>6</unix>
		<mac>6</mac>
		<windows>7</windows>
	</number>
	<low>
		<repeatable>true</repeatable>
		<binding>
			<command>nasal</command>
			<script>
				mod = cyborg-X-Modifier;
				if (mod == nil or mod == 0) {
					view.panViewPitch(2);
				} elsif (mod == 1) {
					controls.elevatorTrim(0.75);
				} elsif (mod == 2) {
					controls.adjPropeller(1);
				} elsif (mod == 3) {
					#
				}
			</script>
		</binding>
	</low>
	<high>
		<repeatable>true</repeatable>
		<binding>
			<command>nasal</command>
			<script>
				mod = cyborg-X-Modifier;
				if (mod == nil or mod == 0) {
					view.panViewPitch(-2);
				} elsif (mod == 1) {
					controls.elevatorTrim(-0.75);
				} elsif (mod == 2) {
					controls.adjPropeller(-1);
				} elsif (mod == 3) {
					#
				}
			</script>
		</binding>
	</high>
</axis>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Button Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ -->
 
<!-- Trigger Button - Brakes, Parking Brake, Thrust Reverser -->
<button n="0">
	<desc>Brakes</desc>
	<repeatable type="bool">true</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				interpolate("/controls/gear/brake-left", 1, 0.075);
				interpolate("/controls/gear/brake-right", 1, 0.075);
			} elsif (mod == 1) {
				setprop("/controls/gear/brake-left", 1);
				setprop("/controls/gear/brake-right", 1);
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
	<mod-up>
	<repeatable type="bool">true</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				interpolate("/controls/gear/brake-left", 0, 0.075);
				interpolate("/controls/gear/brake-right", 0, 0.075);
			} elsif (mod == 1) {
				brake = !getprop("/controls/gear/brake-parking");
				setprop("/controls/gear/brake-parking", brake);
				if (brake) {
					gui.popupTip("Parking Brake ON");
				} else {
					gui.popupTip("Parking Brake OFF");
				}
				setprop("/controls/gear/brake-left", 0);
				setprop("/controls/gear/brake-right", 0);
			} elsif (mod == 2) {
				speedbrake = !getprop("/controls/flight/speedbrake");
				setprop("/controls/flight/speedbrake", speedbrake);
			} elsif (mod == 3) {
				reverser = !getprop("/controls/engines/engine[0]/reverser");
				props.setAll("/controls/engines/engine", "reverser", reverser);
				if (reverser) {
					gui.popupTip("Thrust Reverser ON");
				} else {
					gui.popupTip("Thrust Reverser OFF");
				}
			}
		</script>
	</binding>
	</mod-up>
</button>



<!-- Left Button below Hat-switch, labeled "2" -->
<button n="1">
	<desc>Flaps Up; Gear up</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				controls.flapsDown(-1);
			} elsif (mod == 1) {
				controls.gearDown(-1);
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
	<mod-up>
		<binding>
			<command>nasal</command>
			<script>
				mod = cyborg-X-Modifier;
				if (mod == nil or mod == 0) {
					controls.flapsDown(0);
				} elsif (mod == 1) {
					controls.gearDown(0);
				} elsif (mod == 2) {
					#
				} elsif (mod == 3) {
					#
				}
			</script>
		</binding>
	</mod-up>
</button>

<!-- Right Button below Hat-switch, labeled "3" -->
<button n="2">
	<desc>Flaps Down; Gear down</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				controls.flapsDown(1);
			} elsif (mod == 1) {
				controls.gearDown(1);
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
	<mod-up>
		<binding>
			<command>nasal</command>
			<script>
				mod = cyborg-X-Modifier;
				if (mod == nil or mod == 0) {
					controls.flapsDown(0);
				} elsif (mod == 1) {
					controls.gearDown(0);
				} elsif (mod == 2) {
					#
				} elsif (mod == 3) {
					#
				}
			</script>
		</binding>
	</mod-up>
</button>

<!-- Button left of Hat switch, Labeled '4' -->
<button n="3">
	<desc>Previous View</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				view.stepView(-1);
			} elsif (mod == 1) {
				controls.rudderTrim(-0.75);
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
</button>

<!-- Button right of hat switch, Labeled '5' -->
<button n="4">
	<desc>Next View</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				view.stepView(1);
			} elsif (mod == 1) {
				controls.rudderTrim(0.75);
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
</button>

<!-- Button labeled "6" -->
<button>
	<desc>Reset view; toggle tail-wheel lock; reset trim</desc>
	<number>
		<unix>5</unix>
		<mac>5</mac>
		<windows>5</windows>
	</number>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				view.resetView();
			} elsif (mod == 1) {
				setprop("/controls/flight/elevator-trim", 0);
				setprop("/controls/flight/aileron-trim", 0);
				setprop("/controls/flight/rudder-trim", 0);
			} elsif (mod == 2) {
				setprop("/sim/current-view/view-number", 0);
				view.resetView();
			} elsif (mod == 3) {
				twlock = !getprop("/controls/gear/tailwheel-lock");
				setprop("/controls/gear/tailwheel-lock", twlock);
				if (twlock) {
					gui.popupTip("Tail Wheel LOCKED");
				} else {
					gui.popupTip("Tail Wheel UNLOCKED");
				}
			}
		</script>
	</binding>
</button>

<!-- Button labeled "7" -->
<button n="6">
  	<desc>Toggle the pause state of the sim</desc>
	<number>
		<unix>6</unix>
		<mac>6</mac>
		<windows>6</windows>
	</number>
  	<binding>
   		<command>property-toggle</command>
   		<property>/sim/freeze/master</property>
  	</binding>
  	<binding>
  		 <command>property-toggle</command>
  		 <property>/sim/freeze/clock</property>
  	</binding>
	<binding>
  		<condition>
    		<property>/sim/freeze/replay-state</property>
   		</condition>
  		<command>property-assign</command>
   		<property>/sim/freeze/replay-state</property>
  		<value type="int">0</value>
  	</binding>
</button>
<!-- Scroll wheel down -->
<button n="12">
	<desc>Zoom View</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				view.increase();
			} elsif (mod == 1) {
				#
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
</button>

<!-- Scroll wheel up -->
<button n="11">
	<desc>Zoom View</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
			mod = cyborg-X-Modifier;
			if (mod == nil or mod == 0) {
				view.decrease();
			} elsif (mod == 1) {
				#
			} elsif (mod == 2) {
				#
			} elsif (mod == 3) {
				#
			}
		</script>
	</binding>
</button><!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Modifier Buttons ~~~~~~~~~~~~~~~~~~~~~~~~ -->

<!-- Button labeled '10' -->
<button n="9">
	<desc>Modifier 1</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
			<script>
				cyborg-X-Modifier = 1
			</script>
	</binding>
	<mod-up>
		<binding>
			<command>nasal</command>
			<script>
				cyborg-X-Modifier = 0
			</script>
		</binding>
	</mod-up>
</button>

<!-- Button labeled '11' -->
<button n="10">
	<desc>Modifier 2</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
				cyborg-X-Modifier = 2
		</script>
	</binding>
	<mod-up>
		<binding>
			<command>nasal</command>
			<script>
				cyborg-X-Modifier = 0
			</script>
		</binding>
	</mod-up>
</button>

<!-- Button labeled 0/O (Shift State Button) -->
<button n="13">
	<desc>Modifier 3</desc>
	<repeatable type="bool">false</repeatable>
	<binding>
		<command>nasal</command>
		<script>
				cyborg-X-Modifier = 3
		</script>
	</binding>
	<mod-up>
		<binding>
			<command>nasal</command>
			<script>
				cyborg-X-Modifier = 0
			</script>
		</binding>
	</mod-up>
</button>


</PropertyList>
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to