2006-11-26 11:13:41 -07:00
|
|
|
/*
|
|
|
|
|
|
|
|
Copyright 1993, 1998 The Open Group
|
|
|
|
|
|
|
|
Permission to use, copy, modify, distribute, and sell this software and its
|
|
|
|
documentation for any purpose is hereby granted without fee, provided that
|
|
|
|
the above copyright notice appear in all copies and that both that
|
|
|
|
copyright notice and this permission notice appear in supporting
|
|
|
|
documentation.
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
|
|
in all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
|
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
|
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
|
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
|
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
|
|
OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
|
|
|
|
Except as contained in this notice, the name of The Open Group shall
|
|
|
|
not be used in advertising or otherwise to promote the sale, use or
|
|
|
|
other dealings in this Software without prior written authorization
|
|
|
|
from The Open Group.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_DIX_CONFIG_H
|
|
|
|
#include <dix-config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <X11/X.h>
|
|
|
|
#include "mi.h"
|
|
|
|
#include <X11/Xproto.h>
|
|
|
|
#include "scrnintstr.h"
|
|
|
|
#include "inputstr.h"
|
|
|
|
#include <X11/Xos.h>
|
|
|
|
#include "mipointer.h"
|
2010-07-27 13:02:24 -06:00
|
|
|
#include "xkbsrv.h"
|
2006-11-26 11:13:41 -07:00
|
|
|
#include <X11/keysym.h>
|
2010-07-27 13:02:24 -06:00
|
|
|
#include "xserver-properties.h"
|
|
|
|
#include "exevents.h"
|
|
|
|
#include "extinit.h"
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
Bool
|
2007-11-24 10:55:21 -07:00
|
|
|
LegalModifier(unsigned int key, DeviceIntPtr pDev)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2010-07-27 13:02:24 -06:00
|
|
|
ProcessInputEvents(void)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
|
|
|
mieqProcessInputEvents();
|
|
|
|
}
|
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
void
|
|
|
|
DDXRingBell(int volume, int pitch, int duration)
|
2007-11-24 10:55:21 -07:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2006-11-26 11:13:41 -07:00
|
|
|
#define VFB_MIN_KEY 8
|
|
|
|
#define VFB_MAX_KEY 255
|
|
|
|
|
|
|
|
static int
|
|
|
|
vfbKeybdProc(DeviceIntPtr pDevice, int onoff)
|
|
|
|
{
|
2012-06-10 07:21:05 -06:00
|
|
|
DevicePtr pDev = (DevicePtr) pDevice;
|
2006-11-26 11:13:41 -07:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
switch (onoff) {
|
2010-07-27 13:02:24 -06:00
|
|
|
case DEVICE_INIT:
|
2012-06-10 07:21:05 -06:00
|
|
|
InitKeyboardDeviceStruct(pDevice, NULL, NULL, NULL);
|
2010-07-27 13:02:24 -06:00
|
|
|
break;
|
|
|
|
case DEVICE_ON:
|
2012-06-10 07:21:05 -06:00
|
|
|
pDev->on = TRUE;
|
|
|
|
break;
|
2010-07-27 13:02:24 -06:00
|
|
|
case DEVICE_OFF:
|
2012-06-10 07:21:05 -06:00
|
|
|
pDev->on = FALSE;
|
|
|
|
break;
|
2006-11-26 11:13:41 -07:00
|
|
|
case DEVICE_CLOSE:
|
2012-06-10 07:21:05 -06:00
|
|
|
break;
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
return Success;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
vfbMouseProc(DeviceIntPtr pDevice, int onoff)
|
|
|
|
{
|
2010-07-27 13:02:24 -06:00
|
|
|
#define NBUTTONS 3
|
|
|
|
#define NAXES 2
|
|
|
|
|
|
|
|
BYTE map[NBUTTONS + 1];
|
2012-06-10 07:21:05 -06:00
|
|
|
DevicePtr pDev = (DevicePtr) pDevice;
|
|
|
|
Atom btn_labels[NBUTTONS] = { 0 };
|
|
|
|
Atom axes_labels[NAXES] = { 0 };
|
2006-11-26 11:13:41 -07:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
switch (onoff) {
|
2006-11-26 11:13:41 -07:00
|
|
|
case DEVICE_INIT:
|
2012-06-10 07:21:05 -06:00
|
|
|
map[1] = 1;
|
|
|
|
map[2] = 2;
|
|
|
|
map[3] = 3;
|
2010-07-27 13:02:24 -06:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
|
|
|
|
btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
|
|
|
|
btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
|
2010-07-27 13:02:24 -06:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
|
|
|
|
axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
|
2010-07-27 13:02:24 -06:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
InitPointerDeviceStruct(pDev, map, NBUTTONS, btn_labels,
|
|
|
|
(PtrCtrlProcPtr) NoopDDA,
|
|
|
|
GetMotionHistorySize(), NAXES, axes_labels);
|
|
|
|
break;
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
case DEVICE_ON:
|
2012-06-10 07:21:05 -06:00
|
|
|
pDev->on = TRUE;
|
2006-11-26 11:13:41 -07:00
|
|
|
break;
|
|
|
|
|
|
|
|
case DEVICE_OFF:
|
2012-06-10 07:21:05 -06:00
|
|
|
pDev->on = FALSE;
|
|
|
|
break;
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
case DEVICE_CLOSE:
|
2012-06-10 07:21:05 -06:00
|
|
|
break;
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
return Success;
|
2010-07-27 13:02:24 -06:00
|
|
|
|
|
|
|
#undef NBUTTONS
|
|
|
|
#undef NAXES
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
InitInput(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
DeviceIntPtr p, k;
|
2010-07-27 13:02:24 -06:00
|
|
|
Atom xiclass;
|
2012-06-10 07:21:05 -06:00
|
|
|
|
2009-09-06 13:44:18 -06:00
|
|
|
p = AddInputDevice(serverClient, vfbMouseProc, TRUE);
|
|
|
|
k = AddInputDevice(serverClient, vfbKeybdProc, TRUE);
|
2010-07-27 13:02:24 -06:00
|
|
|
xiclass = MakeAtom(XI_MOUSE, sizeof(XI_MOUSE) - 1, TRUE);
|
|
|
|
AssignTypeAndName(p, xiclass, "Xvfb mouse");
|
|
|
|
xiclass = MakeAtom(XI_KEYBOARD, sizeof(XI_KEYBOARD) - 1, TRUE);
|
|
|
|
AssignTypeAndName(k, xiclass, "Xvfb keyboard");
|
2012-06-10 07:21:05 -06:00
|
|
|
(void) mieqInit();
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
2010-07-27 13:02:24 -06:00
|
|
|
|
|
|
|
void
|
2012-06-10 07:21:05 -06:00
|
|
|
CloseInput(void)
|
2010-07-27 13:02:24 -06:00
|
|
|
{
|
2011-11-05 07:32:40 -06:00
|
|
|
mieqFini();
|
2010-07-27 13:02:24 -06:00
|
|
|
}
|