Mesen-SX/InteropDLL/InputApiWrapper.cpp

83 lines
1.5 KiB
C++
Raw Normal View History

#include "stdafx.h"
2019-03-15 14:16:27 -04:00
#include "../Core/Console.h"
#include "../Core/KeyManager.h"
#include "../Core/ShortcutKeyHandler.h"
extern unique_ptr<IKeyManager> _keyManager;
extern unique_ptr<ShortcutKeyHandler> _shortcutKeyHandler;
2019-03-15 14:16:27 -04:00
extern shared_ptr<Console> _console;
static string _returnString;
2020-12-19 23:30:40 +03:00
extern "C" {
DllExport void __stdcall SetMousePosition(double x, double y)
{
2020-12-19 23:30:40 +03:00
KeyManager::SetMousePosition(_console, x, y);
}
2020-12-19 23:30:40 +03:00
DllExport void __stdcall SetMouseMovement(int16_t x, int16_t y)
{
KeyManager::SetMouseMovement(x, y);
}
2020-12-19 23:30:40 +03:00
DllExport void __stdcall UpdateInputDevices()
{
if (_keyManager)
{
_keyManager->UpdateDevices();
}
2020-12-19 23:30:40 +03:00
}
2020-12-19 23:30:40 +03:00
DllExport void __stdcall GetPressedKeys(uint32_t* keyBuffer)
{
vector<uint32_t> pressedKeys = KeyManager::GetPressedKeys();
for (size_t i = 0; i < pressedKeys.size() && i < 3; i++)
{
2020-12-19 23:30:40 +03:00
keyBuffer[i] = pressedKeys[i];
}
2020-12-19 23:30:40 +03:00
}
2020-12-19 23:30:40 +03:00
DllExport void __stdcall DisableAllKeys(bool disabled)
{
if (_keyManager)
{
2020-12-19 23:30:40 +03:00
_keyManager->SetDisabled(disabled);
}
2020-12-19 23:30:40 +03:00
}
2020-12-19 23:30:40 +03:00
DllExport void __stdcall SetKeyState(int32_t scanCode, bool state)
{
if (_keyManager)
{
2020-12-19 23:30:40 +03:00
_keyManager->SetKeyState(scanCode, state);
_shortcutKeyHandler->ProcessKeys();
}
2020-12-19 23:30:40 +03:00
}
DllExport void __stdcall ResetKeyState()
{
if (_keyManager)
{
2020-12-19 23:30:40 +03:00
_keyManager->ResetKeyState();
}
2020-12-19 23:30:40 +03:00
}
2020-12-19 23:30:40 +03:00
DllExport const char* __stdcall GetKeyName(uint32_t keyCode)
{
_returnString = KeyManager::GetKeyName(keyCode);
return _returnString.c_str();
}
DllExport uint32_t __stdcall GetKeyCode(char* keyName)
{
if (keyName)
{
2020-12-19 23:30:40 +03:00
return KeyManager::GetKeyCode(keyName);
}
2020-12-19 23:30:40 +03:00
else
{
2020-12-19 23:30:40 +03:00
return 0;
}
2020-12-19 23:30:40 +03:00
}
}