Skip to content

Commit 465b915

Browse files
committed
wasd aren't handled as textinput anymore
1 parent e9775c7 commit 465b915

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

app/src/convert.c

+4
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ static SDL_bool convert_keycode(SDL_Keycode from, enum android_keycode *to) {
8686
MAP(SDLK_LEFT, AKEYCODE_DPAD_LEFT);
8787
MAP(SDLK_DOWN, AKEYCODE_DPAD_DOWN);
8888
MAP(SDLK_UP, AKEYCODE_DPAD_UP);
89+
MAP(SDLK_w, AKEYCODE_W);
90+
MAP(SDLK_a, AKEYCODE_A);
91+
MAP(SDLK_s, AKEYCODE_S);
92+
MAP(SDLK_d, AKEYCODE_D);
8993
FAIL;
9094
}
9195
}

app/src/inputmanager.c

+9-2
Original file line numberDiff line numberDiff line change
@@ -127,18 +127,25 @@ static void clipboard_paste(struct controller *controller) {
127127
}
128128
}
129129

130-
void input_manager_process_text_input(struct input_manager *input_manager,
130+
SDL_bool input_manager_process_text_input(struct input_manager *input_manager,
131131
const SDL_TextInputEvent *event) {
132132
struct control_event control_event;
133133
control_event.type = CONTROL_EVENT_TYPE_TEXT;
134134
control_event.text_event.text = SDL_strdup(event->text);
135+
if (strcmp(control_event.text_event.text, "w") == 0 ||
136+
strcmp(control_event.text_event.text, "a") == 0 ||
137+
strcmp(control_event.text_event.text, "s") == 0 ||
138+
strcmp(control_event.text_event.text, "d") == 0) {
139+
return SDL_FALSE;
140+
}
135141
if (!control_event.text_event.text) {
136142
LOGW("Cannot strdup input text");
137-
return;
143+
return SDL_TRUE;
138144
}
139145
if (!controller_push_event(input_manager->controller, &control_event)) {
140146
LOGW("Cannot send text event");
141147
}
148+
return SDL_TRUE;
142149
}
143150

144151
void input_manager_process_key(struct input_manager *input_manager,

app/src/inputmanager.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ struct input_manager {
1313
struct screen *screen;
1414
};
1515

16-
void input_manager_process_text_input(struct input_manager *input_manager,
16+
SDL_bool input_manager_process_text_input(struct input_manager *input_manager,
1717
const SDL_TextInputEvent *event);
1818
void input_manager_process_key(struct input_manager *input_manager,
1919
const SDL_KeyboardEvent *event);

app/src/scrcpy.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,9 @@ static SDL_bool event_loop(void) {
8888
}
8989
break;
9090
case SDL_TEXTINPUT:
91-
input_manager_process_text_input(&input_manager, &event.text);
92-
break;
91+
if (input_manager_process_text_input(&input_manager, &event.text)) {
92+
break;
93+
}
9394
case SDL_KEYDOWN:
9495
case SDL_KEYUP:
9596
input_manager_process_key(&input_manager, &event.key);

0 commit comments

Comments
 (0)