All of lore.kernel.org
 help / color / mirror / Atom feed
From: sL1pKn07 SpinFlo <sl1pkn07@gmail.com>
To: kraxel@redhat.com
Cc: qemu-devel@nongnu.org, vfio-users <vfio-users@redhat.com>
Subject: Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode
Date: Fri, 15 Jan 2016 19:14:05 +0100	[thread overview]
Message-ID: <CAAaYXTtsK61D6uxiRP=kapsAaa7rqvBViAqZiyDLGqMcuMF5JQ@mail.gmail.com> (raw)
In-Reply-To: <CAAaYXTsM9nHUg_-CxL_1K8O_2DrL=PwhXNPjMwecMhoKOcrMsw@mail.gmail.com>

2016-01-15 19:06 GMT+01:00 sL1pKn07 SpinFlo <sl1pkn07@gmail.com>:
> ---------- Forwarded message ----------
> From: Gerd Hoffmann <kraxel@redhat.com>
> Date: 2016-01-15 14:24 GMT+01:00
> Subject: Re: [vfio-users] [PATCH v2 1/3] input: add
> qemu_input_qcode_to_linux + qemu_input_linux_to_qcode
> To: sL1pKn07 SpinFlo <sl1pkn07@gmail.com>
>
>
>> --- a/include/standard-headers/linux/input-event-codes.h
>> +++ b/include/standard-headers/linux/input-event-codes.h
>> @@ -416,6 +416,11 @@
>>  #define BTN_WHEEL 0x150
>>  #define BTN_GEAR_DOWN 0x150
>>  #define BTN_GEAR_UP 0x151
>> +#define BTN_GEAR_LEFT 0x???   /* FIXME! */
>> +#define BTN_GEAR_RIGHT 0x???   /* FIXME! */
>> +#define BTN_FUNCTION_1 0x???   /* FIXME! */
>> +#define BTN_FUNCTION_2 0x???   /* FIXME! */
>
> The ones sent by your mouse most likely already in the list.
>
> Add "log=on" to the mouse, then qemu will log all mouse events it gets
> from the kernel to stderr, including the ones it doesn't handle.  That
> should show which wheel and button events the mouse sends.  Lets
> continue from there.
>
> More buttons can be defined by adding them to InputButton in
> qapi-schema.json
>
> Most tricky part is probably getting the mouse events to the guest os.
> quick look as the ps/2 emulation looks like there are no unused bits for
> more buttons.  Possibly we have to extend the usb mouse emulation for
> that.  Need to google a bit on that (any hints are welcome ;) ...
>
> cheers,
>   Gerd

With log=on

evdev: relative HWHEEL -1 <- press wheel Left
evdev: sync
evdev: relative HWHEEL 1 <- press wheel right
evdev: sync
evdev: type=MSC code=0x4 value=0x90005
evdev: key/btn BTN_EXTRA down
evdev: sync
evdev: type=MSC code=0x4 value=0x90005
evdev: key/btn BTN_EXTRA up
evdev: sync
evdev: type=MSC code=0x4 value=0x90004
evdev: key/btn BTN_SIDE down
evdev: sync
evdev: type=MSC code=0x4 value=0x90004
evdev: key/btn BTN_SIDE up

then
------------------------------------------------------------------------------------
diff --git a/hw/input/hid.c b/hw/input/hid.c
index 3221d29..686ca3c 100644
--- a/hw/input/hid.c
+++ b/hw/input/hid.c
@@ -112,6 +112,8 @@ static void hid_pointer_event(DeviceState *dev,
QemuConsole *src,
         [INPUT_BUTTON_LEFT]   = 0x01,
         [INPUT_BUTTON_RIGHT]  = 0x02,
         [INPUT_BUTTON_MIDDLE] = 0x04,
+        [INPUT_BUTTON_EXTRA]  = 0x114,
+        [INPUT_BUTTON_SIDE]   = 0x113,
     };
     HIDState *hs = (HIDState *)dev;
     HIDPointerEvent *e;
diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index 79754cd..325eea8 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -386,6 +386,8 @@ static void ps2_mouse_event(DeviceState *dev,
QemuConsole *src,
         [INPUT_BUTTON_LEFT]   = MOUSE_EVENT_LBUTTON,
         [INPUT_BUTTON_MIDDLE] = MOUSE_EVENT_MBUTTON,
         [INPUT_BUTTON_RIGHT]  = MOUSE_EVENT_RBUTTON,
+        [INPUT_BUTTON_EXTRA]  = MOUSE_EVENT_EBUTTON,
+        [INPUT_BUTTON_SIDE]   = MOUSE_EVENT_SBUTTON,
     };
     PS2MouseState *s = (PS2MouseState *)dev;

diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index a78d11c..c003eb5 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -144,6 +144,8 @@ static const unsigned int
keymap_button[INPUT_BUTTON__MAX] = {
     [INPUT_BUTTON_MIDDLE]            = BTN_MIDDLE,
     [INPUT_BUTTON_WHEELUP]           = BTN_GEAR_UP,
     [INPUT_BUTTON_WHEELDOWN]         = BTN_GEAR_DOWN,
+    [INPUT_BUTTON_EXTRA]             = BTN_EXTRA,
+    [INPUT_BUTTON_SIDE]              = BTN_SIDE,
 };

 static const unsigned int axismap_rel[INPUT_AXIS__MAX] = {
diff --git a/monitor.c b/monitor.c
index e7e7ae2..61b7089 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1390,6 +1390,8 @@ static void hmp_mouse_button(Monitor *mon, const
QDict *qdict)
         [INPUT_BUTTON_LEFT]       = MOUSE_EVENT_LBUTTON,
         [INPUT_BUTTON_MIDDLE]     = MOUSE_EVENT_MBUTTON,
         [INPUT_BUTTON_RIGHT]      = MOUSE_EVENT_RBUTTON,
+        [INPUT_BUTTON_SIDE]       = MOUSE_EVENT_SBUTTON,
+        [INPUT_BUTTON_EXTRA]      = MOUSE_EVENT_EBUTTON,
     };
     int button_state = qdict_get_int(qdict, "button_state");

diff --git a/qapi-schema.json b/qapi-schema.json
index 2e31733..74096ce 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3667,7 +3667,7 @@
 # x-input-send-event is promoted out of experimental status.
 ##
 { 'enum'  : 'InputButton',
-  'data'  : [ 'Left', 'Middle', 'Right', 'WheelUp', 'WheelDown' ] }
+  'data'  : [ 'Left', 'Middle', 'Right', 'WheelUp', 'WheelDown',
'WheelLeft', 'WheelRight', 'Side', 'Extra' ] }

 ##
 # @InputAxis
diff --git a/ui/input-linux.c b/ui/input-linux.c
index 2e92c21..a6bf766 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -212,6 +212,11 @@ static void input_linux_event_mouse(void *opaque)
             case BTN_GEAR_DOWN:
                 qemu_input_queue_btn(NULL, INPUT_BUTTON_WHEELDOWN,
                                      event.value);
+            case BTN_EXTRA:
+                qemu_input_queue_btn(NULL, INPUT_BUTTON_EXTRA, event.value);
+                break;
+            case BTN_SIDE:
+                qemu_input_queue_btn(NULL, INPUT_BUTTON_SIDE, event.value);
                 break;
             };
             break;
-------------------------------------------------------

The part of whell left/right movement i don't know how paste on the code :/

and about  the extra buttons on windows....

https://msdn.microsoft.com/en-us/library/windows/hardware/jj128406(v=vs.85).aspx

bad business(?)

greetings

  reply	other threads:[~2016-01-15 18:14 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-14 14:18 [Qemu-devel] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode Gerd Hoffmann
2015-12-14 14:18 ` [Qemu-devel] [PATCH v2 2/3] input: linux evdev support Gerd Hoffmann
2015-12-14 16:44   ` [Qemu-devel] [vfio-users] " thibaut noah
2015-12-14 14:18 ` [Qemu-devel] [PATCH v2 3/3] input-linux: add option to toggle grab on all devices Gerd Hoffmann
2016-01-04 10:10 ` [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode Jonathan Scruggs
2016-01-04 11:56   ` Gerd Hoffmann
2016-01-04 13:13     ` Jonathan Scruggs
2016-01-04 13:19     ` Jonathan Scruggs
     [not found]       ` <CAAaYXTufBXAyrc0tNkOmRWZ6qmGW5qpyfAfjmOnRsHpgi4H1YA@mail.gmail.com>
2016-01-05  2:24         ` [Qemu-devel] Fwd: " sL1pKn07 SpinFlo
2016-01-05  7:05       ` [Qemu-devel] " Gerd Hoffmann
2016-01-05  8:06         ` Jonathan Scruggs
2016-01-05 14:44           ` sL1pKn07 SpinFlo
2016-01-06  7:53             ` Gerd Hoffmann
     [not found]               ` <CAAaYXTvQJmgZEz8AUfe5GNULcbpN7TA8DdCNDFxD4yZKAju=kg@mail.gmail.com>
2016-01-07  4:55                 ` [Qemu-devel] Fwd: " sL1pKn07 SpinFlo
     [not found]                 ` <1452087192.6096.38.camel@redhat.com>
2016-01-07  4:57                   ` sL1pKn07 SpinFlo
2016-01-13 20:34                     ` [Qemu-devel] " sL1pKn07 SpinFlo
2016-01-14 23:19                       ` sL1pKn07 SpinFlo
2016-01-15  8:50                         ` Gerd Hoffmann
     [not found]                           ` <CAAaYXTuX0qzgwqF0TWoVQ1zBKcNOWDEVUjat8Pe5XzP4PhHifw@mail.gmail.com>
2016-01-15 18:04                             ` [Qemu-devel] Fwd: " sL1pKn07 SpinFlo
     [not found]                             ` <1452864264.23156.72.camel@redhat.com>
2016-01-15 18:06                               ` sL1pKn07 SpinFlo
2016-01-15 18:14                                 ` sL1pKn07 SpinFlo [this message]
2016-01-18 11:47                           ` [Qemu-devel] " Jonathan Scruggs
2016-01-18 14:13                             ` Gerd Hoffmann
2016-01-23 21:51                               ` Jonathan Scruggs
2016-01-25  8:13                                 ` Gerd Hoffmann
2016-01-24 15:06                               ` Jonathan Scruggs
2016-01-25  8:29                                 ` Gerd Hoffmann
     [not found]     ` <CAAaYXTty+R2DJ3=Uc3K3xJ+iTNEHdA4JE1_iWXdL=U3sPwqjZw@mail.gmail.com>
2016-01-05  2:26       ` sL1pKn07 SpinFlo
2016-01-05  7:06         ` Gerd Hoffmann
     [not found]   ` <CAAaYXTvaDntkeSOKvu12UwT4FeAkspM12q94GE=keRTn-NOUsQ@mail.gmail.com>
2016-01-05  2:27     ` sL1pKn07 SpinFlo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAAaYXTtsK61D6uxiRP=kapsAaa7rqvBViAqZiyDLGqMcuMF5JQ@mail.gmail.com' \
    --to=sl1pkn07@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=vfio-users@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.