qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "François Revol" <revol@free.fr>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] [RFC] usb-wacom
Date: Thu, 14 Aug 2008 02:07:59 +0200 CEST	[thread overview]
Message-ID: <1498140435-BeMail@laptop> (raw)

Hi there.
We use QEMU a lot to debug Haiku, http://haiku-os.org/
I also wrote a little php script that use it to demo images online,
serving a VNC java applet to connect to it with VNC.
http://dev.haiku-os.org/browser/haiku/trunk/3rdparty/mmu_man/onlinedemo/haiku.php
It's a bit like what live.OSZoo does, but simpler.

To accomodate the VNC setup, I tried to use the usb tablet emulation.
It turns out Haiku has a driver for Wacom tablets:

http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/kernel/drivers/input/wacom
http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/input_server/devices/wacom

However, it didn't really work very well with qemu's usb-wacom code.

First, mouse stayed in the top-left corner... Seems coords were set to
0,0 when no button is pressed, which is wrong, most tablets actually
sense the stylus even when it's not yet touching the surface.

Also, coords were wrong.
Our driver takes the pos from the hardware, and scales them from model-
dependant hardcoded max values:
http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/input_server/devices/wacom/TabletDevice.cpp#L115
down to [0.0f, 1.0f], which represents the whole screen.
Since QEMU reports absolute mouse position scaled from screen size to
INT16_MAX this didn't really work.
Now, I'm not sure those max values are correct for all Penpartner
devices, or if they were calibrated on a specific item.
Best would be to actually read them from the HID descriptor, but QEMU
doesn't provide one, and I read some penpartner tablets actually have
wrong descriptors anyway.

Finaly, I fixed button handling according to our driver, not sure all
drivers handle them the same. pressure indicates left button, and a
flag tells about right one. I mapped middle button to the eraser to at
least be useful in tablet-aware software though I'm not sure it's the
best way.

And... oh well seems we don't need to tell we have a contact, the
driver assumes it always for penpartner so it seems correct.

I left debug macro I used just in case.

http://revolf.free.fr/beos/patches/qemu-usb-wacom-for-haiku.diff.txt

Now at least it works perfectly with our driver, appart from high cpu
usage but that's surely be fixed by polling less often.

Comments ?

François.

             reply	other threads:[~2008-08-14  0:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-14  0:07 François Revol [this message]
2008-08-14  2:04 ` [Qemu-devel] [PATCH] [RFC] usb-wacom Anthony Liguori
2008-08-14  2:21   ` François Revol
2008-08-14 10:23 ` Jamie Lokier
2008-08-14 12:04   ` François Revol
2008-08-14 12:26     ` Jamie Lokier
2008-08-14 12:44       ` François Revol
2008-08-14 11:52 ` andrzej zaborowski
2008-08-14 12:17   ` François Revol

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=1498140435-BeMail@laptop \
    --to=revol@free.fr \
    --cc=qemu-devel@nongnu.org \
    /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 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).