[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] input-linux: Make grabbing on start configurable
From: |
minus |
Subject: |
[PATCH] input-linux: Make grabbing on start configurable |
Date: |
Mon, 8 Feb 2021 15:17:24 +0100 |
Setting grab_on_start=off allows starting a VM on boot that shares the
keyboard/mouse of the host but without grabbing it immediately.
Signed-off-by: minus <minus@mnus.de>
---
ui/input-linux.c | 34 +++++++++++++++++++++++++++++-----
1 file changed, 29 insertions(+), 5 deletions(-)
diff --git a/ui/input-linux.c b/ui/input-linux.c
index 05c0c98819..c4f82eaa98 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -44,6 +44,7 @@ struct InputLinux {
bool grab_request;
bool grab_active;
bool grab_all;
+ bool grab_on_start;
bool keydown[KEY_CNT];
int keycount;
int wheel;
@@ -394,11 +395,13 @@ static void input_linux_complete(UserCreatable *uc, Error
**errp)
}
qemu_set_fd_handler(il->fd, input_linux_event, NULL, il);
- if (il->keycount) {
- /* delay grab until all keys are released */
- il->grab_request = true;
- } else {
- input_linux_toggle_grab(il);
+ if (il->grab_on_start) {
+ if (il->keycount) {
+ /* delay grab until all keys are released */
+ il->grab_request = true;
+ } else {
+ input_linux_toggle_grab(il);
+ }
}
QTAILQ_INSERT_TAIL(&inputs, il, next);
il->initialized = true;
@@ -450,6 +453,21 @@ static bool input_linux_get_grab_all(Object *obj, Error
**errp)
return il->grab_all;
}
+static void input_linux_set_grab_on_start(Object *obj, bool value,
+ Error **errp)
+{
+ InputLinux *il = INPUT_LINUX(obj);
+
+ il->grab_on_start = value;
+}
+
+static bool input_linux_get_grab_on_start(Object *obj, Error **errp)
+{
+ InputLinux *il = INPUT_LINUX(obj);
+
+ return il->grab_on_start;
+}
+
static void input_linux_set_grab_all(Object *obj, bool value,
Error **errp)
{
@@ -490,6 +508,9 @@ static void input_linux_set_grab_toggle(Object *obj, int
value,
static void input_linux_instance_init(Object *obj)
{
+ InputLinux *il = INPUT_LINUX(obj);
+
+ il->grab_on_start = true;
}
static void input_linux_class_init(ObjectClass *oc, void *data)
@@ -504,6 +525,9 @@ static void input_linux_class_init(ObjectClass *oc, void
*data)
object_class_property_add_bool(oc, "grab_all",
input_linux_get_grab_all,
input_linux_set_grab_all);
+ object_class_property_add_bool(oc, "grab_on_start",
+ input_linux_get_grab_on_start,
+ input_linux_set_grab_on_start);
object_class_property_add_bool(oc, "repeat",
input_linux_get_repeat,
input_linux_set_repeat);
--
2.30.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] input-linux: Make grabbing on start configurable,
minus <=