mirror of
https://github.com/jpd002/Play-.git
synced 2025-04-28 13:47:57 +03:00
113 lines
2.5 KiB
C++
113 lines
2.5 KiB
C++
#include "InputProviderEmscripten.h"
|
|
#include "string_format.h"
|
|
|
|
#define PROVIDER_ID 'EmSc'
|
|
|
|
enum
|
|
{
|
|
INPUT_ARROW_UP = 0xFF80,
|
|
INPUT_ARROW_DOWN,
|
|
INPUT_ARROW_LEFT,
|
|
INPUT_ARROW_RIGHT,
|
|
INPUT_ENTER,
|
|
INPUT_BACKSPACE,
|
|
INPUT_SHIFT_RIGHT,
|
|
|
|
INPUT_KEY_A,
|
|
INPUT_KEY_F,
|
|
INPUT_KEY_G,
|
|
INPUT_KEY_H,
|
|
INPUT_KEY_I,
|
|
INPUT_KEY_J,
|
|
INPUT_KEY_K,
|
|
INPUT_KEY_L,
|
|
INPUT_KEY_S,
|
|
INPUT_KEY_T,
|
|
INPUT_KEY_X,
|
|
INPUT_KEY_Z,
|
|
|
|
INPUT_KEY_0,
|
|
INPUT_KEY_1,
|
|
INPUT_KEY_2,
|
|
INPUT_KEY_3,
|
|
INPUT_KEY_8,
|
|
INPUT_KEY_9,
|
|
};
|
|
|
|
uint32 CInputProviderEmscripten::GetId() const
|
|
{
|
|
return PROVIDER_ID;
|
|
}
|
|
|
|
std::string CInputProviderEmscripten::GetTargetDescription(const BINDINGTARGET& target) const
|
|
{
|
|
return std::string();
|
|
}
|
|
|
|
BINDINGTARGET CInputProviderEmscripten::MakeBindingTarget(const EM_UTF8* code)
|
|
{
|
|
uint32 keyCode = 0;
|
|
if(!strcmp(code, "ArrowUp"))
|
|
keyCode = INPUT_ARROW_UP;
|
|
else if(!strcmp(code, "ArrowDown"))
|
|
keyCode = INPUT_ARROW_DOWN;
|
|
else if(!strcmp(code, "ArrowLeft"))
|
|
keyCode = INPUT_ARROW_LEFT;
|
|
else if(!strcmp(code, "ArrowRight"))
|
|
keyCode = INPUT_ARROW_RIGHT;
|
|
else if(!strcmp(code, "Enter"))
|
|
keyCode = INPUT_ENTER;
|
|
else if(!strcmp(code, "ShiftRight"))
|
|
keyCode = INPUT_SHIFT_RIGHT;
|
|
else if(!strcmp(code, "Backspace"))
|
|
keyCode = INPUT_BACKSPACE;
|
|
else if(!strcmp(code, "KeyA"))
|
|
keyCode = INPUT_KEY_A;
|
|
else if(!strcmp(code, "KeyF"))
|
|
keyCode = INPUT_KEY_F;
|
|
else if(!strcmp(code, "KeyG"))
|
|
keyCode = INPUT_KEY_G;
|
|
else if(!strcmp(code, "KeyH"))
|
|
keyCode = INPUT_KEY_H;
|
|
else if(!strcmp(code, "KeyI"))
|
|
keyCode = INPUT_KEY_I;
|
|
else if(!strcmp(code, "KeyJ"))
|
|
keyCode = INPUT_KEY_J;
|
|
else if(!strcmp(code, "KeyK"))
|
|
keyCode = INPUT_KEY_K;
|
|
else if(!strcmp(code, "KeyL"))
|
|
keyCode = INPUT_KEY_L;
|
|
else if(!strcmp(code, "KeyS"))
|
|
keyCode = INPUT_KEY_S;
|
|
else if(!strcmp(code, "KeyT"))
|
|
keyCode = INPUT_KEY_T;
|
|
else if(!strcmp(code, "KeyX"))
|
|
keyCode = INPUT_KEY_X;
|
|
else if(!strcmp(code, "KeyZ"))
|
|
keyCode = INPUT_KEY_Z;
|
|
else if(!strcmp(code, "Key0"))
|
|
keyCode = INPUT_KEY_0;
|
|
else if(!strcmp(code, "Key1"))
|
|
keyCode = INPUT_KEY_1;
|
|
else if(!strcmp(code, "Key2"))
|
|
keyCode = INPUT_KEY_2;
|
|
else if(!strcmp(code, "Key3"))
|
|
keyCode = INPUT_KEY_3;
|
|
else if(!strcmp(code, "Key8"))
|
|
keyCode = INPUT_KEY_8;
|
|
else if(!strcmp(code, "Key9"))
|
|
keyCode = INPUT_KEY_9;
|
|
else
|
|
keyCode = code[0];
|
|
return BINDINGTARGET(PROVIDER_ID, DeviceIdType{{0}}, keyCode, BINDINGTARGET::KEYTYPE::BUTTON);
|
|
}
|
|
|
|
void CInputProviderEmscripten::OnKeyDown(const EM_UTF8* code)
|
|
{
|
|
OnInput(MakeBindingTarget(code), 1);
|
|
}
|
|
|
|
void CInputProviderEmscripten::OnKeyUp(const EM_UTF8* code)
|
|
{
|
|
OnInput(MakeBindingTarget(code), 0);
|
|
}
|