2 Joystick binding definitions for "Saitek Cyborg Evo" Joystick.
4 This file borrows heavily from "Cyborg-Gold-3d-USB.xml"
6 The Saitek Cyborg Evo is designed to be easily switchable between a
7 left-handed or right handed person. With that in mind {^, F1, F2} buttons
8 on the left, and {^, F3, F4 } buttons on the right have repeated
9 functionality as the 'modifier' buttons.
11 Axis # (direction) mapped to
12 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 axis 0: (left-right) aileron
14 axis 1: (forward-backward) elevator
15 axis 2: (slider) throttle
16 axis 3: (twist) rudder
18 ~~~~ Left Side Modifiers ~~~~
19 button 10: "^" Modifier 1
20 button 6: "F1" Modifier 2
21 button 7: "F2" Modifier 3
23 ~~~~ Right Side Modifiers ~~~~
24 button 11: "^" Modifier 1
25 button 8: "F3" Modifier 2
26 button 9: "F4" Modifier 3
28 Button # (location) No Mod Mod 1 Mod 2 Mod 3
29 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 button 0: (trigger) Brakes Parking Brake Speed Brake Thrust Reverse
31 button 1: (middle) Reset View Reset All Trim Cockpit View Tail Wheel Lock
32 button 2: (left) Flaps Up Gear Up Zoom In #
33 button 3: (right) Flaps Down Gear Down Zoom Out #
34 button 4: (left of hat) Previous View Trim Rudder # #
35 button 5: (right of hat) Next View Trim Rudder # #
37 axis 6: (hat left-right) look l/r Trim Aileron Adj Mixture #
38 axis 7: (hat up-down) look u/d Trim Elevator Adj Propeller #
44 <name>Saitek Cyborg Evo</name>
46 <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Axis Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ -->
51 <command>property-scale</command>
52 <property>/controls/flight/aileron</property>
53 <power type="double">2</power>
60 <command>property-scale</command>
61 <property>/controls/flight/elevator</property>
62 <factor type="double">-1.0</factor>
63 <power type="double">2</power>
70 <command>nasal</command>
71 <DEFANGED_script>controls.throttleAxis()</DEFANGED_script>
78 <command>property-scale</command>
79 <property>/controls/flight/rudder</property>
80 <power type="double">2</power>
84 <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Hat Switch ~~~~~~~~~~~~~~~~~~~~~~~~ -->
86 <desc>View Direction; Aileron Trim;</desc>
88 <repeatable>true</repeatable>
90 <command>nasal</command>
92 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
93 if (mod == nil or mod == 0) {
94 v = getprop("/sim/current-view/view-number");
95 if (v == 0 or v == 4) {
101 controls.aileronTrim(-0.75);
103 controls.adjMixture(-2);
111 <repeatable>true</repeatable>
113 <command>nasal</command>
115 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
116 if (mod == nil or mod == 0) {
117 v = getprop("/sim/current-view/view-number");
118 if (v == 0 or v == 4) {
124 controls.aileronTrim(0.75);
126 controls.adjMixture(2);
136 <desc>View Elevation; Elevator Trim;</desc>
138 <repeatable>true</repeatable>
140 <command>nasal</command>
142 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
143 if (mod == nil or mod == 0) {
144 view.panViewPitch(2);
146 controls.elevatorTrim(-0.75);
148 controls.adjPropeller(-1);
156 <repeatable>true</repeatable>
158 <command>nasal</command>
160 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
161 if (mod == nil or mod == 0) {
162 view.panViewPitch(-2);
164 controls.elevatorTrim(0.75);
166 controls.adjPropeller(1);
176 <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Button Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ -->
178 <!-- Trigger Button - Brakes, Parking Brake, Thrust Reverser -->
179 <DEFANGED_button n="0">
181 <repeatable type="bool">true</repeatable>
183 <command>nasal</command>
185 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
186 if (mod == nil or mod == 0) {
187 interpolate("/controls/gear/brake-left", 1, 0.075);
188 interpolate("/controls/gear/brake-right", 1, 0.075);
190 setprop("/controls/gear/brake-left", 1);
191 setprop("/controls/gear/brake-right", 1);
200 <repeatable type="bool">true</repeatable>
202 <command>nasal</command>
204 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
205 if (mod == nil or mod == 0) {
206 interpolate("/controls/gear/brake-left", 0, 0.075);
207 interpolate("/controls/gear/brake-right", 0, 0.075);
209 brake = !getprop("/controls/gear/brake-parking");
210 setprop("/controls/gear/brake-parking", brake);
212 gui.popupTip("Parking Brake ON");
214 gui.popupTip("Parking Brake OFF");
216 setprop("/controls/gear/brake-left", 0);
217 setprop("/controls/gear/brake-right", 0);
219 speedbrake = !getprop("/controls/flight/speedbrake");
220 setprop("/controls/flight/speedbrake", speedbrake);
222 reverser = !getprop("/controls/engines/engine[0]/reverser");
223 props.setAll("/controls/engines/engine", "reverser", reverser);
225 gui.popupTip("Thrust Reverser ON");
227 gui.popupTip("Thrust Reverser OFF");
235 <!-- Middle Button below Hat-switch, labeled "2" -->
236 <DEFANGED_button n="1">
237 <desc>Reset view; toggle tail-wheel lock; reset trim</desc>
238 <repeatable type="bool">false</repeatable>
240 <command>nasal</command>
242 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
243 if (mod == nil or mod == 0) {
246 setprop("/controls/flight/elevator-trim", 0);
247 setprop("/controls/flight/aileron-trim", 0);
248 setprop("/controls/flight/rudder-trim", 0);
250 setprop("/sim/current-view/view-number", 0);
253 twlock = !getprop("/controls/gear/tailwheel-lock");
254 setprop("/controls/gear/tailwheel-lock", twlock);
256 gui.popupTip("Tail Wheel UNLOCKED");
258 gui.popupTip("Tail Wheel LOCKED");
265 <!-- Left Button below Hat-switch, labeled "3" -->
266 <DEFANGED_button n="2">
267 <desc>Flaps Up; Gear up</desc>
268 <repeatable type="bool">false</repeatable>
270 <command>nasal</command>
272 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
273 if (mod == nil or mod == 0) {
274 controls.stepFlaps(-1);
276 setprop("/controls/gear/gear-down", 0);
286 <!-- Right Button below Hat-switch, labeled "4" -->
287 <DEFANGED_button n="3"><!-- right -->
288 <desc>Flaps Down; Gear down</desc>
289 <repeatable type="bool">false</repeatable>
291 <command>nasal</command>
293 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
294 if (mod == nil or mod == 0) {
295 controls.stepFlaps(1);
297 setprop("/controls/gear/gear-down", 1);
307 <!-- Button left of Hat switch, Labeled '5' -->
308 <DEFANGED_button n="4">
309 <desc>Previous View</desc>
310 <repeatable type="bool">false</repeatable>
312 <command>nasal</command>
314 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
315 if (mod == nil or mod == 0) {
318 controls.rudderTrim(-0.75);
328 <!-- Button right of Hat switch, Labeled '6' -->
329 <DEFANGED_button n="5">
330 <desc>Next View</desc>
331 <repeatable type="bool">false</repeatable>
333 <command>nasal</command>
335 mod = getprop("/input/joysticks/js[0]/saitek-cyborg-evo-modifier");
336 if (mod == nil or mod == 0) {
339 controls.rudderTrim(0.75);
349 <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Modifier Buttons ~~~~~~~~~~~~~~~~~~~~~~~~ -->
351 <!-- Left Side Button labeled ^ -->
352 <DEFANGED_button n="10">
353 <desc>Modifier 1</desc>
354 <repeatable type="bool">false</repeatable>
356 <command>nasal</command>
358 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
364 <command>nasal</command>
366 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
373 <!-- Left Side Button labeled F1 -->
374 <DEFANGED_button n="6">
375 <desc>Modifier 2</desc>
376 <repeatable type="bool">false</repeatable>
378 <command>nasal</command>
380 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
386 <command>nasal</command>
388 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
395 <!-- Left Side Button labeled F2 -->
396 <DEFANGED_button n="7">
397 <desc>Modifier 3</desc>
398 <repeatable type="bool">false</repeatable>
400 <command>nasal</command>
402 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
408 <command>nasal</command>
410 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
417 <!-- Right Side Button labeled ^ -->
418 <DEFANGED_button n="11">
419 <desc>Modifier 1</desc>
420 <repeatable type="bool">false</repeatable>
422 <command>nasal</command>
424 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
430 <command>nasal</command>
432 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
439 <!-- Right Side Button labeled F3 -->
440 <DEFANGED_button n="8">
441 <desc>Modifier 2</desc>
442 <repeatable type="bool">false</repeatable>
444 <command>nasal</command>
446 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
452 <command>nasal</command>
454 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
461 <!-- Right Side Button labeled F4 -->
462 <DEFANGED_button n="9">
463 <desc>Modifier 3</desc>
464 <repeatable type="bool">false</repeatable>
466 <command>nasal</command>
468 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";
474 <command>nasal</command>
476 name = "/input/joysticks/js[0]/saitek-cyborg-evo-modifier";