Skip to content

Commit 26a2179

Browse files
committed
extended raw key event handling to numbers
1 parent 368e7a3 commit 26a2179

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

app/src/convert.c

+20
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,26 @@ static SDL_bool convert_keycode(SDL_Keycode from, enum android_keycode *to, Uint
9292
}
9393
// if ALT and META are not pressed, also handle letters and space
9494
switch (from) {
95+
MAP(SDLK_1, AKEYCODE_1);
96+
MAP(SDLK_2, AKEYCODE_2);
97+
MAP(SDLK_3, AKEYCODE_3);
98+
MAP(SDLK_4, AKEYCODE_4);
99+
MAP(SDLK_5, AKEYCODE_5);
100+
MAP(SDLK_6, AKEYCODE_6);
101+
MAP(SDLK_7, AKEYCODE_7);
102+
MAP(SDLK_8, AKEYCODE_8);
103+
MAP(SDLK_9, AKEYCODE_9);
104+
MAP(SDLK_0, AKEYCODE_0);
105+
MAP(SDLK_KP_1, AKEYCODE_NUMPAD_1);
106+
MAP(SDLK_KP_2, AKEYCODE_NUMPAD_2);
107+
MAP(SDLK_KP_3, AKEYCODE_NUMPAD_3);
108+
MAP(SDLK_KP_4, AKEYCODE_NUMPAD_4);
109+
MAP(SDLK_KP_5, AKEYCODE_NUMPAD_5);
110+
MAP(SDLK_KP_6, AKEYCODE_NUMPAD_6);
111+
MAP(SDLK_KP_7, AKEYCODE_NUMPAD_7);
112+
MAP(SDLK_KP_8, AKEYCODE_NUMPAD_8);
113+
MAP(SDLK_KP_9, AKEYCODE_NUMPAD_9);
114+
MAP(SDLK_KP_0, AKEYCODE_0);
95115
MAP(SDLK_a, AKEYCODE_A);
96116
MAP(SDLK_b, AKEYCODE_B);
97117
MAP(SDLK_c, AKEYCODE_C);

app/src/input_manager.c

+19-2
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ static void clipboard_paste(struct controller *controller) {
131131
void input_manager_process_text_input(struct input_manager *input_manager,
132132
const SDL_TextInputEvent *event) {
133133
char c = event->text[0];
134-
if (isalpha(c) || c == ' ') {
134+
if (isalnum(c) || c == ' ') {
135135
SDL_assert(event->text[1] == '\0');
136-
// letters and space are handled as raw key event
136+
// letters, numbers and space are handled as raw key event
137137
return;
138138
}
139139
struct control_event control_event;
@@ -228,6 +228,23 @@ void input_manager_process_key(struct input_manager *input_manager,
228228
return;
229229
}
230230

231+
if (event->keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) {
232+
// shift + numbers shouldn't be handled like raw_key_events in hybrid mode
233+
switch (event->keysym.sym) {
234+
case SDLK_1:
235+
case SDLK_2:
236+
case SDLK_3:
237+
case SDLK_4:
238+
case SDLK_5:
239+
case SDLK_6:
240+
case SDLK_7:
241+
case SDLK_8:
242+
case SDLK_9:
243+
case SDLK_0:
244+
return;
245+
}
246+
}
247+
231248
struct control_event control_event;
232249
if (input_key_from_sdl_to_android(event, &control_event)) {
233250
if (!controller_push_event(input_manager->controller, &control_event)) {

0 commit comments

Comments
 (0)