Arvid NORLANDER: Saitek X52 pro driver
This commit is contained in:
parent
f671f0b0f7
commit
f2a14b1697
1 changed files with 702 additions and 0 deletions
702
Input/Joysticks/Saitek/X52-pro.xml
Normal file
702
Input/Joysticks/Saitek/X52-pro.xml
Normal file
|
@ -0,0 +1,702 @@
|
|||
<?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>
|
||||
|
||||
<!-- 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>
|
Loading…
Add table
Reference in a new issue