[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] A custom idea for Google Summer of Code 2016

From: Anatoly Gusev
Subject: [Qemu-devel] A custom idea for Google Summer of Code 2016
Date: Tue, 22 Mar 2016 22:00:14 +0300


I'm the computer science student of Brest State Technical University (Belarus), and have an idea for Google Summer of Code (I see it as an important feature and have already started working on it, but mentoring would be a great help).

The proposition is about implementing one more absolute coordinates device for QEMU – a serial tablet with behaviour like usb-tablet we use to get mouse integration.

The implementing serial tablet would allow to have mouse integration for vintage operating systems. This feature is absent in other virtualisation systems, as far a I know. Emulating additional character  device with absolute coordinates – the one which was rather popular in 1990x– would allow us to use already existing drivers for old operating systems without USB support and so such device would bring mouse integration to them.

Supporting such old systems is more important than meets the eye. We see more and more web based projects demonstrating historical systems with their 'screen' embedded into HTML (with VNC client written in _javascript_ or something similar). One of such projects is oldweb (http://oldweb.today/), and there are several others (e.g. there are single demos of some old Microsoft or Apple OS, and Amiga). Of course these systems have no mouse integration, and demonstrate two mouse cursors moving with different speed, making it not so easy to operate with. 

We also have a project suffering from this problem: a live history timeline of GUI-based mobile & desktop operating systems. This timeline also uses virtual machines, embedded into HTML instead of screenshots. Our goal is to virtualise about 40 desktop & 30 mobile OSes for this demo (more than 50% is already done). The architecture of our project involves QEMU as the container for historical operating systems (either straightforward or with an iternal emulator).  The project is hosted at https://gitssh.com/fiowro/ostimeline/tree/master (dedicated web site with live demo demanded separate hardware server and finally should appear this spring…). And of course we also have the same problem with guest systems not supporting Wacom USB tablet. 

So there are enough projects and users who would benefit from implementing such feature.

At first I was thinking to make a plugin subsystem which would allow to write separate loadable modules for different character backends (to re-vitalize also some abandoned QEMU patches for exotic relative coordinates mice). But later I decided to chose more simple goal and just to implement serial tablet.

So I've studied these abandoned patches (mainly one for serial mouse with PC mouse systems protocol) and started working to implement similar patch for serial Wacom tablet. RS-232 Wacom PenPartner tablet was chosen to match the newer USB one, and because it is enough old to have drivers for the larger share of antique systems, and also has described protocol. 

At this moment I have got the real hardware PenPartner tablet (model CT-0405-R) and three virtual machines configured to use it:
- wacom wtest program under FreeDOS (it discovers the tablet and prints events from it),
- windows 3.11,
- windows 95. 
Drivers for OS/2 and MacOS X (and perhaps some others we will find for our ostimeline project) are still waiting to be installed into virtualised systems, but of course it's not so urgent.

My initial efforts have resulted into some dirty patch to QEMU 1.7 which makes wtest to recognise emulated tablet and sends coordinates (a pair of constants) on mouse move.  The following link provides pre-compiled qemu binary, its souce code, starting script and qcow image with wtest: https://www.dropbox.com/sh/q8ud6og8fxjzm60/AAAAtcStLohBP6PR-KLyIvxSa?dl=0

Of course the code is far from being finished, but at least it seems to be a good proof… And participating in GSoC program would help me a lot not to make something useful for other projects and not to finish with one more patch for an outdated QEMU version (like an abandoned genius backend, a vmware mouse, and a bus mouse patch used to run NextSTEP OS).

P.S. Sorry for such a long intro… Don't know how did it happened…  :)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]