mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2025-08-18 09:26:12 +00:00
Add keyboard modifiers to SDL
This commit is contained in:
parent
0d9d501280
commit
881acff6b3
@ -37,6 +37,8 @@ typedef struct _GAMEPAD_STATE {
|
|||||||
|
|
||||||
static GAMEPAD_STATE gamepads[4];
|
static GAMEPAD_STATE gamepads[4];
|
||||||
|
|
||||||
|
static int keyboard_modifiers;
|
||||||
|
|
||||||
void sdlinput_init() {
|
void sdlinput_init() {
|
||||||
memset(gamepads, 0, sizeof(gamepads));
|
memset(gamepads, 0, sizeof(gamepads));
|
||||||
|
|
||||||
@ -103,7 +105,30 @@ void sdlinput_handle_event(SDL_Event* event) {
|
|||||||
if (button >= 0x61)
|
if (button >= 0x61)
|
||||||
button -= 0x20;
|
button -= 0x20;
|
||||||
|
|
||||||
LiSendKeyboardEvent(0x80 << 8 | button, event->type==SDL_KEYDOWN?KEY_ACTION_DOWN:KEY_ACTION_UP, 0);
|
int modifier = 0;
|
||||||
|
switch (event->key.keysym.sym) {
|
||||||
|
case SDLK_RSHIFT:
|
||||||
|
case SDLK_LSHIFT:
|
||||||
|
modifier = MODIFIER_SHIFT;
|
||||||
|
break;
|
||||||
|
case SDLK_RALT:
|
||||||
|
case SDLK_LALT:
|
||||||
|
modifier = MODIFIER_ALT;
|
||||||
|
break;
|
||||||
|
case SDLK_RCTRL:
|
||||||
|
case SDLK_LCTRL:
|
||||||
|
modifier = MODIFIER_CTRL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modifier != 0) {
|
||||||
|
if (event->type==SDL_KEYDOWN)
|
||||||
|
keyboard_modifiers |= modifier;
|
||||||
|
else
|
||||||
|
keyboard_modifiers &= ~modifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
LiSendKeyboardEvent(0x80 << 8 | button, event->type==SDL_KEYDOWN?KEY_ACTION_DOWN:KEY_ACTION_UP, keyboard_modifiers);
|
||||||
break;
|
break;
|
||||||
case SDL_CONTROLLERAXISMOTION:
|
case SDL_CONTROLLERAXISMOTION:
|
||||||
gamepad = get_gamepad(event->caxis.which);
|
gamepad = get_gamepad(event->caxis.which);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user