* [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle @ 2018-01-07 11:13 byxk 2018-01-07 11:13 ` [Qemu-devel] [PATCH 1/1] " byxk 2018-01-07 11:31 ` [Qemu-devel] [PATCH 0/1] " no-reply 0 siblings, 2 replies; 5+ messages in thread From: byxk @ 2018-01-07 11:13 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel, byxk Hi QEMU, This patch allows one to pass either one or both of --evdev-lhotkey {keycode} and --evdev-rhotkey {keycode} to change the default key combo to toggle evdev grab. I had trouble figuring out where to set defaults (LCTRL + RCTRL), so ended up setting it directly. This is my first patch ever to anything so any help/feedback is appreciated. Thanks, byxk byxk (1): input-linux: provide hotkeys for evdev toggle include/ui/input.h | 3 +++ qemu-options.hx | 13 +++++++++++++ ui/input-linux.c | 4 ++-- vl.c | 8 ++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) -- 2.15.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 1/1] input-linux: provide hotkeys for evdev toggle 2018-01-07 11:13 [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle byxk @ 2018-01-07 11:13 ` byxk 2018-01-07 11:31 ` [Qemu-devel] [PATCH 0/1] " no-reply 1 sibling, 0 replies; 5+ messages in thread From: byxk @ 2018-01-07 11:13 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel, byxk --- include/ui/input.h | 3 +++ qemu-options.hx | 13 +++++++++++++ ui/input-linux.c | 4 ++-- vl.c | 8 ++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/include/ui/input.h b/include/ui/input.h index 5cc76d6e41..94b1468159 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -80,4 +80,7 @@ extern const guint16 qemu_input_map_qnum_to_qcode[]; extern const guint qemu_input_map_qcode_to_linux_len; extern const guint16 qemu_input_map_qcode_to_linux[]; +extern int qemu_evdev_rhotkey; +extern int qemu_evdev_lhotkey; + #endif /* INPUT_H */ diff --git a/qemu-options.hx b/qemu-options.hx index 94647e21e3..56cafd7592 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4264,6 +4264,19 @@ contents of @code{iv.b64} to the second secret ETEXI +DEF("evdev-lhotkey", HAS_ARG, QEMU_OPTION_evdev_lhotkey, "--evdev-lhotkey left hotkey for evdev input toggle, default=LEFTCTRL(29)\n", QEMU_ARCH_ALL) +STEXI +@item --evdev-lhotkey @var{evdevLHotkey} +@findex --evdev-lhotkey +Left keycode to use in toggling evdev +ETEXI + +DEF("evdev-rhotkey", HAS_ARG, QEMU_OPTION_evdev_rhotkey, "--evdev-rhotkey right hotkey for evdev input toggle, default=RIGHTCTRL(97)\n", QEMU_ARCH_ALL) +STEXI +@item --evdev-rhotkey @var{evdevRHotkey} +@findex --evdev-rhotkey +Right keycode to use in toggling evdev +ETEXI HXCOMM This is the last statement. Insert new options before this line! STEXI diff --git a/ui/input-linux.c b/ui/input-linux.c index 9720333b2c..8af1450dce 100644 --- a/ui/input-linux.c +++ b/ui/input-linux.c @@ -134,8 +134,8 @@ static void input_linux_handle_keyboard(InputLinux *il, } /* hotkey -> record switch request ... */ - if (il->keydown[KEY_LEFTCTRL] && - il->keydown[KEY_RIGHTCTRL]) { + if (il->keydown[qemu_evdev_lhotkey] && + il->keydown[qemu_evdev_rhotkey]) { il->grab_request = true; } diff --git a/vl.c b/vl.c index d3a5c5d021..7bdf6030cf 100644 --- a/vl.c +++ b/vl.c @@ -184,6 +184,8 @@ bool boot_strict; uint8_t *boot_splash_filedata; size_t boot_splash_filedata_size; uint8_t qemu_extra_params_fw[2]; +int qemu_evdev_lhotkey = 29; /* LEFTCONTROL */ +int qemu_evdev_rhotkey = 97; /* RIGHTCONTROL */ int icount_align_option; @@ -3378,6 +3380,12 @@ int main(int argc, char **argv, char **envp) qemu_opts_set(qemu_find_opts("machine"), 0, "initrd", optarg, &error_abort); break; + case QEMU_OPTION_evdev_rhotkey: + qemu_evdev_rhotkey = strtol(optarg, NULL, 0); + break; + case QEMU_OPTION_evdev_lhotkey: + qemu_evdev_lhotkey = strtol(optarg, NULL, 0); + break; case QEMU_OPTION_append: qemu_opts_set(qemu_find_opts("machine"), 0, "append", optarg, &error_abort); -- 2.15.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle 2018-01-07 11:13 [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle byxk 2018-01-07 11:13 ` [Qemu-devel] [PATCH 1/1] " byxk @ 2018-01-07 11:31 ` no-reply 2018-01-07 11:45 ` Patrick Tseng 1 sibling, 1 reply; 5+ messages in thread From: no-reply @ 2018-01-07 11:31 UTC (permalink / raw) To: patricktsen; +Cc: famz, qemu-devel, kraxel Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 20180107111341.8879-1-patricktsen@gmail.com Subject: [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' 8d2dfcbd73 input-linux: provide hotkeys for evdev toggle === OUTPUT BEGIN === Checking PATCH 1/1: input-linux: provide hotkeys for evdev toggle... ERROR: consider using qemu_strtol in preference to strtol #77: FILE: vl.c:3384: + qemu_evdev_rhotkey = strtol(optarg, NULL, 0); ERROR: consider using qemu_strtol in preference to strtol #80: FILE: vl.c:3387: + qemu_evdev_lhotkey = strtol(optarg, NULL, 0); ERROR: Missing Signed-off-by: line(s) total: 3 errors, 0 warnings, 56 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@freelists.org ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle 2018-01-07 11:31 ` [Qemu-devel] [PATCH 0/1] " no-reply @ 2018-01-07 11:45 ` Patrick Tseng 0 siblings, 0 replies; 5+ messages in thread From: Patrick Tseng @ 2018-01-07 11:45 UTC (permalink / raw) To: qemu-devel Please disregard this patch, I'll have another one ready and actually isolated to input-linux. On Sun, Jan 7, 2018 at 3:31 AM, <no-reply@patchew.org> wrote: > Hi, > > This series seems to have some coding style problems. See output below for > more information: > > Type: series > Message-id: 20180107111341.8879-1-patricktsen@gmail.com > Subject: [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev > toggle > > === TEST SCRIPT BEGIN === > #!/bin/bash > > BASE=base > n=1 > total=$(git log --oneline $BASE.. | wc -l) > failed=0 > > git config --local diff.renamelimit 0 > git config --local diff.renames True > > commits="$(git log --format=%H --reverse $BASE..)" > for c in $commits; do > echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." > if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback > -; then > failed=1 > echo > fi > n=$((n+1)) > done > > exit $failed > === TEST SCRIPT END === > > Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 > Switched to a new branch 'test' > 8d2dfcbd73 input-linux: provide hotkeys for evdev toggle > > === OUTPUT BEGIN === > Checking PATCH 1/1: input-linux: provide hotkeys for evdev toggle... > ERROR: consider using qemu_strtol in preference to strtol > #77: FILE: vl.c:3384: > + qemu_evdev_rhotkey = strtol(optarg, NULL, 0); > > ERROR: consider using qemu_strtol in preference to strtol > #80: FILE: vl.c:3387: > + qemu_evdev_lhotkey = strtol(optarg, NULL, 0); > > ERROR: Missing Signed-off-by: line(s) > > total: 3 errors, 0 warnings, 56 lines checked > > Your patch has style problems, please review. If any of these errors > are false positives report them to the maintainer, see > CHECKPATCH in MAINTAINERS. > > === OUTPUT END === > > Test command exited with code: 1 > > > --- > Email generated automatically by Patchew [http://patchew.org/]. > Please send your feedback to patchew-devel@freelists.org ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v2 0/1] input-linux: provide hotkeys for evdev toggle @ 2018-01-07 22:14 byxk 2018-01-07 22:14 ` [Qemu-devel] [PATCH 1/1] " byxk 0 siblings, 1 reply; 5+ messages in thread From: byxk @ 2018-01-07 22:14 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel, byxk Added some functionality to change the key combo for evdev toggle. example: -object input-linux,rhotkey=29,lhotkey=56,evdev=[etc...] Set the defaults to LCTRL and RCTRL if not provided. This is my first patch to anything so feedback/help appreciated! byxk (1): input-linux: provide hotkeys for evdev toggle ui/input-linux.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 2 deletions(-) -- 2.15.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 1/1] input-linux: provide hotkeys for evdev toggle 2018-01-07 22:14 [Qemu-devel] [PATCH v2 " byxk @ 2018-01-07 22:14 ` byxk 0 siblings, 0 replies; 5+ messages in thread From: byxk @ 2018-01-07 22:14 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel, byxk --- ui/input-linux.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/ui/input-linux.c b/ui/input-linux.c index 9720333b2c..a553d2b4cc 100644 --- a/ui/input-linux.c +++ b/ui/input-linux.c @@ -5,6 +5,7 @@ */ #include "qemu/osdep.h" +#include "qemu/cutils.h" #include "qapi/error.h" #include "qemu-common.h" #include "qemu/config-file.h" @@ -62,6 +63,8 @@ struct InputLinux { int abs_y_max; struct input_event event; int read_offset; + long rhotkey; + long lhotkey; QTAILQ_ENTRY(InputLinux) next; }; @@ -134,8 +137,8 @@ static void input_linux_handle_keyboard(InputLinux *il, } /* hotkey -> record switch request ... */ - if (il->keydown[KEY_LEFTCTRL] && - il->keydown[KEY_RIGHTCTRL]) { + if (il->keydown[il->rhotkey] && + il->keydown[il->lhotkey]) { il->grab_request = true; } @@ -274,6 +277,14 @@ static void input_linux_complete(UserCreatable *uc, Error **errp) return; } + if (!il->rhotkey) { + il->rhotkey = KEY_RIGHTCTRL; + } + + if (!il->lhotkey) { + il->lhotkey = KEY_LEFTCTRL; + } + il->fd = open(il->evdev, O_RDWR); if (il->fd < 0) { error_setg_file_open(errp, errno, il->evdev); @@ -395,6 +406,62 @@ static void input_linux_set_grab_all(Object *obj, bool value, il->grab_all = value; } +static void input_linux_set_rhotkey(Object *obj, const char *value, + Error **errp) +{ + InputLinux *il = INPUT_LINUX(obj); + InputLinux *item; + long rhotkey; + int res = qemu_strtol(value, NULL, 0, &rhotkey); + if (res != 0) { + rhotkey = KEY_RIGHTCTRL; + } + il->rhotkey = rhotkey; + + QTAILQ_FOREACH(item, &inputs, next) { + if (item == il || item->rhotkey) { + continue; + } + item->rhotkey = rhotkey; + } +} + +static char *input_linux_get_rhotkey(Object *obj, Error **errp) +{ + InputLinux *il = INPUT_LINUX(obj); + char buf[sizeof(int) * 4]; + sprintf(buf, "%ld", il->rhotkey); + return g_strdup(buf); +} + +static void input_linux_set_lhotkey(Object *obj, const char *value, + Error **errp) +{ + InputLinux *il = INPUT_LINUX(obj); + InputLinux *item; + long lhotkey = KEY_LEFTCTRL; + int res = qemu_strtol(value, NULL, 0, &lhotkey); + if (res != 0) { + lhotkey = KEY_LEFTCTRL; + } + il->lhotkey = lhotkey; + + QTAILQ_FOREACH(item, &inputs, next) { + if (item == il || item->lhotkey) { + continue; + } + item->lhotkey = lhotkey; + } +} + +static char *input_linux_get_lhotkey(Object *obj, Error **errp) +{ + InputLinux *il = INPUT_LINUX(obj); + char buf[sizeof(int) * 4]; + sprintf(buf, "%ld", il->lhotkey); + return g_strdup(buf); +} + static bool input_linux_get_repeat(Object *obj, Error **errp) { InputLinux *il = INPUT_LINUX(obj); @@ -421,6 +488,12 @@ static void input_linux_instance_init(Object *obj) object_property_add_bool(obj, "repeat", input_linux_get_repeat, input_linux_set_repeat, NULL); + object_property_add_str(obj, "rhotkey", + input_linux_get_rhotkey, + input_linux_set_rhotkey, NULL); + object_property_add_str(obj, "lhotkey", + input_linux_get_lhotkey, + input_linux_set_lhotkey, NULL); } static void input_linux_class_init(ObjectClass *oc, void *data) -- 2.15.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-01-07 22:15 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-01-07 11:13 [Qemu-devel] [PATCH 0/1] input-linux: provide hotkeys for evdev toggle byxk 2018-01-07 11:13 ` [Qemu-devel] [PATCH 1/1] " byxk 2018-01-07 11:31 ` [Qemu-devel] [PATCH 0/1] " no-reply 2018-01-07 11:45 ` Patrick Tseng -- strict thread matches above, loose matches on Subject: below -- 2018-01-07 22:14 [Qemu-devel] [PATCH v2 " byxk 2018-01-07 22:14 ` [Qemu-devel] [PATCH 1/1] " byxk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).