Play-/Source/ui_js/InputProviderEmscripten.cpp

114 lines
2.5 KiB
C++
Raw Permalink Normal View History

2021-12-28 21:41:24 -05:00
#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,
2022-01-28 22:26:56 -05:00
2021-12-28 21:41:24 -05:00
INPUT_KEY_A,
2022-01-28 22:26:56 -05:00
INPUT_KEY_F,
INPUT_KEY_G,
INPUT_KEY_H,
INPUT_KEY_I,
INPUT_KEY_J,
INPUT_KEY_K,
INPUT_KEY_L,
2021-12-28 21:41:24 -05:00
INPUT_KEY_S,
2022-01-28 22:26:56 -05:00
INPUT_KEY_T,
2021-12-28 21:41:24 -05:00
INPUT_KEY_X,
2022-01-28 22:26:56 -05:00
INPUT_KEY_Z,
INPUT_KEY_0,
INPUT_KEY_1,
INPUT_KEY_2,
INPUT_KEY_3,
INPUT_KEY_8,
INPUT_KEY_9,
2021-12-28 21:41:24 -05:00
};
uint32 CInputProviderEmscripten::GetId() const
{
return PROVIDER_ID;
}
std::string CInputProviderEmscripten::GetTargetDescription(const BINDINGTARGET& target) const
{
2021-12-30 16:51:50 -05:00
return std::string();
2021-12-28 21:41:24 -05:00
}
BINDINGTARGET CInputProviderEmscripten::MakeBindingTarget(const EM_UTF8* code)
{
uint32 keyCode = 0;
2022-01-29 16:09:05 -05:00
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];
2021-12-28 21:41:24 -05:00
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);
}