Enhanced Raw Input 1.2
Enhanced Raw Input for Unreal Engine
Loading...
Searching...
No Matches
EnhancedRawInput.h
1
2// (c) 2025 by Lemontree Softworks - All Rights Reserved.
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "Modules/ModuleManager.h"
8#include "IInputDeviceModule.h"
9#include "IInputDevice.h"
10#include "GenericPlatform/GenericApplicationMessageHandler.h"
11
12constexpr auto MaxEnhancedRawInputAxis = 8;
13constexpr auto MaxEnhancedRawInputButtons = 128;
14constexpr auto MaxEnhancedRawInputPovs = 4;
15
17DECLARE_DELEGATE_RetVal_TwoParams(bool, FEnhancedRawInputDataDelegate, int32 /*DataSize*/, const struct tagRAWINPUT* /*Data */);
18
20class IEnhancedRawInput : public IInputDevice
21{
22public:
23 explicit IEnhancedRawInput(const TSharedRef<FGenericApplicationMessageHandler> &InMessageHandler);
24 virtual ~IEnhancedRawInput() override {};
25
28 virtual void SetBindings(const FString InterfaceName) {}
29
30 virtual void SetMultiControllerBinding(const int32 ControllerId, const FString InterfaceName) {}
31
36 virtual void SetAxisBinding(const FString InterfaceName, const int32 AxisUsage, const FName KeyName) {}
37
42 virtual void SetButtonBinding(const FString InterfaceName, const int32 ButtonIndex, const FName KeyName) {}
43
48 virtual void SetPovAxisBinding(const FString InterfaceName, const int32 PovIndex, FName KeyName) {}
49
54 virtual void SetPovButtonBinding(const FString InterfaceName, const int32 PovIndex, TArray<FName> KeyNames) {}
55
58 FEnhancedRawInputDataDelegate& GetDataReceivedHandler() { return DataReceivedHandler; }
59
60protected:
61 TSharedRef<FGenericApplicationMessageHandler> MessageHandler;
62
63 FEnhancedRawInputDataDelegate DataReceivedHandler;
64};
65
67class FEnhancedRawInputPlugin : public IInputDeviceModule
68{
69 virtual TSharedPtr<IInputDevice> CreateInputDevice(const TSharedRef<FGenericApplicationMessageHandler> &InMessageHandler) override;
70 TSharedPtr<class IEnhancedRawInput> EnhancedRawInput;
71
72public:
73
76 TSharedPtr<class IEnhancedRawInput>& GetEnhancedRawInput() { return EnhancedRawInput; }
77
78 virtual void StartupModule() override;
79 virtual void ShutdownModule() override;
80
84 {
85 return FModuleManager::LoadModuleChecked<FEnhancedRawInputPlugin>("EnhancedRawInput");
86 }
87
90 static inline bool IsAvailable()
91 {
92 return FModuleManager::Get().IsModuleLoaded("EnhancedRawInput");
93 }
94};
The Plugin class, implements IInputDeviceModule.
Definition EnhancedRawInput.h:68
static FEnhancedRawInputPlugin & Get()
Loads Enhanced Raw Input Plugin, checking to ensure it exists.
Definition EnhancedRawInput.h:83
static bool IsAvailable()
Checks if module is available.
Definition EnhancedRawInput.h:90
TSharedPtr< class IEnhancedRawInput > & GetEnhancedRawInput()
Gets a pointer to the Enhanced Raw Input object.
Definition EnhancedRawInput.h:76
virtual void SetPovButtonBinding(const FString InterfaceName, const int32 PovIndex, TArray< FName > KeyNames)
Binds a controller POV to a corresponding keys.
Definition EnhancedRawInput.h:54
virtual void SetPovAxisBinding(const FString InterfaceName, const int32 PovIndex, FName KeyName)
Binds a controller POV axis to a corresponding key.
Definition EnhancedRawInput.h:48
FEnhancedRawInputDataDelegate & GetDataReceivedHandler()
Delegate for raw, unprocessed HID data.
Definition EnhancedRawInput.h:58
virtual void SetAxisBinding(const FString InterfaceName, const int32 AxisUsage, const FName KeyName)
Binds a controller axis to a corresponding key.
Definition EnhancedRawInput.h:36
virtual void SetBindings(const FString InterfaceName)
Applies the key binding settings to the specified controller.
Definition EnhancedRawInput.h:28
virtual void SetButtonBinding(const FString InterfaceName, const int32 ButtonIndex, const FName KeyName)
Binds a controller button to a corresponding key.
Definition EnhancedRawInput.h:42