mirror of
https://github.com/Genymobile/scrcpy
synced 2025-08-31 06:15:25 +00:00
Handle alpha and space chars as raw events
To handle special chars, text is handled as text input instead of key events. However, this breaks the separation of DOWN and UP key events. As a compromise, send letters and space as key events, to preserve original DOWN/UP events, but send other text input events as text, to be able to send "special" characters. Fixes <https://github.com/Genymobile/scrcpy/issues/87>. Suggested-by: pete1414 Suggested-by: King-Slide <kingslide@gmail.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "input_manager.h"
|
||||
|
||||
#include <SDL2/SDL_assert.h>
|
||||
#include "convert.h"
|
||||
#include "lock_util.h"
|
||||
#include "log.h"
|
||||
@@ -129,6 +130,12 @@ static void clipboard_paste(struct controller *controller) {
|
||||
|
||||
void input_manager_process_text_input(struct input_manager *input_manager,
|
||||
const SDL_TextInputEvent *event) {
|
||||
char c = event->text[0];
|
||||
if (isalpha(c) || c == ' ') {
|
||||
SDL_assert(event->text[1] == '\0');
|
||||
// letters and space are handled as raw key event
|
||||
return;
|
||||
}
|
||||
struct control_event control_event;
|
||||
control_event.type = CONTROL_EVENT_TYPE_TEXT;
|
||||
control_event.text_event.text = SDL_strdup(event->text);
|
||||
|
Reference in New Issue
Block a user