Implement keypad support

This commit is contained in:
Cacodemon345
2021-08-23 01:17:56 +06:00
parent d9fdc5fcc1
commit 1678783db5

View File

@@ -130,9 +130,16 @@ static const uint16_t sdl_to_xt[0x200] =
[SDL_SCANCODE_KP_ENTER] = 0x11c,
[SDL_SCANCODE_RCTRL] = 0x11d,
[SDL_SCANCODE_KP_DIVIDE] = 0x135,
[SDL_SCANCODE_RALT] = 0x138
[SDL_SCANCODE_RALT] = 0x138,
[SDL_SCANCODE_KP_9] = 0x49,
[SDL_SCANCODE_KP_8] = 0x48,
[SDL_SCANCODE_KP_7] = 0x47,
[SDL_SCANCODE_KP_6] = 0x4D,
[SDL_SCANCODE_KP_4] = 0x4B,
[SDL_SCANCODE_KP_3] = 0x51,
[SDL_SCANCODE_KP_2] = 0x50,
[SDL_SCANCODE_KP_1] = 0x4F
};
// TODO: Keypad.
typedef struct sdl_blit_params
{
@@ -524,6 +531,7 @@ wchar_t* ui_sb_bugui(wchar_t *str)
return str;
}
extern void sdl_blit(int x, int y, int y1, int y2, int w, int h);
int numlock = 0;
void ui_window_title(wchar_t* str) {}
void ui_sb_set_ready(int ready) {}
@@ -573,6 +581,19 @@ int main(int argc, char** argv)
uint16_t xtkey = 0;
switch(event.key.keysym.scancode)
{
case SDL_SCANCODE_KP_1 ... SDL_SCANCODE_KP_0:
{
if (numlock)
{
xtkey = (event.key.keysym.scancode - SDL_SCANCODE_KP_1) + 2;
}
else xtkey = sdl_to_xt[event.key.keysym.scancode];
break;
}
case SDL_SCANCODE_NUMLOCKCLEAR:
{
if (event.type == SDL_KEYDOWN) numlock ^= 1;
}
default:
xtkey = sdl_to_xt[event.key.keysym.scancode];
break;