Handle im-related events from input_manager.c
This commit is contained in:
parent
76a3d9805b
commit
24b637b972
3 changed files with 57 additions and 64 deletions
|
@ -286,7 +286,7 @@ rotate_client_right(struct screen *screen) {
|
||||||
screen_set_rotation(screen, new_rotation);
|
screen_set_rotation(screen, new_rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
input_manager_process_text_input(struct input_manager *im,
|
input_manager_process_text_input(struct input_manager *im,
|
||||||
const SDL_TextInputEvent *event) {
|
const SDL_TextInputEvent *event) {
|
||||||
if (is_shortcut_mod(im, SDL_GetModState())) {
|
if (is_shortcut_mod(im, SDL_GetModState())) {
|
||||||
|
@ -366,7 +366,7 @@ convert_input_key(const SDL_KeyboardEvent *from, struct control_msg *to,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
input_manager_process_key(struct input_manager *im,
|
input_manager_process_key(struct input_manager *im,
|
||||||
const SDL_KeyboardEvent *event) {
|
const SDL_KeyboardEvent *event) {
|
||||||
// control: indicates the state of the command-line option --no-control
|
// control: indicates the state of the command-line option --no-control
|
||||||
|
@ -551,7 +551,7 @@ convert_mouse_motion(const SDL_MouseMotionEvent *from, struct screen *screen,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
input_manager_process_mouse_motion(struct input_manager *im,
|
input_manager_process_mouse_motion(struct input_manager *im,
|
||||||
const SDL_MouseMotionEvent *event) {
|
const SDL_MouseMotionEvent *event) {
|
||||||
if (!event->state) {
|
if (!event->state) {
|
||||||
|
@ -605,7 +605,7 @@ convert_touch(const SDL_TouchFingerEvent *from, struct screen *screen,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
input_manager_process_touch(struct input_manager *im,
|
input_manager_process_touch(struct input_manager *im,
|
||||||
const SDL_TouchFingerEvent *event) {
|
const SDL_TouchFingerEvent *event) {
|
||||||
struct control_msg msg;
|
struct control_msg msg;
|
||||||
|
@ -637,7 +637,7 @@ convert_mouse_button(const SDL_MouseButtonEvent *from, struct screen *screen,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
input_manager_process_mouse_button(struct input_manager *im,
|
input_manager_process_mouse_button(struct input_manager *im,
|
||||||
const SDL_MouseButtonEvent *event) {
|
const SDL_MouseButtonEvent *event) {
|
||||||
bool control = im->control;
|
bool control = im->control;
|
||||||
|
@ -736,7 +736,7 @@ convert_mouse_wheel(const SDL_MouseWheelEvent *from, struct screen *screen,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
input_manager_process_mouse_wheel(struct input_manager *im,
|
input_manager_process_mouse_wheel(struct input_manager *im,
|
||||||
const SDL_MouseWheelEvent *event) {
|
const SDL_MouseWheelEvent *event) {
|
||||||
struct control_msg msg;
|
struct control_msg msg;
|
||||||
|
@ -746,3 +746,46 @@ input_manager_process_mouse_wheel(struct input_manager *im,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
input_manager_handle_event(struct input_manager *im, SDL_Event *event) {
|
||||||
|
switch (event->type) {
|
||||||
|
case SDL_TEXTINPUT:
|
||||||
|
if (!im->control) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
input_manager_process_text_input(im, &event->text);
|
||||||
|
return true;
|
||||||
|
case SDL_KEYDOWN:
|
||||||
|
case SDL_KEYUP:
|
||||||
|
// some key events do not interact with the device, so process the
|
||||||
|
// event even if control is disabled
|
||||||
|
input_manager_process_key(im, &event->key);
|
||||||
|
return true;
|
||||||
|
case SDL_MOUSEMOTION:
|
||||||
|
if (!im->control) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
input_manager_process_mouse_motion(im, &event->motion);
|
||||||
|
return true;
|
||||||
|
case SDL_MOUSEWHEEL:
|
||||||
|
if (!im->control) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
input_manager_process_mouse_wheel(im, &event->wheel);
|
||||||
|
return true;
|
||||||
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
// some mouse events do not interact with the device, so process
|
||||||
|
// the event even if control is disabled
|
||||||
|
input_manager_process_mouse_button(im, &event->button);
|
||||||
|
return true;
|
||||||
|
case SDL_FINGERMOTION:
|
||||||
|
case SDL_FINGERDOWN:
|
||||||
|
case SDL_FINGERUP:
|
||||||
|
input_manager_process_touch(im, &event->tfinger);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -40,28 +40,7 @@ void
|
||||||
input_manager_init(struct input_manager *im,
|
input_manager_init(struct input_manager *im,
|
||||||
const struct scrcpy_options *options);
|
const struct scrcpy_options *options);
|
||||||
|
|
||||||
void
|
bool
|
||||||
input_manager_process_text_input(struct input_manager *im,
|
input_manager_handle_event(struct input_manager *im, SDL_Event *event);
|
||||||
const SDL_TextInputEvent *event);
|
|
||||||
|
|
||||||
void
|
|
||||||
input_manager_process_key(struct input_manager *im,
|
|
||||||
const SDL_KeyboardEvent *event);
|
|
||||||
|
|
||||||
void
|
|
||||||
input_manager_process_mouse_motion(struct input_manager *im,
|
|
||||||
const SDL_MouseMotionEvent *event);
|
|
||||||
|
|
||||||
void
|
|
||||||
input_manager_process_touch(struct input_manager *im,
|
|
||||||
const SDL_TouchFingerEvent *event);
|
|
||||||
|
|
||||||
void
|
|
||||||
input_manager_process_mouse_button(struct input_manager *im,
|
|
||||||
const SDL_MouseButtonEvent *event);
|
|
||||||
|
|
||||||
void
|
|
||||||
input_manager_process_mouse_wheel(struct input_manager *im,
|
|
||||||
const SDL_MouseWheelEvent *event);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -173,41 +173,6 @@ handle_event(SDL_Event *event, const struct scrcpy_options *options) {
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
LOGD("User requested to quit");
|
LOGD("User requested to quit");
|
||||||
return EVENT_RESULT_STOPPED_BY_USER;
|
return EVENT_RESULT_STOPPED_BY_USER;
|
||||||
case SDL_TEXTINPUT:
|
|
||||||
if (!options->control) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
input_manager_process_text_input(&input_manager, &event->text);
|
|
||||||
break;
|
|
||||||
case SDL_KEYDOWN:
|
|
||||||
case SDL_KEYUP:
|
|
||||||
// some key events do not interact with the device, so process the
|
|
||||||
// event even if control is disabled
|
|
||||||
input_manager_process_key(&input_manager, &event->key);
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEMOTION:
|
|
||||||
if (!options->control) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
input_manager_process_mouse_motion(&input_manager, &event->motion);
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEWHEEL:
|
|
||||||
if (!options->control) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
input_manager_process_mouse_wheel(&input_manager, &event->wheel);
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
|
||||||
// some mouse events do not interact with the device, so process
|
|
||||||
// the event even if control is disabled
|
|
||||||
input_manager_process_mouse_button(&input_manager, &event->button);
|
|
||||||
break;
|
|
||||||
case SDL_FINGERMOTION:
|
|
||||||
case SDL_FINGERDOWN:
|
|
||||||
case SDL_FINGERUP:
|
|
||||||
input_manager_process_touch(&input_manager, &event->tfinger);
|
|
||||||
break;
|
|
||||||
case SDL_DROPFILE: {
|
case SDL_DROPFILE: {
|
||||||
if (!options->control) {
|
if (!options->control) {
|
||||||
break;
|
break;
|
||||||
|
@ -231,8 +196,14 @@ handle_event(SDL_Event *event, const struct scrcpy_options *options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool consumed = screen_handle_event(&screen, event);
|
bool consumed = screen_handle_event(&screen, event);
|
||||||
|
if (consumed) {
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
consumed = input_manager_handle_event(&input_manager, event);
|
||||||
(void) consumed;
|
(void) consumed;
|
||||||
|
|
||||||
|
end:
|
||||||
return EVENT_RESULT_CONTINUE;
|
return EVENT_RESULT_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue