vboxmouse_15.c revision 41f7b9cd03b9ea0b79ed9d9f81697bcf6bd08aa1
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * VirtualBox X11 Guest Additions, mouse driver for X.Org server 1.5
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Copyright (C) 2006-2007 Oracle Corporation
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * available from http://www.virtualbox.org. This file is free software;
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * you can redistribute it and/or modify it under the terms of the GNU
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * General Public License (GPL) as published by the Free Software
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * --------------------------------------------------------------------
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * This code is based on evdev.c from X.Org with the following copyright
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * and permission notice:
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Copyright © 2004-2008 Red Hat, Inc.
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Permission to use, copy, modify, distribute, and sell this software
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * and its documentation for any purpose is hereby granted without
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * fee, provided that the above copyright notice appear in all copies
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * and that both that copyright notice and this permission notice
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * appear in supporting documentation, and that the name of Red Hat
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * not be used in advertising or publicity pertaining to distribution
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * of the software without specific, written prior permission. Red
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Hat makes no representations about the suitability of this software
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * for any purpose. It is provided "as is" without express or implied
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * warranty.
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Kristian Høgsberg (krh@redhat.com)
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * Adam Jackson (ajax@redhat.com)
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync /** The minumum value our device can return */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync /** The maximum value our device can return */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync /* Read a byte from the device to acknowledge the event */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync /* The first test here is a workaround for an apparent bug in Xorg Server 1.5 */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync && RT_SUCCESS(VbglR3GetMouseStatus(&fFeatures, &cx, &cy))
dc0a54940789f994c84390cb4a9f03da0b492285vboxsync /* Bug in the 1.4 X server series - conversion_proc was no longer
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync * called, but the server didn't yet do the conversion itself. */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync /* send absolute movement */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync /* Nothing to do, dix handles all settings */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync if (!InitPointerDeviceStruct((DevicePtr)device, map, 2,
4e47bb772df0d04d1ded3e06354de547d52e2d06vboxsync /* Tell the server about the range of axis values we report */
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync xf86InitValuatorAxisStruct(device, 0, 0, -1, 1, 0, 1);
c1bf14b7bd52ba68e91e056d3f054c053f944164vboxsync xf86InitValuatorAxisStruct(device, 1, 0, -1, 1, 0, 1);
7f559fbdfc27f13c8448645ace787c4c1ddefd13vboxsync xf86MotionHistoryAllocate(device->public.devicePrivate);
switch (what)
case DEVICE_INIT:
VbglR3Term();
return xrc;
case DEVICE_ON:
return !Success;
case DEVICE_OFF:
case DEVICE_CLOSE:
VbglR3Term();
return BadValue;
return Success;
return BadMatch;
return Success;
static Bool
if (first == 0) {
return TRUE;
return FALSE;
const char *device;
int rc;
return BadMatch;
return rc;
return Success;
static InputInfoPtr
const char *device;
return NULL;
return NULL;
return pInfo;
NULL,
NULL,
NULL,
static pointer
int *errmaj,
int *errmin)
(void *)&VBOXMOUSE);
return module;