diff --git a/.gitmodules b/.gitmodules
index 1a67650303907e8c90aec83bb780360d216fb33a..cee05e4fbee0dc2c9643bd17f96a7335aa6e6c1e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,3 +2,7 @@
 	path = Plugins/nDisplayExtensions
 	url = https://devhub.vr.rwth-aachen.de/VR-Group/ndisplayextensions.git
 	branch = develop
+[submodule "Plugins/nDisplayInput"]
+	path = Plugins/nDisplayInput
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/ndisplayinput.git
+	branch = develop
diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini
index e897848a946791df6ce2a59e3498340724d17f9c..485b49f020e861608adcfbd03572ae280581feca 100644
--- a/Config/DefaultInput.ini
+++ b/Config/DefaultInput.ini
@@ -1,32 +1,28 @@
 
 [/Script/Engine.InputSettings]
--AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
--AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
--AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
--AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
--AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
--AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
-+AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
-+AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
-+AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
-+AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Left_Thumbstick_Z",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Left_TriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Left_Grip1Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Left_Grip2Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Right_Thumbstick_Z",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Right_TriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Right_Grip1Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +AxisConfig=(AxisKeyName="MotionController_Right_Grip2Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
-+AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
-+AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 bAltEnterTogglesFullscreen=True
 bF11TogglesFullscreen=True
 bUseMouseForTouch=False
@@ -37,20 +33,35 @@ bDefaultViewportMouseLock=False
 bAlwaysShowTouchInterface=False
 bShowConsoleOnFourFingerTap=True
 bEnableGestureRecognizer=False
+bUseAutocorrect=False
 DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
 DefaultViewportMouseLockMode=LockOnCapture
 FOVScale=0.011110
 DoubleClickTime=0.200000
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftMouseButton)
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=DisplayClusterTrigger)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=One)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=DisplayClusterAction1)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Two)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=DisplayClusterAction2)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Three)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=DisplayClusterAction3)
++ActionMappings=(ActionName="Action4",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Four)
++ActionMappings=(ActionName="Action4",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=DisplayClusterAction4)
++ActionMappings=(ActionName="Action5",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Five)
++ActionMappings=(ActionName="Action5",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=DisplayClusterAction5)
 +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W)
-+AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
-+AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=E)
-+AxisMappings=(AxisName="TurnRate",Scale=-1.000000,Key=Left)
-+AxisMappings=(AxisName="LookUpRate",Scale=-1.000000,Key=Up)
 +AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=DisplayClusterAxisY)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
 +AxisMappings=(AxisName="MoveRight",Scale=-1.000000,Key=A)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=DisplayClusterAxisX)
++AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=E)
 +AxisMappings=(AxisName="MoveUp",Scale=-1.000000,Key=Q)
++AxisMappings=(AxisName="TurnRate",Scale=-1.000000,Key=Left)
 +AxisMappings=(AxisName="TurnRate",Scale=1.000000,Key=Right)
 +AxisMappings=(AxisName="TurnRate",Scale=1.000000,Key=MouseX)
++AxisMappings=(AxisName="LookUpRate",Scale=-1.000000,Key=Up)
 +AxisMappings=(AxisName="LookUpRate",Scale=1.000000,Key=Down)
 +AxisMappings=(AxisName="LookUpRate",Scale=-1.000000,Key=MouseY)
 DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
diff --git a/Plugins/nDisplayExtensions b/Plugins/nDisplayExtensions
index 986c727e2d633d44028b7c44a9ef8f17dda1baeb..80c81f222dcdf1f4cc81be14dc1a71a4525fac44 160000
--- a/Plugins/nDisplayExtensions
+++ b/Plugins/nDisplayExtensions
@@ -1 +1 @@
-Subproject commit 986c727e2d633d44028b7c44a9ef8f17dda1baeb
+Subproject commit 80c81f222dcdf1f4cc81be14dc1a71a4525fac44
diff --git a/Plugins/nDisplayInput b/Plugins/nDisplayInput
new file mode 160000
index 0000000000000000000000000000000000000000..f7baa02190f185ec7ab85ce7b5777ddce3e0cf9c
--- /dev/null
+++ b/Plugins/nDisplayInput
@@ -0,0 +1 @@
+Subproject commit f7baa02190f185ec7ab85ce7b5777ddce3e0cf9c
diff --git a/template.uproject b/template.uproject
index 7dd8b048fd9d3b765bd5ed48fe755dca0238c98c..ce49f1db6a009cee37323e80425cd263a84251a1 100644
--- a/template.uproject
+++ b/template.uproject
@@ -10,12 +10,20 @@
 			"LoadingPhase": "Default"
 		}
 	],
-	"Plugins": [
-		{
-			"Name": "nDisplay",
-			"Enabled": true
-		}
-	],
+  "Plugins": [
+    {
+      "Name": "nDisplay",
+      "Enabled": true
+    },
+    {
+      "Name": "nDisplayExtensions",
+      "Enabled": true
+    },
+    {
+      "Name": "nDisplayInput",
+      "Enabled": true
+    }
+  ],
 	"TargetPlatforms": [
 		"WindowsNoEditor"
 	]