[TLAC]: add DIVALLER support

This commit is contained in:
Tinko Liu
2022-06-25 17:17:00 +08:00
parent 5652879f74
commit 49c69de847
6 changed files with 414 additions and 0 deletions
@@ -0,0 +1,52 @@
#pragma once
#include "../IInputDevice.h"
#include "DivallerState.h"
#include "DivallerButton.h"
#include <SetupAPI.h>
#include <initguid.h>
#include <usbiodef.h>
#include <winusb.h>
namespace TLAC::Input
{
class Divaller : public IInputDevice
{
public:
Divaller();
~Divaller();
static bool TryInitializeInstance();
bool Initialize();
bool PollInput() override;
bool SetLED();
bool IsDown(DivallerButton button);
bool IsUp(DivallerButton button);
bool IsTapped(DivallerButton button);
bool IsReleased(DivallerButton button);
bool WasDown(DivallerButton button);
bool WasUp(DivallerButton button);
uint32_t GetSlider();
static inline bool InstanceInitialized() { return instance != nullptr; };
static inline Divaller *GetInstance() { return instance; };
static inline void DeleteInstance()
{
delete instance;
instance = nullptr;
};
private:
static Divaller *instance;
DivallerState lastState;
DivallerState currentState;
WINUSB_INTERFACE_HANDLE hInterfaceHandle;
HANDLE hDeviceHandle;
UCHAR outputBuffer[100];
int *buttonLed = reinterpret_cast<int*>(0x14119b950);
uint64_t *partionLed = reinterpret_cast<uint64_t*>(*(uint64_t*)0x140eda330 + 0xc9);
uint64_t *sliderLedInit = reinterpret_cast<uint64_t*>((uint64_t*)0x14cc5dea8);
UCHAR *sliderLedData = nullptr;
};
}