[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode
From: |
sL1pKn07 SpinFlo |
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 |
2016-01-15 19:06 GMT+01:00 sL1pKn07 SpinFlo <address@hidden>:
> ---------- Forwarded message ----------
> From: Gerd Hoffmann <address@hidden>
> 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 <address@hidden>
>
>
>> --- 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
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, (continued)
- Message not available
- Message not available
- [Qemu-devel] Fwd: [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/06
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/13
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/14
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Gerd Hoffmann, 2016/01/15
- Message not available
- [Qemu-devel] Fwd: [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/15
- Message not available
- Message not available
- [Qemu-devel] Fwd: [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/15
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode,
sL1pKn07 SpinFlo <=
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Jonathan Scruggs, 2016/01/18
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Gerd Hoffmann, 2016/01/18
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Jonathan Scruggs, 2016/01/23
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Gerd Hoffmann, 2016/01/25
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Jonathan Scruggs, 2016/01/24
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Gerd Hoffmann, 2016/01/25
- Message not available
- [Qemu-devel] Fwd: [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/05
- Message not available
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, sL1pKn07 SpinFlo, 2016/01/05
- Re: [Qemu-devel] [vfio-users] [PATCH v2 1/3] input: add qemu_input_qcode_to_linux + qemu_input_linux_to_qcode, Gerd Hoffmann, 2016/01/05
Message not available