diff mbox

Fwd: [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode

Message ID CAAaYXTtYq2GP+vPWQkqexDP9Dd51NgHxiVtpTwFmt1Rh3PKp1A@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

sL1pKn07 SpinFlo Jan. 15, 2016, 6:04 p.m. UTC
---------- Forwarded message ----------
From: sL1pKn07 SpinFlo <sl1pkn07@gmail.com>
Date: 2016-01-15 13:48 GMT+01:00
Subject: Re: [vfio-users] [PATCH v2 1/3] input: add
qemu_input_qcode_to_linux + qemu_input_linux_to_qcode
To: Gerd Hoffmann <kraxel@redhat.com>


2016-01-15 9:50 GMT+01:00 Gerd Hoffmann <kraxel@redhat.com>:
> The mouse emulated by qemu has only three buttons.
>
> cheers,
>   Gerd
>

mmmnnn

---------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------

for add more buttons is something like this?

how I can get the values of "FIXME" parameters?

yes, is a ugly patch (i am not coder) and make only for me... but i
not want back to synergy/usb passthrough :(

greetings


PS: Mailman, oh, please ¬¬
diff mbox

Patch

diff --git a/hw/input/hid.c b/hw/input/hid.c
index 3221d29..4dc870d 100644
--- a/hw/input/hid.c
+++ b/hw/input/hid.c
@@ -109,9 +109,13 @@  static void hid_pointer_event(DeviceState *dev,
QemuConsole *src,
                               InputEvent *evt)
 {
     static const int bmap[INPUT_BUTTON__MAX] = {
-        [INPUT_BUTTON_LEFT]   = 0x01,
-        [INPUT_BUTTON_RIGHT]  = 0x02,
-        [INPUT_BUTTON_MIDDLE] = 0x04,
+        [INPUT_BUTTON_LEFT]       = 0x01,
+        [INPUT_BUTTON_RIGHT]      = 0x02,
+        [INPUT_BUTTON_MIDDLE]     = 0x04,
+        [INPUT_BUTTON_WHELLLEFT]  = 0x??, /* FIXME! */
+        [INPUT_BUTTON_WHELLRIGHT] = 0x??, /* FIXME! */
+        [INPUT_BUTTON_FN1]        = 0x??, /* FIXME! */
+        [INPUT_BUTTON_FN2]        = 0x??, /* FIXME! */
     };
     HIDState *hs = (HIDState *)dev;
     HIDPointerEvent *e;
diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index 79754cd..2e5a722 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -383,9 +383,13 @@  static void ps2_mouse_event(DeviceState *dev,
QemuConsole *src,
                             InputEvent *evt)
 {
     static const int bmap[INPUT_BUTTON__MAX] = {
-        [INPUT_BUTTON_LEFT]   = MOUSE_EVENT_LBUTTON,
-        [INPUT_BUTTON_MIDDLE] = MOUSE_EVENT_MBUTTON,
-        [INPUT_BUTTON_RIGHT]  = MOUSE_EVENT_RBUTTON,
+        [INPUT_BUTTON_LEFT]       = MOUSE_EVENT_LBUTTON,
+        [INPUT_BUTTON_MIDDLE]     = MOUSE_EVENT_MBUTTON,
+        [INPUT_BUTTON_RIGHT]      = MOUSE_EVENT_RBUTTON,
+        [INPUT_BUTTON_WHELLLEFT]  = MOUSE_EVENT_WLBUTTON,
+        [INPUT_BUTTON_WHELLRIGHT] = MOUSE_EVENT_WRRBUTTON,
+        [INPUT_BUTTON_FN1]        = MOUSE_EVENT_FN1BUTTON,
+        [INPUT_BUTTON_FN2]        = MOUSE_EVENT_FN2BUTTON,
     };
     PS2MouseState *s = (PS2MouseState *)dev;

diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index a78d11c..9e3b6dd 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -144,6 +144,10 @@  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_WHELLLEFT]         = BTN_GEAR_LEFT,
+    [INPUT_BUTTON_WHELLRIGHT]        = BTN_GEAR_RIGHT,
+    [INPUT_BUTTON_FN1]               = BTN_FUNCTION_1,
+    [INPUT_BUTTON_FN2]               = BTN_FUNCTION_2,
 };

 static const unsigned int axismap_rel[INPUT_AXIS__MAX] = {
diff --git a/include/standard-headers/linux/input-event-codes.h
b/include/standard-headers/linux/input-event-codes.h
index 354f0de..0df11c7 100644
--- 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! */
+

 #define KEY_OK 0x160
 #define KEY_SELECT 0x161
diff --git a/monitor.c b/monitor.c
index e7e7ae2..beda8da 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1390,6 +1390,10 @@  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_WHELLLEFT]  = MOUSE_EVENT_WLBUTTON,
+        [INPUT_BUTTON_WHELLRIGHT] = MOUSE_EVENT_WRRBUTTON,
+        [INPUT_BUTTON_FN1]        = MOUSE_EVENT_FN1BUTTON,
+        [INPUT_BUTTON_FN2]        = MOUSE_EVENT_FN2BUTTON,
     };
     int button_state = qdict_get_int(qdict, "button_state");

diff --git a/ui/input-linux.c b/ui/input-linux.c
index 2e92c21..cc23c96 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -212,6 +212,17 @@  static void input_linux_event_mouse(void *opaque)
             case BTN_GEAR_DOWN:
                 qemu_input_queue_btn(NULL, INPUT_BUTTON_WHEELDOWN,
                                      event.value);
+            case BTN_GEAR_LEFT:
+                qemu_input_queue_btn(NULL, INPUT_BUTTON_WHELLLEFT,
+                                     event.value);
+            case BTN_GEAR_RIGHT:
+                qemu_input_queue_btn(NULL, INPUT_BUTTON_WHELLRIGHT,
+                                     event.value);
+            case BTN_FUNCTION_1:
+                qemu_input_queue_btn(NULL, INPUT_BUTTON_FN1, event.value);
+                break;
+            case BTN_FUNCTION_1:
+                qemu_input_queue_btn(NULL, INPUT_BUTTON_FN2, event.value);
                 break;
             };
             break;