From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33444 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PdiMc-0005dl-UN for qemu-devel@nongnu.org; Fri, 14 Jan 2011 07:02:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PdiMb-000729-M3 for qemu-devel@nongnu.org; Fri, 14 Jan 2011 07:02:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:19217) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PdiMb-00071q-CW for qemu-devel@nongnu.org; Fri, 14 Jan 2011 07:02:41 -0500 Message-ID: <4D303B5B.6070609@redhat.com> Date: Fri, 14 Jan 2011 13:02:35 +0100 From: Gerd Hoffmann MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090501050402030100030602" Subject: [Qemu-devel] paravirtual tablet v2 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "qemu-devel@nongnu.org" , spice-devel This is a multi-part message in MIME format. --------------090501050402030100030602 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, Updated according to the feedback. Multitouch not added (yet). cheers, Gerd --------------090501050402030100030602 Content-Type: text/x-chdr; name="pvtablet.h" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pvtablet.h" #ifndef __QEMU_PVTABLET__ #define __QEMU_PVTABLET__ 1 /* * qemu patavirtual tablet interface */ #include /* * our virtio-serial channel name(s) */ #define QEMU_PVTABLET_FORMAT "org.qemu.pvtablet.%d" enum qemu_pvtablet_type { QEMU_PVTABLET_MSG_INIT, QEMU_PVTABLET_MSG_ACK, QEMU_PVTABLET_MSG_MOVE, QEMU_PVTABLET_MSG_BTN_DOWN, QEMU_PVTABLET_MSG_BTN_UP, }; typedef enum qemu_pvtablet_features { /* None yet */ }; typedef enum qemu_pvtablet_buttons { QEMU_PVTABLET_BTN_LEFT, QEMU_PVTABLET_BTN_RIGHT, QEMU_PVTABLET_BTN_MIDDLE, QEMU_PVTABLET_BTN_SCROLL_UP, QEMU_PVTABLET_BTN_SCROLL_DOWN, /* * we can handle up to 32 buttons although * not every has a individual name ;) */ }; /* * QEMU_PVTABLET_MSG_INIT, host -> guest * first message, sent before any other event */ typedef struct qemu_pvtablet_init { uint32_t res_x; /* x axis resolution */ uint32_t res_y; /* y axis resolution */ uint32_t features; /* qemu_pvtablet_features */ uint32_t buttons_mask; /* mouse buttons available */ } qemu_pvtablet_init; /* * QEMU_PVTABLET_MSG_ACK, guest -> host * sent after pvtablet_init. host will not send * additional messages until this is received */ typedef struct qemu_pvtablet_ack { uint32_t features; /* qemu_pvtable_features */ }; /* * QEMU_PVTABLET_MSG_BTN_{DOWN,UP}, host -> guest * send button press+release events */ typedef struct qemu_pvtablet_button { uint32_t button; uint32_t mask; } qemu_pvtablet_button; /* * QEMU_PVTABLET_MSG_MOVE, host -> guest * send pointer move events */ typedef struct qemu_pvtablet_position { uint32_t pos_x; uint32_t pos_y; } qemu_pvtablet_position; typedef struct qemu_pvtablet_header { uint32_t size; /* whole message size */ uint32_t type; /* qemu_pvtablet_type */ /* * Timestamp is specified in nanoseconds. Timebase is undefined. * This is supposed to be used to figure how much time passed * between two events, to decide whenever two mouse clicks should * be interpreted as double click or not and simliar stuff. */ uint64_t timestamp; } qemu_pvtablet_header; typedef union qemu_pvtablet_payload { qemu_pvtablet_init init; qemu_pvtablet_ack ack; qemu_pvtablet_position position; qemu_pvtablet_button button; }; typedef struct qemu_pvtablet_message { qemu_pvtablet_header hdr; qemu_pvtablet_payload data; } qemu_pvtablet_message; #endif /* __QEMU_PVTABLET__ */ --------------090501050402030100030602--