Explicitly pass control flag to input manager
Replace the "global" control flag in the input_manager by a function parameter to make explicit that the behavior depends whether --no-control has been set.
This commit is contained in:
parent
6baed8a06f
commit
f7efafd846
3 changed files with 11 additions and 16 deletions
|
@ -191,7 +191,8 @@ input_manager_process_text_input(struct input_manager *input_manager,
|
||||||
|
|
||||||
void
|
void
|
||||||
input_manager_process_key(struct input_manager *input_manager,
|
input_manager_process_key(struct input_manager *input_manager,
|
||||||
const SDL_KeyboardEvent *event) {
|
const SDL_KeyboardEvent *event,
|
||||||
|
bool control) {
|
||||||
bool ctrl = event->keysym.mod & (KMOD_LCTRL | KMOD_RCTRL);
|
bool ctrl = event->keysym.mod & (KMOD_LCTRL | KMOD_RCTRL);
|
||||||
bool alt = event->keysym.mod & (KMOD_LALT | KMOD_RALT);
|
bool alt = event->keysym.mod & (KMOD_LALT | KMOD_RALT);
|
||||||
bool meta = event->keysym.mod & (KMOD_LGUI | KMOD_RGUI);
|
bool meta = event->keysym.mod & (KMOD_LGUI | KMOD_RGUI);
|
||||||
|
@ -202,9 +203,6 @@ input_manager_process_key(struct input_manager *input_manager,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// false if the user requested not to interact with the device
|
|
||||||
bool control = input_manager->control;
|
|
||||||
|
|
||||||
// capture all Ctrl events
|
// capture all Ctrl events
|
||||||
if (ctrl | meta) {
|
if (ctrl | meta) {
|
||||||
SDL_Keycode keycode = event->keysym.sym;
|
SDL_Keycode keycode = event->keysym.sym;
|
||||||
|
@ -341,10 +339,8 @@ is_outside_device_screen(struct input_manager *input_manager, int x, int y)
|
||||||
|
|
||||||
void
|
void
|
||||||
input_manager_process_mouse_button(struct input_manager *input_manager,
|
input_manager_process_mouse_button(struct input_manager *input_manager,
|
||||||
const SDL_MouseButtonEvent *event) {
|
const SDL_MouseButtonEvent *event,
|
||||||
// false if the user requested not to interact with the device
|
bool control) {
|
||||||
bool control = input_manager->control;
|
|
||||||
|
|
||||||
if (event->type == SDL_MOUSEBUTTONDOWN) {
|
if (event->type == SDL_MOUSEBUTTONDOWN) {
|
||||||
if (control && event->button == SDL_BUTTON_RIGHT) {
|
if (control && event->button == SDL_BUTTON_RIGHT) {
|
||||||
press_back_or_turn_screen_on(input_manager->controller);
|
press_back_or_turn_screen_on(input_manager->controller);
|
||||||
|
|
|
@ -13,7 +13,6 @@ struct input_manager {
|
||||||
struct controller *controller;
|
struct controller *controller;
|
||||||
struct video_buffer *video_buffer;
|
struct video_buffer *video_buffer;
|
||||||
struct screen *screen;
|
struct screen *screen;
|
||||||
bool control;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -22,7 +21,8 @@ input_manager_process_text_input(struct input_manager *input_manager,
|
||||||
|
|
||||||
void
|
void
|
||||||
input_manager_process_key(struct input_manager *input_manager,
|
input_manager_process_key(struct input_manager *input_manager,
|
||||||
const SDL_KeyboardEvent *event);
|
const SDL_KeyboardEvent *event,
|
||||||
|
bool control);
|
||||||
|
|
||||||
void
|
void
|
||||||
input_manager_process_mouse_motion(struct input_manager *input_manager,
|
input_manager_process_mouse_motion(struct input_manager *input_manager,
|
||||||
|
@ -30,7 +30,8 @@ input_manager_process_mouse_motion(struct input_manager *input_manager,
|
||||||
|
|
||||||
void
|
void
|
||||||
input_manager_process_mouse_button(struct input_manager *input_manager,
|
input_manager_process_mouse_button(struct input_manager *input_manager,
|
||||||
const SDL_MouseButtonEvent *event);
|
const SDL_MouseButtonEvent *event,
|
||||||
|
bool control);
|
||||||
|
|
||||||
void
|
void
|
||||||
input_manager_process_mouse_wheel(struct input_manager *input_manager,
|
input_manager_process_mouse_wheel(struct input_manager *input_manager,
|
||||||
|
|
|
@ -39,7 +39,6 @@ static struct input_manager input_manager = {
|
||||||
.controller = &controller,
|
.controller = &controller,
|
||||||
.video_buffer = &video_buffer,
|
.video_buffer = &video_buffer,
|
||||||
.screen = &screen,
|
.screen = &screen,
|
||||||
.control = true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// init SDL and set appropriate hints
|
// init SDL and set appropriate hints
|
||||||
|
@ -146,7 +145,7 @@ handle_event(SDL_Event *event, bool control) {
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
// some key events do not interact with the device, so process the
|
// some key events do not interact with the device, so process the
|
||||||
// event even if control is disabled
|
// event even if control is disabled
|
||||||
input_manager_process_key(&input_manager, &event->key);
|
input_manager_process_key(&input_manager, &event->key, control);
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
if (!control) {
|
if (!control) {
|
||||||
|
@ -164,7 +163,8 @@ handle_event(SDL_Event *event, bool control) {
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
// some mouse events do not interact with the device, so process
|
// some mouse events do not interact with the device, so process
|
||||||
// the event even if control is disabled
|
// the event even if control is disabled
|
||||||
input_manager_process_mouse_button(&input_manager, &event->button);
|
input_manager_process_mouse_button(&input_manager, &event->button,
|
||||||
|
control);
|
||||||
break;
|
break;
|
||||||
case SDL_DROPFILE: {
|
case SDL_DROPFILE: {
|
||||||
if (!control) {
|
if (!control) {
|
||||||
|
@ -301,8 +301,6 @@ scrcpy(const struct scrcpy_options *options) {
|
||||||
goto finally_destroy_server;
|
goto finally_destroy_server;
|
||||||
}
|
}
|
||||||
|
|
||||||
input_manager.control = control;
|
|
||||||
|
|
||||||
struct decoder *dec = NULL;
|
struct decoder *dec = NULL;
|
||||||
if (display) {
|
if (display) {
|
||||||
if (!video_buffer_init(&video_buffer)) {
|
if (!video_buffer_init(&video_buffer)) {
|
||||||
|
|
Loading…
Reference in a new issue