Add --no-game-controller option

This commit is contained in:
Luiz Henrique Laurini 2021-04-01 15:17:13 -03:00
commit 6feb8adfb0
4 changed files with 15 additions and 3 deletions

View file

@ -112,6 +112,9 @@ scrcpy_print_usage(const char *arg0) {
" Do not display device (only when screen recording is\n" " Do not display device (only when screen recording is\n"
" enabled).\n" " enabled).\n"
"\n" "\n"
" --no-game-controller\n"
" Disable game controller support.\n"
"\n"
" --no-key-repeat\n" " --no-key-repeat\n"
" Do not forward repeated key events when a key is held down.\n" " Do not forward repeated key events when a key is held down.\n"
"\n" "\n"
@ -719,6 +722,7 @@ guess_record_format(const char *filename) {
#define OPT_V4L2_SINK 1027 #define OPT_V4L2_SINK 1027
#define OPT_DISPLAY_BUFFER 1028 #define OPT_DISPLAY_BUFFER 1028
#define OPT_V4L2_BUFFER 1029 #define OPT_V4L2_BUFFER 1029
#define OPT_NO_GAME_CONTROLLER 1030
bool bool
scrcpy_parse_args(struct scrcpy_cli_args *args, int argc, char *argv[]) { scrcpy_parse_args(struct scrcpy_cli_args *args, int argc, char *argv[]) {
@ -745,6 +749,7 @@ scrcpy_parse_args(struct scrcpy_cli_args *args, int argc, char *argv[]) {
{"max-size", required_argument, NULL, 'm'}, {"max-size", required_argument, NULL, 'm'},
{"no-control", no_argument, NULL, 'n'}, {"no-control", no_argument, NULL, 'n'},
{"no-display", no_argument, NULL, 'N'}, {"no-display", no_argument, NULL, 'N'},
{"no-game-controller", no_argument, NULL, OPT_NO_GAME_CONTROLLER},
{"no-key-repeat", no_argument, NULL, OPT_NO_KEY_REPEAT}, {"no-key-repeat", no_argument, NULL, OPT_NO_KEY_REPEAT},
{"no-mipmaps", no_argument, NULL, OPT_NO_MIPMAPS}, {"no-mipmaps", no_argument, NULL, OPT_NO_MIPMAPS},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
@ -920,6 +925,9 @@ scrcpy_parse_args(struct scrcpy_cli_args *args, int argc, char *argv[]) {
case OPT_NO_MIPMAPS: case OPT_NO_MIPMAPS:
opts->mipmaps = false; opts->mipmaps = false;
break; break;
case OPT_NO_GAME_CONTROLLER:
opts->forward_game_controllers = false;
break;
case OPT_NO_KEY_REPEAT: case OPT_NO_KEY_REPEAT:
opts->forward_key_repeat = false; opts->forward_key_repeat = false;
break; break;

View file

@ -61,6 +61,7 @@ input_manager_init(struct input_manager *im, struct controller *controller,
im->repeat = 0; im->repeat = 0;
im->control = options->control; im->control = options->control;
im->forward_game_controllers = options->forward_game_controllers;
im->forward_key_repeat = options->forward_key_repeat; im->forward_key_repeat = options->forward_key_repeat;
im->prefer_text = options->prefer_text; im->prefer_text = options->prefer_text;
im->forward_all_clicks = options->forward_all_clicks; im->forward_all_clicks = options->forward_all_clicks;
@ -953,14 +954,14 @@ input_manager_handle_event(struct input_manager *im, SDL_Event *event) {
input_manager_process_touch(im, &event->tfinger); input_manager_process_touch(im, &event->tfinger);
return true; return true;
case SDL_CONTROLLERAXISMOTION: case SDL_CONTROLLERAXISMOTION:
if (!im->control) { if (!im->control || !im->forward_game_controllers) {
break; break;
} }
input_manager_process_controller_axis(im, &event->caxis); input_manager_process_controller_axis(im, &event->caxis);
break; break;
case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONDOWN:
case SDL_CONTROLLERBUTTONUP: case SDL_CONTROLLERBUTTONUP:
if (!im->control) { if (!im->control || !im->forward_game_controllers) {
break; break;
} }
input_manager_process_controller_button(im, &event->cbutton); input_manager_process_controller_button(im, &event->cbutton);
@ -968,7 +969,7 @@ input_manager_handle_event(struct input_manager *im, SDL_Event *event) {
case SDL_CONTROLLERDEVICEADDED: case SDL_CONTROLLERDEVICEADDED:
// case SDL_CONTROLLERDEVICEREMAPPED: // case SDL_CONTROLLERDEVICEREMAPPED:
case SDL_CONTROLLERDEVICEREMOVED: case SDL_CONTROLLERDEVICEREMOVED:
if (!im->control) { if (!im->control || !im->forward_game_controllers) {
break; break;
} }
input_manager_process_controller_device(im, &event->cdevice); input_manager_process_controller_device(im, &event->cdevice);

View file

@ -24,6 +24,7 @@ struct input_manager {
unsigned repeat; unsigned repeat;
bool control; bool control;
bool forward_game_controllers;
bool forward_key_repeat; bool forward_key_repeat;
bool prefer_text; bool prefer_text;
bool forward_all_clicks; bool forward_all_clicks;

View file

@ -94,6 +94,7 @@ struct scrcpy_options {
bool stay_awake; bool stay_awake;
bool force_adb_forward; bool force_adb_forward;
bool disable_screensaver; bool disable_screensaver;
bool forward_game_controllers;
bool forward_key_repeat; bool forward_key_repeat;
bool forward_all_clicks; bool forward_all_clicks;
bool legacy_paste; bool legacy_paste;
@ -144,6 +145,7 @@ struct scrcpy_options {
.stay_awake = false, \ .stay_awake = false, \
.force_adb_forward = false, \ .force_adb_forward = false, \
.disable_screensaver = false, \ .disable_screensaver = false, \
.forward_game_controllers = true, \
.forward_key_repeat = true, \ .forward_key_repeat = true, \
.forward_all_clicks = false, \ .forward_all_clicks = false, \
.legacy_paste = false, \ .legacy_paste = false, \