mirror of
https://github.com/Genymobile/scrcpy.git
synced 2025-08-02 22:29:25 +00:00
hid_mouse_initialization
This commit is contained in:
parent
82ac944d23
commit
9ac57d6e71
1 changed files with 30 additions and 4 deletions
|
@ -336,6 +336,7 @@ scrcpy(struct scrcpy_options *options) {
|
||||||
#ifdef HAVE_AOA_HID
|
#ifdef HAVE_AOA_HID
|
||||||
bool aoa_hid_initialized = false;
|
bool aoa_hid_initialized = false;
|
||||||
bool hid_keyboard_initialized = false;
|
bool hid_keyboard_initialized = false;
|
||||||
|
bool hid_mouse_initialized = false;
|
||||||
#endif
|
#endif
|
||||||
bool controller_initialized = false;
|
bool controller_initialized = false;
|
||||||
bool controller_started = false;
|
bool controller_started = false;
|
||||||
|
@ -457,7 +458,9 @@ scrcpy(struct scrcpy_options *options) {
|
||||||
#ifdef HAVE_AOA_HID
|
#ifdef HAVE_AOA_HID
|
||||||
bool use_hid_keyboard =
|
bool use_hid_keyboard =
|
||||||
options->keyboard_input_mode == SC_KEYBOARD_INPUT_MODE_HID;
|
options->keyboard_input_mode == SC_KEYBOARD_INPUT_MODE_HID;
|
||||||
if (use_hid_keyboard) {
|
bool use_hid_mouse =
|
||||||
|
options->mouse_input_mode == SC_MOUSE_INPUT_MODE_HID;
|
||||||
|
if (use_hid_keyboard || use_hid_mouse) {
|
||||||
bool ok = sc_acksync_init(&s->acksync);
|
bool ok = sc_acksync_init(&s->acksync);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
goto end;
|
goto end;
|
||||||
|
@ -479,7 +482,16 @@ scrcpy(struct scrcpy_options *options) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool need_aoa = hid_keyboard_initialized;
|
if (use_hid_mouse) {
|
||||||
|
if (sc_hid_mouse_init(&s->mouse_hid, &s->aoa)) {
|
||||||
|
hid_mouse_initialized = true;
|
||||||
|
mp = &s->mouse_hid.mouse_processor;
|
||||||
|
} else {
|
||||||
|
LOGE("Could not initialized HID mouse");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool need_aoa = hid_keyboard_initialized || hid_mouse_initialized;
|
||||||
|
|
||||||
if (!need_aoa || !sc_aoa_start(&s->aoa)) {
|
if (!need_aoa || !sc_aoa_start(&s->aoa)) {
|
||||||
sc_acksync_destroy(&s->acksync);
|
sc_acksync_destroy(&s->acksync);
|
||||||
|
@ -497,6 +509,10 @@ aoa_hid_end:
|
||||||
sc_hid_keyboard_destroy(&s->keyboard_hid);
|
sc_hid_keyboard_destroy(&s->keyboard_hid);
|
||||||
hid_keyboard_initialized = false;
|
hid_keyboard_initialized = false;
|
||||||
}
|
}
|
||||||
|
if (hid_mouse_initialized) {
|
||||||
|
sc_hid_mouse_destroy(&s->mouse_hid);
|
||||||
|
hid_mouse_initialized = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_hid_keyboard && !hid_keyboard_initialized) {
|
if (use_hid_keyboard && !hid_keyboard_initialized) {
|
||||||
|
@ -504,9 +520,16 @@ aoa_hid_end:
|
||||||
"(-K/--hid-keyboard ignored)");
|
"(-K/--hid-keyboard ignored)");
|
||||||
options->keyboard_input_mode = SC_KEYBOARD_INPUT_MODE_INJECT;
|
options->keyboard_input_mode = SC_KEYBOARD_INPUT_MODE_INJECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (use_hid_mouse && !hid_mouse_initialized) {
|
||||||
|
LOGE("Fallback to default mouse injection method "
|
||||||
|
"(-M/--hid-mouse ignored)");
|
||||||
|
options->mouse_input_mode = SC_MOUSE_INPUT_MODE_INJECT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
assert(options->keyboard_input_mode != SC_KEYBOARD_INPUT_MODE_HID);
|
assert(options->keyboard_input_mode != SC_KEYBOARD_INPUT_MODE_HID);
|
||||||
|
assert(options->mouse_input_mode != SC_MOUSE_INPUT_MODE_HID);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// keyboard_input_mode may have been reset if HID mode failed
|
// keyboard_input_mode may have been reset if HID mode failed
|
||||||
|
@ -516,8 +539,11 @@ aoa_hid_end:
|
||||||
kp = &s->keyboard_inject.key_processor;
|
kp = &s->keyboard_inject.key_processor;
|
||||||
}
|
}
|
||||||
|
|
||||||
sc_mouse_inject_init(&s->mouse_inject, &s->controller);
|
// mouse_input_mode may have been reset if HID mode failed
|
||||||
mp = &s->mouse_inject.mouse_processor;
|
if (options->mouse_input_mode == SC_MOUSE_INPUT_MODE_INJECT) {
|
||||||
|
sc_mouse_inject_init(&s->mouse_inject, &s->controller);
|
||||||
|
mp = &s->mouse_inject.mouse_processor;
|
||||||
|
}
|
||||||
|
|
||||||
if (!controller_init(&s->controller, s->server.control_socket,
|
if (!controller_init(&s->controller, s->server.control_socket,
|
||||||
acksync)) {
|
acksync)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue