diff --git a/Input/Joysticks/Genius/MetalStrike-3D.xml b/Input/Joysticks/Genius/MetalStrike-3D.xml
new file mode 100644
index 000000000..00390b8c4
--- /dev/null
+++ b/Input/Joysticks/Genius/MetalStrike-3D.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0"?>
+
+<!-- 
+************************************************************************
+Support for Genius Metal strike 3D joystick
+
+Created 9. February 2013 by Tomas Komarek
+************************************************************************
+-->
+
+<PropertyList>
+
+<name>MetalStrik 3D</name> <!-- yes, it really shows up without the 'e' in "Strike" at my machine... -->
+
+<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>
+
+<!-- n="2" and n="3" had to be swapped for proper rudder/throttle control -->
+<axis n="3">
+    <desc>Throttle</desc>
+    <binding>
+        <command>nasal</command>
+        <script>controls.throttleAxis()</script>
+    </binding>
+</axis>
+
+<axis n="2">
+    <desc>Rudder</desc>
+    <binding>
+        <command>property-scale</command>
+        <property>/controls/flight/rudder</property>
+        <power type="double">2</power>
+    </binding>
+</axis>
+
+<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>
+
+<!-- I swapped elevator trim buttons for more intuitive contol -->
+<button n="1">
+    <desc>Elevator trim Down</desc>
+    <repeatable type="bool">true</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.elevatorTrim(-1)</script>
+    </binding>
+</button>
+
+<button n="2">
+    <desc>Elevator trim Up</desc>
+    <repeatable type="bool">true</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.elevatorTrim(1)</script>
+    </binding>
+</button>
+
+<!-- View direction/elevation added from Genius f31, but I had to add the n="4" which was missing for it to work -->
+<axis n="4"> 
+    <desc>View Direction</desc>
+    <number>
+        <unix>4</unix>
+        <windows>6</windows>
+    </number>
+    <low>
+        <desc>View left</desc>
+        <repeatable>true</repeatable>
+        <binding>
+            <!--
+            This also works, but LookAt views has inverted left/right.
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-heading-offset-deg</property>
+            <step type="double">3.0</step>
+            -->
+            <command>nasal</command>
+            <script>
+                var valueDelta = -3.0;
+                if (getprop("/sim/current-view/type") == "lookat")
+                {
+                    valueDelta = 3.0;
+                }
+                setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/heading-offset-deg") - valueDelta);
+            </script>
+        </binding>
+    </low>
+    <high>
+        <desc>View right</desc>
+        <repeatable>true</repeatable>
+        <binding>
+            <!--
+            This also works, but LookAt views has inverted left/right.
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-heading-offset-deg</property>
+            <step type="double">-3.0</step>
+            -->
+            <command>nasal</command>
+            <script>
+                var valueDelta = -3.0;
+                if (getprop("/sim/current-view/type") == "lookat")
+                {
+                    valueDelta = 3.0;
+                }
+                setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/heading-offset-deg") + valueDelta);
+            </script>
+        </binding>
+    </high>
+</axis>
+
+<axis n="5"> 
+    <desc>View Elevation</desc>
+    <number>
+        <unix>5</unix>
+        <windows>7</windows>
+    </number>
+    <low>
+        <desc>View down</desc>
+        <repeatable>true</repeatable>
+        <binding>
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-pitch-offset-deg</property>
+            <step type="double">3.0</step> <!-- Use -3.0 for Windows. -->
+        </binding>
+    </low>
+    <high>
+        <desc>View up</desc>
+        <repeatable>true</repeatable>
+        <binding>
+            <command>property-adjust</command>
+            <property>/sim/current-view/goal-pitch-offset-deg</property>
+            <step type="double">-3.0</step> <!-- Use 3.0 for Windows. -->
+        </binding>
+    </high>
+</axis>
+
+<button n="3">
+    <desc>Flaps down</desc>
+    <binding>
+        <command>nasal</command>
+        <script>controls.flapsDown(1)</script>
+    </binding>
+    <mod-up>
+        <binding>
+            <command>nasal</command>
+            <script>controls.flapsDown(0)</script>
+        </binding>
+    </mod-up>
+</button>
+
+<button n="4">
+    <desc>Flaps up</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.flapsDown(-1)</script>
+    </binding>
+    <mod-up>
+        <binding>
+            <command>nasal</command>
+            <script>controls.flapsDown(0)</script>
+        </binding>
+    </mod-up>
+</button>
+
+<!-- View cycling added from Genius f31, but I added backwards cycling as well -->
+<button n="5">
+    <desc>Cycle View</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>
+            view.stepView(0);
+            #gui.popupTip(sprintf("View index: %d, view type: %s", getprop("sim/current-view/view-number"), getprop("/sim/current-view/type")));
+        </script>
+    </binding>
+</button>
+
+<button n="6">
+    <desc>Cycle View</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>
+            view.stepView(1);
+            #gui.popupTip(sprintf("View index: %d, view type: %s", getprop("sim/current-view/view-number"), getprop("/sim/current-view/type")));
+        </script>
+    </binding>
+</button>
+
+<button n="7">
+    <desc>Landing Gear Up</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.gearDown(-1)</script>
+    </binding>
+</button>
+
+<button n="8">
+    <desc>Landing Gear Down</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.gearDown(1)</script>
+    </binding>
+</button>
+
+<button n="9">
+    <desc>Aileron trim Left</desc>
+    <repeatable type="bool">true</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.aileronTrim(-1)</script>
+    </binding>
+</button>
+
+<button n="10">
+    <desc>Aileron trim Right</desc>
+    <repeatable type="bool">true</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script>controls.aileronTrim(1)</script>
+    </binding>
+</button>
+
+<!-- 
+Parking Brake On/Off - I prefer this way over the single button toggle, so I can be sure if it's on/off 
+I had to implement short nasal parts which change the parking brake property, as no function in controls.nas seems to provide this
+-->
+<button n="11">
+    <desc>Parking Brake Off</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script> 
+            var p = "/controls/gear/brake-parking";
+            setprop(p, 0);
+            return 0;
+        </script>
+    </binding>
+</button>
+
+<button n="12">
+    <desc>Parking Brake On</desc>
+    <repeatable>false</repeatable>
+    <binding>
+        <command>nasal</command>
+        <script> 
+            var p = "/controls/gear/brake-parking";
+            setprop(p, 1);
+            return 1;
+        </script>
+    </binding>
+</button>
+
+</PropertyList>
+
+<!-- end of joystick.xml -->
\ No newline at end of file