From ba28d817fbb38725cd5bcc5fe3c3c4d45ddfeace Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Sat, 1 Jan 2022 17:28:27 +0100 Subject: [PATCH] Fail on unsupported HID option If the feature is not supported on the platform, fail during command line parsing instead of using a fallback. --- app/src/cli.c | 6 ++++++ app/src/scrcpy.c | 11 ++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/cli.c b/app/src/cli.c index f1f50049..b420996c 100644 --- a/app/src/cli.c +++ b/app/src/cli.c @@ -1300,7 +1300,13 @@ parse_args_with_getopt(struct scrcpy_cli_args *args, int argc, char *argv[], args->help = true; break; case 'K': +#ifdef HAVE_AOA_HID opts->keyboard_input_mode = SC_KEYBOARD_INPUT_MODE_HID; +#else + LOGE("HID over AOA (-K/--hid-keyboard) is not supported on " + "this platform. It is only available on Linux."); + return false; +#endif break; case OPT_MAX_FPS: if (!parse_max_fps(optarg, &opts->max_fps)) { diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 9c2bd03b..3a271ee5 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -534,8 +534,8 @@ scrcpy(struct scrcpy_options *options) { struct sc_mouse_processor *mp = NULL; if (options->control) { - if (options->keyboard_input_mode == SC_KEYBOARD_INPUT_MODE_HID) { #ifdef HAVE_AOA_HID + if (options->keyboard_input_mode == SC_KEYBOARD_INPUT_MODE_HID) { bool aoa_hid_ok = false; bool ok = sc_aoa_init(&s->aoa, serial, acksync); @@ -566,13 +566,10 @@ aoa_hid_end: "(-K/--hid-keyboard ignored)"); options->keyboard_input_mode = SC_KEYBOARD_INPUT_MODE_INJECT; } -#else - LOGE("HID over AOA is not supported on this platform, " - "fallback to default keyboard injection method " - "(-K/--hid-keyboard ignored)"); - options->keyboard_input_mode = SC_KEYBOARD_INPUT_MODE_INJECT; -#endif } +#else + assert(options->keyboard_input_mode != SC_KEYBOARD_INPUT_MODE_HID); +#endif // keyboard_input_mode may have been reset if HID mode failed if (options->keyboard_input_mode == SC_KEYBOARD_INPUT_MODE_INJECT) {