diff --git a/Source/DisplayClusterInput/Private/DisplayClusterInputDevice.cpp b/Source/DisplayClusterInput/Private/DisplayClusterInputDevice.cpp
index 3d07d0c54b097ac0dfcdb929655dd2c95fd71634..9d2339a116c369e2d50bfd877d3963a5d0dc266c 100644
--- a/Source/DisplayClusterInput/Private/DisplayClusterInputDevice.cpp
+++ b/Source/DisplayClusterInput/Private/DisplayClusterInputDevice.cpp
@@ -11,111 +11,131 @@
 
 #define LOCTEXT_NAMESPACE "DisplayClusterInput"
 
-FDisplayClusterInputDevice::FDisplayClusterInputDevice(const TSharedRef<FGenericApplicationMessageHandler>& InMessageHandler) : MessageHandler(InMessageHandler)
+FDisplayClusterInputDevice::FDisplayClusterInputDevice(
+	const TSharedRef<FGenericApplicationMessageHandler>& InMessageHandler) : MessageHandler(InMessageHandler)
 {
-  AxisIndices   = TArray<const FKey*>
-  {
-    &FDisplayClusterKeys::Axis0,
-    &FDisplayClusterKeys::Axis1
-  };
-  ButtonIndices = TArray<const FKey*> 
-  { 
-    &FDisplayClusterKeys::Button0, 
-    &FDisplayClusterKeys::Button1,
-    &FDisplayClusterKeys::Button2,
-    &FDisplayClusterKeys::Button3,
-    &FDisplayClusterKeys::Button4,
-    &FDisplayClusterKeys::Button5,
-    &FDisplayClusterKeys::Button6,
-    &FDisplayClusterKeys::Button7,
-    &FDisplayClusterKeys::Button8,
-    &FDisplayClusterKeys::Button9
-  };
+	AxisIndices = TArray<const FKey*>
+	{
+		&FDisplayClusterKeys::Axis0,
+		&FDisplayClusterKeys::Axis1
+	};
+	//Reordered to match the 4.22 behavior
+	ButtonIndices = TArray<const FKey*>
+	{
+		&FDisplayClusterKeys::Button0,
+		&FDisplayClusterKeys::Button4,
+		&FDisplayClusterKeys::Button3,
+		&FDisplayClusterKeys::Button2,
+		&FDisplayClusterKeys::Button1,
+		&FDisplayClusterKeys::Button5,
+		&FDisplayClusterKeys::Button6,
+		&FDisplayClusterKeys::Button7,
+		&FDisplayClusterKeys::Button8,
+		&FDisplayClusterKeys::Button9
+	};
 }
+
 FDisplayClusterInputDevice::~FDisplayClusterInputDevice()
 {
-
 }
 
-void FDisplayClusterInputDevice::PreInit             ()
+void FDisplayClusterInputDevice::PreInit()
 {
-  EKeys::AddMenuCategoryDisplayInfo("DisplayCluster", LOCTEXT("DisplayClusterSubCategory", "Display Cluster"), TEXT("GraphEditor.PadEvent_16x"));
-
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button0, LOCTEXT("nDisplayButton0", "nDisplay Button 0"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button1, LOCTEXT("nDisplayButton1", "nDisplay Button 1"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button2, LOCTEXT("nDisplayButton2", "nDisplay Button 2"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button3, LOCTEXT("nDisplayButton3", "nDisplay Button 3"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button4, LOCTEXT("nDisplayButton4", "nDisplay Button 4"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button5, LOCTEXT("nDisplayButton5", "nDisplay Button 5"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button6, LOCTEXT("nDisplayButton6", "nDisplay Button 6"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button7, LOCTEXT("nDisplayButton7", "nDisplay Button 7"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button8, LOCTEXT("nDisplayButton8", "nDisplay Button 8"), FKeyDetails::GamepadKey, "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button9, LOCTEXT("nDisplayButton9", "nDisplay Button 9"), FKeyDetails::GamepadKey, "DisplayCluster"));
-
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Axis0  , LOCTEXT("nDisplayAxis0"  , "nDisplay Axis 0"  ), FKeyDetails::FloatAxis , "DisplayCluster"));
-  EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Axis1  , LOCTEXT("nDisplayAxis1"  , "nDisplay Axis 1"  ), FKeyDetails::FloatAxis , "DisplayCluster"));
-
-  FInputAxisConfigEntry AxisX, AxisY;
-  AxisX.AxisKeyName    = FDisplayClusterKeys::Axis0.GetFName();
-  AxisX.AxisProperties = FInputAxisProperties();
-  AxisY.AxisKeyName    = FDisplayClusterKeys::Axis1.GetFName();
-  AxisY.AxisProperties = FInputAxisProperties();
-  AxisX.AxisProperties.bInvert = true;
-  UInputSettings::GetInputSettings()->AxisConfig.Add(AxisX);
-  UInputSettings::GetInputSettings()->AxisConfig.Add(AxisY);
+	EKeys::AddMenuCategoryDisplayInfo("DisplayCluster", LOCTEXT("DisplayClusterSubCategory", "Display Cluster"),
+	                                  TEXT("GraphEditor.PadEvent_16x"));
+
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button0, LOCTEXT("nDisplayButton0", "nDisplay Button 0"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button1, LOCTEXT("nDisplayButton1", "nDisplay Button 1"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button2, LOCTEXT("nDisplayButton2", "nDisplay Button 2"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button3, LOCTEXT("nDisplayButton3", "nDisplay Button 3"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button4, LOCTEXT("nDisplayButton4", "nDisplay Button 4"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button5, LOCTEXT("nDisplayButton5", "nDisplay Button 5"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button6, LOCTEXT("nDisplayButton6", "nDisplay Button 6"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button7, LOCTEXT("nDisplayButton7", "nDisplay Button 7"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button8, LOCTEXT("nDisplayButton8", "nDisplay Button 8"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Button9, LOCTEXT("nDisplayButton9", "nDisplay Button 9"),
+	                          FKeyDetails::GamepadKey, "DisplayCluster"));
+
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Axis0, LOCTEXT("nDisplayAxis0", "nDisplay Axis 0"),
+	                          FKeyDetails::FloatAxis, "DisplayCluster"));
+	EKeys::AddKey(FKeyDetails(FDisplayClusterKeys::Axis1, LOCTEXT("nDisplayAxis1", "nDisplay Axis 1"),
+	                          FKeyDetails::FloatAxis, "DisplayCluster"));
+
+	FInputAxisConfigEntry AxisX, AxisY;
+	AxisX.AxisKeyName = FDisplayClusterKeys::Axis0.GetFName();
+	AxisX.AxisProperties = FInputAxisProperties();
+	AxisY.AxisKeyName = FDisplayClusterKeys::Axis1.GetFName();
+	AxisY.AxisProperties = FInputAxisProperties();
+	UInputSettings::GetInputSettings()->AxisConfig.Add(AxisX);
+	UInputSettings::GetInputSettings()->AxisConfig.Add(AxisY);
 }
 
-bool FDisplayClusterInputDevice::Exec                (UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar)
+bool FDisplayClusterInputDevice::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar)
 {
-  return false;
-}                 
+	return false;
+}
+
 void FDisplayClusterInputDevice::SendControllerEvents()
 {
-  if (!IDisplayCluster::IsAvailable()) return;
-
-  auto InputManager = IDisplayCluster::Get().GetInputMgr();
-  
-  TArray<FString> AxisDeviceIds;
-  InputManager->GetAxisDeviceIds(AxisDeviceIds);
-  for (auto i = 0; i < AxisDeviceIds.Num(); ++i)
-  {
-    for (auto j = 0; j < AxisIndices.Num(); ++j)
-    {
-      float Value = 0.0f;
-      InputManager  ->GetAxis           (AxisDeviceIds[i]            , j, Value);
-      MessageHandler->OnControllerAnalog(AxisIndices  [j]->GetFName(), i, Value);
-    }
-  }
-
-  TArray<FString> ButtonDeviceIds;
-  InputManager->GetButtonDeviceIds(ButtonDeviceIds);
-  for (auto i = 0; i < ButtonDeviceIds.Num(); ++i)
-  {
-    for (auto j = 0; j < ButtonIndices.Num(); ++j)
-    {
-      bool Pressed = false, Released = false;
-      InputManager->WasButtonPressed (ButtonDeviceIds[i], j, Pressed );
-      InputManager->WasButtonReleased(ButtonDeviceIds[i], j, Released);
-      if (Pressed ) MessageHandler->OnControllerButtonPressed (ButtonIndices[j]->GetFName(), i, false);
-      if (Released) MessageHandler->OnControllerButtonReleased(ButtonIndices[j]->GetFName(), i, false);
-    }
-  }
-}                 
-void FDisplayClusterInputDevice::SetChannelValue     (int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value)
+	if (!IDisplayCluster::IsAvailable()) return;
+
+	auto InputManager = IDisplayCluster::Get().GetInputMgr();
+
+	TArray<FString> AxisDeviceIds;
+	InputManager->GetAxisDeviceIds(AxisDeviceIds);
+	for (auto i = 0; i < AxisDeviceIds.Num(); ++i)
+	{
+		for (auto j = 0; j < AxisIndices.Num(); ++j)
+		{
+			float Value = 0.0f;
+			InputManager->GetAxis(AxisDeviceIds[i], j, Value);
+			MessageHandler->OnControllerAnalog(AxisIndices[j]->GetFName(), i, Value);
+		}
+	}
+
+	TArray<FString> ButtonDeviceIds;
+	InputManager->GetButtonDeviceIds(ButtonDeviceIds);
+	for (auto i = 0; i < ButtonDeviceIds.Num(); ++i)
+	{
+		for (auto j = 0; j < ButtonIndices.Num(); ++j)
+		{
+			bool Pressed = false, Released = false;
+			InputManager->WasButtonPressed(ButtonDeviceIds[i], j, Pressed);
+			InputManager->WasButtonReleased(ButtonDeviceIds[i], j, Released);
+			if (Pressed) MessageHandler->OnControllerButtonPressed(ButtonIndices[j]->GetFName(), i, false);
+			if (Released) MessageHandler->OnControllerButtonReleased(ButtonIndices[j]->GetFName(), i, false);
+		}
+	}
+}
+
+void FDisplayClusterInputDevice::SetChannelValue(int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value)
 {
-  // Intentionally empty (no haptic support).
-} 
-void FDisplayClusterInputDevice::SetChannelValues    (int32 ControllerId, const FForceFeedbackValues& Values)
+	// Intentionally empty (no haptic support).
+}
+
+void FDisplayClusterInputDevice::SetChannelValues(int32 ControllerId, const FForceFeedbackValues& Values)
 {
-  // Intentionally empty (no haptic support).
+	// Intentionally empty (no haptic support).
 }
-void FDisplayClusterInputDevice::SetMessageHandler   (const TSharedRef<FGenericApplicationMessageHandler>& InMessageHandler)
+
+void FDisplayClusterInputDevice::SetMessageHandler(
+	const TSharedRef<FGenericApplicationMessageHandler>& InMessageHandler)
 {
-  MessageHandler = InMessageHandler;
+	MessageHandler = InMessageHandler;
 }
-void FDisplayClusterInputDevice::Tick                (float DeltaTime)
+
+void FDisplayClusterInputDevice::Tick(float DeltaTime)
 {
-  // Intentionally empty (everything is handled in SendControllerEvents above).
+	// Intentionally empty (everything is handled in SendControllerEvents above).
 }
 
-#undef LOCTEXT_NAMESPACE
\ No newline at end of file
+#undef LOCTEXT_NAMESPACE
diff --git a/Source/DisplayClusterInput/Private/DisplayClusterKeys.cpp b/Source/DisplayClusterInput/Private/DisplayClusterKeys.cpp
index 4f2e499d8c22839d9f6b8e95a77758cf63fd2d31..5d397c00da1bfc85a2eb5b399579f14c37db8215 100644
--- a/Source/DisplayClusterInput/Private/DisplayClusterKeys.cpp
+++ b/Source/DisplayClusterInput/Private/DisplayClusterKeys.cpp
@@ -1,15 +1,15 @@
 #include "DisplayClusterKeys.h"
 
-const FKey FDisplayClusterKeys::Button0("nDisplay Button 0");
-const FKey FDisplayClusterKeys::Button1("nDisplay Button 1");
-const FKey FDisplayClusterKeys::Button2("nDisplay Button 2");
-const FKey FDisplayClusterKeys::Button3("nDisplay Button 3");
-const FKey FDisplayClusterKeys::Button4("nDisplay Button 4");
-const FKey FDisplayClusterKeys::Button5("nDisplay Button 5");
-const FKey FDisplayClusterKeys::Button6("nDisplay Button 6");
-const FKey FDisplayClusterKeys::Button7("nDisplay Button 7");
-const FKey FDisplayClusterKeys::Button8("nDisplay Button 8");
-const FKey FDisplayClusterKeys::Button9("nDisplay Button 9");
+const FKey FDisplayClusterKeys::Button0("nDisplayButton0");
+const FKey FDisplayClusterKeys::Button1("nDisplayButton1");
+const FKey FDisplayClusterKeys::Button2("nDisplayButton2");
+const FKey FDisplayClusterKeys::Button3("nDisplayButton3");
+const FKey FDisplayClusterKeys::Button4("nDisplayButton4");
+const FKey FDisplayClusterKeys::Button5("nDisplayButton5");
+const FKey FDisplayClusterKeys::Button6("nDisplayButton6");
+const FKey FDisplayClusterKeys::Button7("nDisplayButton7");
+const FKey FDisplayClusterKeys::Button8("nDisplayButton8");
+const FKey FDisplayClusterKeys::Button9("nDisplayButton9");
 
-const FKey FDisplayClusterKeys::Axis0  ("nDisplay Axis 0"  );
-const FKey FDisplayClusterKeys::Axis1  ("nDisplay Axis 1"  );
+const FKey FDisplayClusterKeys::Axis0  ("nDisplayAxis0"  );
+const FKey FDisplayClusterKeys::Axis1  ("nDisplayAxis1"  );