Add completely fake X server -- draws to allocated buffer, has no keyboard
or mouse.
This commit is contained in:
parent
85e4e54452
commit
a8429d7610
|
@ -16,4 +16,5 @@ SUBDIRS = \
|
|||
$(XSDL_SUBDIRS) \
|
||||
$(FBDEV_SUBDIRS) \
|
||||
$(VESA_SUBDIRS) \
|
||||
ati
|
||||
ati \
|
||||
fake
|
||||
|
|
28
hw/kdrive/fake/Makefile.am
Normal file
28
hw/kdrive/fake/Makefile.am
Normal file
|
@ -0,0 +1,28 @@
|
|||
INCLUDES = \
|
||||
@KDRIVE_INCS@ \
|
||||
@XSERVER_CFLAGS@
|
||||
|
||||
noinst_LIBRARIES = libfake.a
|
||||
|
||||
bin_PROGRAMS = Xfake
|
||||
|
||||
libfake_a_SOURCES = \
|
||||
fake.c \
|
||||
kbd.c \
|
||||
os.c \
|
||||
mouse.c \
|
||||
fake.h
|
||||
|
||||
Xfake_SOURCES = \
|
||||
fakeinit.c
|
||||
|
||||
Xfake_LDADD = \
|
||||
libfake.a \
|
||||
@KDRIVE_LIBS@ \
|
||||
@XSERVER_LIBS@ \
|
||||
$(TSLIB_FLAG)
|
||||
|
||||
Xfake_DEPENDENCIES = \
|
||||
libfake.a \
|
||||
@KDRIVE_LIBS@
|
||||
|
494
hw/kdrive/fake/fake.c
Normal file
494
hw/kdrive/fake/fake.c
Normal file
|
@ -0,0 +1,494 @@
|
|||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2004 Keith Packard
|
||||
*
|
||||
* 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, and that the name of Keith Packard not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Keith Packard makes no
|
||||
* representations about the suitability of this software for any purpose. It
|
||||
* is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include "fake.h"
|
||||
|
||||
extern int KdTsPhyScreen;
|
||||
|
||||
Bool
|
||||
fakeInitialize (KdCardInfo *card, FakePriv *priv)
|
||||
{
|
||||
priv->base = 0;
|
||||
priv->bytes_per_line = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeCardInit (KdCardInfo *card)
|
||||
{
|
||||
FakePriv *priv;
|
||||
|
||||
priv = (FakePriv *) xalloc (sizeof (FakePriv));
|
||||
if (!priv)
|
||||
return FALSE;
|
||||
|
||||
if (!fakeInitialize (card, priv))
|
||||
{
|
||||
xfree (priv);
|
||||
return FALSE;
|
||||
}
|
||||
card->driver = priv;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static Bool
|
||||
fakeModeSupported (KdScreenInfo *screen,
|
||||
const KdMonitorTiming *t)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeScreenInitialize (KdScreenInfo *screen, FakeScrPriv *scrpriv)
|
||||
{
|
||||
const KdMonitorTiming *t;
|
||||
|
||||
if (!screen->width || !screen->height)
|
||||
{
|
||||
screen->width = 1024;
|
||||
screen->height = 768;
|
||||
screen->rate = 72;
|
||||
}
|
||||
if (!screen->fb[0].depth)
|
||||
screen->fb[0].depth = 16;
|
||||
|
||||
t = KdFindMode (screen, fakeModeSupported);
|
||||
screen->rate = t->rate;
|
||||
screen->width = t->horizontal;
|
||||
screen->height = t->vertical;
|
||||
|
||||
if (screen->fb[0].depth <= 8)
|
||||
{
|
||||
screen->fb[0].visuals = ((1 << StaticGray) |
|
||||
(1 << GrayScale) |
|
||||
(1 << StaticColor) |
|
||||
(1 << PseudoColor) |
|
||||
(1 << TrueColor) |
|
||||
(1 << DirectColor));
|
||||
}
|
||||
else
|
||||
{
|
||||
screen->fb[0].visuals = (1 << TrueColor);
|
||||
#define Mask(o,l) (((1 << l) - 1) << o)
|
||||
if (screen->fb[0].depth <= 15)
|
||||
{
|
||||
screen->fb[0].depth = 15;
|
||||
screen->fb[0].bitsPerPixel = 16;
|
||||
screen->fb[0].redMask = Mask (10, 5);
|
||||
screen->fb[0].greenMask = Mask (5, 5);
|
||||
screen->fb[0].blueMask = Mask (0, 5);
|
||||
}
|
||||
else if (screen->fb[0].depth <= 16)
|
||||
{
|
||||
screen->fb[0].depth = 16;
|
||||
screen->fb[0].bitsPerPixel = 16;
|
||||
screen->fb[0].redMask = Mask (11, 5);
|
||||
screen->fb[0].greenMask = Mask (5, 6);
|
||||
screen->fb[0].blueMask = Mask (0, 5);
|
||||
}
|
||||
else
|
||||
{
|
||||
screen->fb[0].depth = 24;
|
||||
screen->fb[0].bitsPerPixel = 32;
|
||||
screen->fb[0].redMask = Mask (16, 8);
|
||||
screen->fb[0].greenMask = Mask (8, 8);
|
||||
screen->fb[0].blueMask = Mask (0, 8);
|
||||
}
|
||||
}
|
||||
|
||||
scrpriv->randr = screen->randr;
|
||||
|
||||
return fakeMapFramebuffer (screen);
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeScreenInit (KdScreenInfo *screen)
|
||||
{
|
||||
FakeScrPriv *scrpriv;
|
||||
|
||||
scrpriv = xalloc (sizeof (FakeScrPriv));
|
||||
if (!scrpriv)
|
||||
return FALSE;
|
||||
memset (scrpriv, '\0', sizeof (FakeScrPriv));
|
||||
screen->driver = scrpriv;
|
||||
if (!fakeScreenInitialize (screen, scrpriv))
|
||||
{
|
||||
screen->driver = 0;
|
||||
xfree (scrpriv);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void *
|
||||
fakeWindowLinear (ScreenPtr pScreen,
|
||||
CARD32 row,
|
||||
CARD32 offset,
|
||||
int mode,
|
||||
CARD32 *size,
|
||||
void *closure)
|
||||
{
|
||||
KdScreenPriv(pScreen);
|
||||
FakePriv *priv = pScreenPriv->card->driver;
|
||||
|
||||
if (!pScreenPriv->enabled)
|
||||
return 0;
|
||||
*size = priv->bytes_per_line;
|
||||
return priv->base + row * priv->bytes_per_line;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeMapFramebuffer (KdScreenInfo *screen)
|
||||
{
|
||||
FakeScrPriv *scrpriv = screen->driver;
|
||||
KdMouseMatrix m;
|
||||
FakePriv *priv = screen->card->driver;
|
||||
|
||||
if (scrpriv->randr != RR_Rotate_0)
|
||||
scrpriv->shadow = TRUE;
|
||||
else
|
||||
scrpriv->shadow = FALSE;
|
||||
|
||||
KdComputeMouseMatrix (&m, scrpriv->randr, screen->width, screen->height);
|
||||
|
||||
KdSetMouseMatrix (&m);
|
||||
|
||||
priv->bytes_per_line = ((screen->width * screen->fb[0].bitsPerPixel + 31) >> 5) << 2;
|
||||
if (priv->base)
|
||||
free (priv->base);
|
||||
priv->base = malloc (priv->bytes_per_line * screen->height);
|
||||
screen->memory_base = (CARD8 *) (priv->base);
|
||||
screen->memory_size = 0;
|
||||
screen->off_screen_base = 0;
|
||||
|
||||
if (scrpriv->shadow)
|
||||
{
|
||||
if (!KdShadowFbAlloc (screen, 0,
|
||||
scrpriv->randr & (RR_Rotate_90|RR_Rotate_270)))
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
screen->fb[0].byteStride = priv->bytes_per_line;
|
||||
screen->fb[0].pixelStride = (priv->bytes_per_line * 8/
|
||||
screen->fb[0].bitsPerPixel);
|
||||
screen->fb[0].frameBuffer = (CARD8 *) (priv->base);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
fakeSetScreenSizes (ScreenPtr pScreen)
|
||||
{
|
||||
KdScreenPriv(pScreen);
|
||||
KdScreenInfo *screen = pScreenPriv->screen;
|
||||
FakeScrPriv *scrpriv = screen->driver;
|
||||
|
||||
if (scrpriv->randr & (RR_Rotate_0|RR_Rotate_180))
|
||||
{
|
||||
pScreen->width = screen->width;
|
||||
pScreen->height = screen->height;
|
||||
pScreen->mmWidth = screen->width_mm;
|
||||
pScreen->mmHeight = screen->height_mm;
|
||||
}
|
||||
else
|
||||
{
|
||||
pScreen->width = screen->width;
|
||||
pScreen->height = screen->height;
|
||||
pScreen->mmWidth = screen->height_mm;
|
||||
pScreen->mmHeight = screen->width_mm;
|
||||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeUnmapFramebuffer (KdScreenInfo *screen)
|
||||
{
|
||||
FakePriv *priv = screen->card->driver;
|
||||
KdShadowFbFree (screen, 0);
|
||||
if (priv->base)
|
||||
{
|
||||
free (priv->base);
|
||||
priv->base = 0;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeSetShadow (ScreenPtr pScreen)
|
||||
{
|
||||
KdScreenPriv(pScreen);
|
||||
KdScreenInfo *screen = pScreenPriv->screen;
|
||||
FakeScrPriv *scrpriv = screen->driver;
|
||||
ShadowUpdateProc update;
|
||||
ShadowWindowProc window;
|
||||
|
||||
window = fakeWindowLinear;
|
||||
update = 0;
|
||||
if (scrpriv->randr)
|
||||
update = shadowUpdateRotatePacked;
|
||||
else
|
||||
update = shadowUpdatePacked;
|
||||
return KdShadowSet (pScreen, scrpriv->randr, update, window);
|
||||
}
|
||||
|
||||
|
||||
#ifdef RANDR
|
||||
Bool
|
||||
fakeRandRGetInfo (ScreenPtr pScreen, Rotation *rotations)
|
||||
{
|
||||
KdScreenPriv(pScreen);
|
||||
KdScreenInfo *screen = pScreenPriv->screen;
|
||||
FakeScrPriv *scrpriv = screen->driver;
|
||||
RRScreenSizePtr pSize;
|
||||
Rotation randr;
|
||||
int n;
|
||||
|
||||
*rotations = RR_Rotate_All|RR_Reflect_All;
|
||||
|
||||
for (n = 0; n < pScreen->numDepths; n++)
|
||||
if (pScreen->allowedDepths[n].numVids)
|
||||
break;
|
||||
if (n == pScreen->numDepths)
|
||||
return FALSE;
|
||||
|
||||
pSize = RRRegisterSize (pScreen,
|
||||
screen->width,
|
||||
screen->height,
|
||||
screen->width_mm,
|
||||
screen->height_mm);
|
||||
|
||||
randr = KdSubRotation (scrpriv->randr, screen->randr);
|
||||
|
||||
RRSetCurrentConfig (pScreen, randr, 0, pSize);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeRandRSetConfig (ScreenPtr pScreen,
|
||||
Rotation randr,
|
||||
int rate,
|
||||
RRScreenSizePtr pSize)
|
||||
{
|
||||
KdScreenPriv(pScreen);
|
||||
KdScreenInfo *screen = pScreenPriv->screen;
|
||||
FakeScrPriv *scrpriv = screen->driver;
|
||||
Bool wasEnabled = pScreenPriv->enabled;
|
||||
FakeScrPriv oldscr;
|
||||
int oldwidth;
|
||||
int oldheight;
|
||||
int oldmmwidth;
|
||||
int oldmmheight;
|
||||
int newwidth, newheight;
|
||||
|
||||
if (screen->randr & (RR_Rotate_0|RR_Rotate_180))
|
||||
{
|
||||
newwidth = pSize->width;
|
||||
newheight = pSize->height;
|
||||
}
|
||||
else
|
||||
{
|
||||
newwidth = pSize->height;
|
||||
newheight = pSize->width;
|
||||
}
|
||||
|
||||
if (wasEnabled)
|
||||
KdDisableScreen (pScreen);
|
||||
|
||||
oldscr = *scrpriv;
|
||||
|
||||
oldwidth = screen->width;
|
||||
oldheight = screen->height;
|
||||
oldmmwidth = pScreen->mmWidth;
|
||||
oldmmheight = pScreen->mmHeight;
|
||||
|
||||
/*
|
||||
* Set new configuration
|
||||
*/
|
||||
|
||||
scrpriv->randr = KdAddRotation (screen->randr, randr);
|
||||
|
||||
KdOffscreenSwapOut (screen->pScreen);
|
||||
|
||||
fakeUnmapFramebuffer (screen);
|
||||
|
||||
if (!fakeMapFramebuffer (screen))
|
||||
goto bail4;
|
||||
|
||||
KdShadowUnset (screen->pScreen);
|
||||
|
||||
if (!fakeSetShadow (screen->pScreen))
|
||||
goto bail4;
|
||||
|
||||
fakeSetScreenSizes (screen->pScreen);
|
||||
|
||||
/*
|
||||
* Set frame buffer mapping
|
||||
*/
|
||||
(*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap (pScreen),
|
||||
pScreen->width,
|
||||
pScreen->height,
|
||||
screen->fb[0].depth,
|
||||
screen->fb[0].bitsPerPixel,
|
||||
screen->fb[0].byteStride,
|
||||
screen->fb[0].frameBuffer);
|
||||
|
||||
/* set the subpixel order */
|
||||
|
||||
KdSetSubpixelOrder (pScreen, scrpriv->randr);
|
||||
if (wasEnabled)
|
||||
KdEnableScreen (pScreen);
|
||||
|
||||
return TRUE;
|
||||
|
||||
bail4:
|
||||
fakeUnmapFramebuffer (screen);
|
||||
*scrpriv = oldscr;
|
||||
(void) fakeMapFramebuffer (screen);
|
||||
pScreen->width = oldwidth;
|
||||
pScreen->height = oldheight;
|
||||
pScreen->mmWidth = oldmmwidth;
|
||||
pScreen->mmHeight = oldmmheight;
|
||||
|
||||
if (wasEnabled)
|
||||
KdEnableScreen (pScreen);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeRandRInit (ScreenPtr pScreen)
|
||||
{
|
||||
rrScrPrivPtr pScrPriv;
|
||||
|
||||
if (!RRScreenInit (pScreen))
|
||||
return FALSE;
|
||||
|
||||
pScrPriv = rrGetScrPriv(pScreen);
|
||||
pScrPriv->rrGetInfo = fakeRandRGetInfo;
|
||||
pScrPriv->rrSetConfig = fakeRandRSetConfig;
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
Bool
|
||||
fakeCreateColormap (ColormapPtr pmap)
|
||||
{
|
||||
return fbInitializeColormap (pmap);
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeInitScreen (ScreenPtr pScreen)
|
||||
{
|
||||
#ifdef TOUCHSCREEN
|
||||
KdTsPhyScreen = pScreen->myNum;
|
||||
#endif
|
||||
|
||||
pScreen->CreateColormap = fakeCreateColormap;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeFinishInitScreen (ScreenPtr pScreen)
|
||||
{
|
||||
if (!shadowSetup (pScreen))
|
||||
return FALSE;
|
||||
|
||||
#ifdef RANDR
|
||||
if (!fakeRandRInit (pScreen))
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
fakeCreateResources (ScreenPtr pScreen)
|
||||
{
|
||||
return fakeSetShadow (pScreen);
|
||||
}
|
||||
|
||||
void
|
||||
fakePreserve (KdCardInfo *card)
|
||||
{
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeEnable (ScreenPtr pScreen)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fakeDPMS (ScreenPtr pScreen, int mode)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
fakeDisable (ScreenPtr pScreen)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
fakeRestore (KdCardInfo *card)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
fakeScreenFini (KdScreenInfo *screen)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
fakeCardFini (KdCardInfo *card)
|
||||
{
|
||||
FakePriv *priv = card->driver;
|
||||
|
||||
if (priv->base)
|
||||
free (priv->base);
|
||||
xfree (priv);
|
||||
}
|
||||
|
||||
void
|
||||
fakeGetColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
pdefs->red = 0;
|
||||
pdefs->green = 0;
|
||||
pdefs->blue = 0;
|
||||
pdefs++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fakePutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
|
||||
{
|
||||
}
|
139
hw/kdrive/fake/fake.h
Normal file
139
hw/kdrive/fake/fake.h
Normal file
|
@ -0,0 +1,139 @@
|
|||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2004 Keith Packard
|
||||
*
|
||||
* 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, and that the name of Keith Packard not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Keith Packard makes no
|
||||
* representations about the suitability of this software for any purpose. It
|
||||
* is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _FBDEV_H_
|
||||
#define _FBDEV_H_
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include "kdrive.h"
|
||||
|
||||
#ifdef RANDR
|
||||
#include "randrstr.h"
|
||||
#endif
|
||||
|
||||
typedef struct _fakePriv {
|
||||
CARD8 *base;
|
||||
int bytes_per_line;
|
||||
} FakePriv;
|
||||
|
||||
typedef struct _fakeScrPriv {
|
||||
Rotation randr;
|
||||
Bool shadow;
|
||||
PixmapPtr pShadow;
|
||||
} FakeScrPriv;
|
||||
|
||||
extern KdCardFuncs fakeFuncs;
|
||||
|
||||
Bool
|
||||
fakeInitialize (KdCardInfo *card, FakePriv *priv);
|
||||
|
||||
Bool
|
||||
fakeCardInit (KdCardInfo *card);
|
||||
|
||||
Bool
|
||||
fakeScreenInit (KdScreenInfo *screen);
|
||||
|
||||
Bool
|
||||
fakeScreenInitialize (KdScreenInfo *screen, FakeScrPriv *scrpriv);
|
||||
|
||||
Bool
|
||||
fakeInitScreen (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
fakeFinishInitScreen (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
fakeCreateResources (ScreenPtr pScreen);
|
||||
|
||||
void
|
||||
fakePreserve (KdCardInfo *card);
|
||||
|
||||
Bool
|
||||
fakeEnable (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
fakeDPMS (ScreenPtr pScreen, int mode);
|
||||
|
||||
void
|
||||
fakeDisable (ScreenPtr pScreen);
|
||||
|
||||
void
|
||||
fakeRestore (KdCardInfo *card);
|
||||
|
||||
void
|
||||
fakeScreenFini (KdScreenInfo *screen);
|
||||
|
||||
void
|
||||
fakeCardFini (KdCardInfo *card);
|
||||
|
||||
void
|
||||
fakeGetColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs);
|
||||
|
||||
void
|
||||
fakePutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs);
|
||||
|
||||
Bool
|
||||
fakeMapFramebuffer (KdScreenInfo *screen);
|
||||
|
||||
void *
|
||||
fakeWindowLinear (ScreenPtr pScreen,
|
||||
CARD32 row,
|
||||
CARD32 offset,
|
||||
int mode,
|
||||
CARD32 *size,
|
||||
void *closure);
|
||||
|
||||
void
|
||||
fakeSetScreenSizes (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
fakeUnmapFramebuffer (KdScreenInfo *screen);
|
||||
|
||||
Bool
|
||||
fakeSetShadow (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
fakeCreateColormap (ColormapPtr pmap);
|
||||
|
||||
#ifdef RANDR
|
||||
Bool
|
||||
fakeRandRGetInfo (ScreenPtr pScreen, Rotation *rotations);
|
||||
|
||||
Bool
|
||||
fakeRandRSetConfig (ScreenPtr pScreen,
|
||||
Rotation randr,
|
||||
int rate,
|
||||
RRScreenSizePtr pSize);
|
||||
Bool
|
||||
fakeRandRInit (ScreenPtr pScreen);
|
||||
|
||||
#endif
|
||||
|
||||
extern KdMouseFuncs FakeMouseFuncs;
|
||||
|
||||
extern KdKeyboardFuncs FakeKeyboardFuncs;
|
||||
|
||||
extern KdOsFuncs FakeOsFuncs;
|
||||
|
||||
#endif /* _FBDEV_H_ */
|
96
hw/kdrive/fake/fakeinit.c
Normal file
96
hw/kdrive/fake/fakeinit.c
Normal file
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2004 Keith Packard
|
||||
*
|
||||
* 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, and that the name of Keith Packard not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Keith Packard makes no
|
||||
* representations about the suitability of this software for any purpose. It
|
||||
* is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include "fake.h"
|
||||
|
||||
void
|
||||
InitCard (char *name)
|
||||
{
|
||||
KdCardAttr attr;
|
||||
|
||||
KdCardInfoAdd (&fakeFuncs, &attr, 0);
|
||||
}
|
||||
|
||||
void
|
||||
InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
|
||||
{
|
||||
KdInitOutput (pScreenInfo, argc, argv);
|
||||
}
|
||||
|
||||
void
|
||||
InitInput (int argc, char **argv)
|
||||
{
|
||||
KdInitInput (&FakeMouseFuncs, &FakeKeyboardFuncs);
|
||||
}
|
||||
|
||||
void
|
||||
ddxUseMsg (void)
|
||||
{
|
||||
KdUseMsg();
|
||||
}
|
||||
|
||||
int
|
||||
ddxProcessArgument (int argc, char **argv, int i)
|
||||
{
|
||||
return KdProcessArgument (argc, argv, i);
|
||||
}
|
||||
|
||||
void
|
||||
OsVendorInit (void)
|
||||
{
|
||||
KdOsInit (&FakeOsFuncs);
|
||||
}
|
||||
|
||||
KdCardFuncs fakeFuncs = {
|
||||
fakeCardInit, /* cardinit */
|
||||
fakeScreenInit, /* scrinit */
|
||||
fakeInitScreen, /* initScreen */
|
||||
fakeFinishInitScreen, /* finishInitScreen */
|
||||
fakeCreateResources, /* createRes */
|
||||
fakePreserve, /* preserve */
|
||||
fakeEnable, /* enable */
|
||||
fakeDPMS, /* dpms */
|
||||
fakeDisable, /* disable */
|
||||
fakeRestore, /* restore */
|
||||
fakeScreenFini, /* scrfini */
|
||||
fakeCardFini, /* cardfini */
|
||||
|
||||
0, /* initCursor */
|
||||
0, /* enableCursor */
|
||||
0, /* disableCursor */
|
||||
0, /* finiCursor */
|
||||
0, /* recolorCursor */
|
||||
|
||||
0, /* initAccel */
|
||||
0, /* enableAccel */
|
||||
0, /* syncAccel */
|
||||
0, /* disableAccel */
|
||||
0, /* finiAccel */
|
||||
|
||||
fakeGetColors, /* getColors */
|
||||
fakePutColors, /* putColors */
|
||||
};
|
195
hw/kdrive/fake/kbd.c
Normal file
195
hw/kdrive/fake/kbd.c
Normal file
|
@ -0,0 +1,195 @@
|
|||
/*
|
||||
* Id: kbd.c,v 1.1 1999/11/02 18:39:28 keithp Exp $
|
||||
*
|
||||
* Copyright © 1999 Keith Packard
|
||||
*
|
||||
* 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, and that the name of Keith Packard not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Keith Packard makes no
|
||||
* representations about the suitability of this software for any purpose. It
|
||||
* is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* $RCSId: xc/programs/Xserver/hw/kdrive/fake/kbd.c,v 1.1 1999/11/19 13:53:53 hohndel Exp $ */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include "fake.h"
|
||||
#include "kkeymap.h"
|
||||
#include <X11/keysym.h>
|
||||
|
||||
#define FAKE_WIDTH 2
|
||||
|
||||
KeySym FakeKeymap[] = {
|
||||
/* 1 8 */ XK_Escape, NoSymbol,
|
||||
/* 2 9 */ XK_1, XK_exclam,
|
||||
/* 3 10 */ XK_2, XK_at,
|
||||
/* 4 11 */ XK_3, XK_numbersign,
|
||||
/* 5 12 */ XK_4, XK_dollar,
|
||||
/* 6 13 */ XK_5, XK_percent,
|
||||
/* 7 14 */ XK_6, XK_asciicircum,
|
||||
/* 8 15 */ XK_7, XK_ampersand,
|
||||
/* 9 16 */ XK_8, XK_asterisk,
|
||||
/* 10 17 */ XK_9, XK_parenleft,
|
||||
/* 11 18 */ XK_0, XK_parenright,
|
||||
/* 12 19 */ XK_minus, XK_underscore,
|
||||
/* 13 20 */ XK_equal, XK_plus,
|
||||
/* 14 21 */ XK_BackSpace, NoSymbol,
|
||||
/* 15 22 */ XK_Tab, NoSymbol,
|
||||
/* 16 23 */ XK_Q, NoSymbol,
|
||||
/* 17 24 */ XK_W, NoSymbol,
|
||||
/* 18 25 */ XK_E, NoSymbol,
|
||||
/* 19 26 */ XK_R, NoSymbol,
|
||||
/* 20 27 */ XK_T, NoSymbol,
|
||||
/* 21 28 */ XK_Y, NoSymbol,
|
||||
/* 22 29 */ XK_U, NoSymbol,
|
||||
/* 23 30 */ XK_I, NoSymbol,
|
||||
/* 24 31 */ XK_O, NoSymbol,
|
||||
/* 25 32 */ XK_P, NoSymbol,
|
||||
/* 26 33 */ XK_bracketleft, XK_braceleft,
|
||||
/* 27 34 */ XK_bracketright, XK_braceright,
|
||||
/* 28 35 */ XK_Return, NoSymbol,
|
||||
/* 29 36 */ XK_Control_L, NoSymbol,
|
||||
/* 30 37 */ XK_A, NoSymbol,
|
||||
/* 31 38 */ XK_S, NoSymbol,
|
||||
/* 32 39 */ XK_D, NoSymbol,
|
||||
/* 33 40 */ XK_F, NoSymbol,
|
||||
/* 34 41 */ XK_G, NoSymbol,
|
||||
/* 35 42 */ XK_H, NoSymbol,
|
||||
/* 36 43 */ XK_J, NoSymbol,
|
||||
/* 37 44 */ XK_K, NoSymbol,
|
||||
/* 38 45 */ XK_L, NoSymbol,
|
||||
/* 39 46 */ XK_semicolon, XK_colon,
|
||||
/* 40 47 */ XK_apostrophe, XK_quotedbl,
|
||||
/* 41 48 */ XK_grave, XK_asciitilde,
|
||||
/* 42 49 */ XK_Shift_L, NoSymbol,
|
||||
/* 43 50 */ XK_backslash, XK_bar,
|
||||
/* 44 51 */ XK_Z, NoSymbol,
|
||||
/* 45 52 */ XK_X, NoSymbol,
|
||||
/* 46 53 */ XK_C, NoSymbol,
|
||||
/* 47 54 */ XK_V, NoSymbol,
|
||||
/* 48 55 */ XK_B, NoSymbol,
|
||||
/* 49 56 */ XK_N, NoSymbol,
|
||||
/* 50 57 */ XK_M, NoSymbol,
|
||||
/* 51 58 */ XK_comma, XK_less,
|
||||
/* 52 59 */ XK_period, XK_greater,
|
||||
/* 53 60 */ XK_slash, XK_question,
|
||||
/* 54 61 */ XK_Shift_R, NoSymbol,
|
||||
/* 55 62 */ XK_KP_Multiply, NoSymbol,
|
||||
/* 56 63 */ XK_Alt_L, XK_Meta_L,
|
||||
/* 57 64 */ XK_space, NoSymbol,
|
||||
/* 58 65 */ XK_Caps_Lock, NoSymbol,
|
||||
/* 59 66 */ XK_F1, NoSymbol,
|
||||
/* 60 67 */ XK_F2, NoSymbol,
|
||||
/* 61 68 */ XK_F3, NoSymbol,
|
||||
/* 62 69 */ XK_F4, NoSymbol,
|
||||
/* 63 70 */ XK_F5, NoSymbol,
|
||||
/* 64 71 */ XK_F6, NoSymbol,
|
||||
/* 65 72 */ XK_F7, NoSymbol,
|
||||
/* 66 73 */ XK_F8, NoSymbol,
|
||||
/* 67 74 */ XK_F9, NoSymbol,
|
||||
/* 68 75 */ XK_F10, NoSymbol,
|
||||
/* 69 76 */ XK_Break, XK_Pause,
|
||||
/* 70 77 */ XK_Scroll_Lock, NoSymbol,
|
||||
/* 71 78 */ XK_KP_Home, XK_KP_7,
|
||||
/* 72 79 */ XK_KP_Up, XK_KP_8,
|
||||
/* 73 80 */ XK_KP_Page_Up, XK_KP_9,
|
||||
/* 74 81 */ XK_KP_Subtract, NoSymbol,
|
||||
/* 75 82 */ XK_KP_Left, XK_KP_4,
|
||||
/* 76 83 */ XK_KP_5, NoSymbol,
|
||||
/* 77 84 */ XK_KP_Right, XK_KP_6,
|
||||
/* 78 85 */ XK_KP_Add, NoSymbol,
|
||||
/* 79 86 */ XK_KP_End, XK_KP_1,
|
||||
/* 80 87 */ XK_KP_Down, XK_KP_2,
|
||||
/* 81 88 */ XK_KP_Page_Down, XK_KP_3,
|
||||
/* 82 89 */ XK_KP_Insert, XK_KP_0,
|
||||
/* 83 90 */ XK_KP_Delete, XK_KP_Decimal,
|
||||
/* 84 91 */ NoSymbol, NoSymbol,
|
||||
/* 85 92 */ NoSymbol, NoSymbol,
|
||||
/* 86 93 */ NoSymbol, NoSymbol,
|
||||
/* 87 94 */ XK_F11, NoSymbol,
|
||||
/* 88 95 */ XK_F12, NoSymbol,
|
||||
|
||||
/* These are remapped from the extended set (using ExtendMap) */
|
||||
|
||||
/* 89 96 */ XK_Control_R, NoSymbol,
|
||||
/* 90 97 */ XK_KP_Enter, NoSymbol,
|
||||
/* 91 98 */ XK_KP_Divide, NoSymbol,
|
||||
/* 92 99 */ XK_Sys_Req, XK_Print,
|
||||
/* 93 100 */ XK_Alt_R, XK_Meta_R,
|
||||
/* 94 101 */ XK_Num_Lock, NoSymbol,
|
||||
/* 95 102 */ XK_Home, NoSymbol,
|
||||
/* 96 103 */ XK_Up, NoSymbol,
|
||||
/* 97 104 */ XK_Page_Up, NoSymbol,
|
||||
/* 98 105 */ XK_Left, NoSymbol,
|
||||
/* 99 106 */ XK_Right, NoSymbol,
|
||||
/* 100 107 */ XK_End, NoSymbol,
|
||||
/* 101 108 */ XK_Down, NoSymbol,
|
||||
/* 102 109 */ XK_Page_Down, NoSymbol,
|
||||
/* 103 110 */ XK_Insert, NoSymbol,
|
||||
/* 104 111 */ XK_Delete, NoSymbol,
|
||||
/* 105 112 */ XK_Super_L, NoSymbol,
|
||||
/* 106 113 */ XK_Super_R, NoSymbol,
|
||||
/* 107 114 */ XK_Menu, NoSymbol,
|
||||
|
||||
/* 108 115 */ XK_Next, NoSymbol, /* right button on side */
|
||||
/* 109 116 */ XK_Prior, NoSymbol, /* left button on side */
|
||||
/* 110 117 */ XK_Up, NoSymbol, /* joypad */
|
||||
/* 111 118 */ XK_Down, NoSymbol,
|
||||
/* 112 119 */ XK_Left, NoSymbol,
|
||||
/* 113 120 */ XK_Right, NoSymbol,
|
||||
/* 114 121 */ NoSymbol, NoSymbol, /* left near speaker */
|
||||
/* 115 122 */ NoSymbol, NoSymbol, /* right near speaker */
|
||||
/* 116 123 */ NoSymbol, NoSymbol, /* tiny button */
|
||||
};
|
||||
|
||||
static void
|
||||
FakeKeyboardLoad (void)
|
||||
{
|
||||
kdMinScanCode = 1;
|
||||
kdKeymapWidth = FAKE_WIDTH;
|
||||
kdMaxScanCode = (sizeof (FakeKeymap) / sizeof (FakeKeymap[0])) / FAKE_WIDTH;
|
||||
memcpy (kdKeymap, FakeKeymap, sizeof (FakeKeymap));
|
||||
}
|
||||
|
||||
static int
|
||||
FakeKeyboardInit (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
FakeKeyboardFini (void)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
FakeKeyboardLeds (int leds)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
FakeKeyboardBell (int volume, int frequency, int duration)
|
||||
{
|
||||
}
|
||||
|
||||
KdKeyboardFuncs FakeKeyboardFuncs = {
|
||||
FakeKeyboardLoad,
|
||||
FakeKeyboardInit,
|
||||
FakeKeyboardLeds,
|
||||
FakeKeyboardBell,
|
||||
FakeKeyboardFini,
|
||||
0,
|
||||
};
|
53
hw/kdrive/fake/mouse.c
Normal file
53
hw/kdrive/fake/mouse.c
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2004 Keith Packard
|
||||
*
|
||||
* 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, and that the name of Keith Packard not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Keith Packard makes no
|
||||
* representations about the suitability of this software for any purpose. It
|
||||
* is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#define NEED_EVENTS
|
||||
#include <errno.h>
|
||||
#include <termios.h>
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xproto.h>
|
||||
#include <X11/Xpoll.h>
|
||||
#include "inputstr.h"
|
||||
#include "scrnintstr.h"
|
||||
#include "kdrive.h"
|
||||
|
||||
static Bool
|
||||
MouseInit (void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
MouseFini (void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
KdMouseFuncs FakeMouseFuncs = {
|
||||
MouseInit,
|
||||
MouseFini,
|
||||
};
|
65
hw/kdrive/fake/os.c
Normal file
65
hw/kdrive/fake/os.c
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2004 Keith Packard
|
||||
*
|
||||
* 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, and that the name of Keith Packard not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Keith Packard makes no
|
||||
* representations about the suitability of this software for any purpose. It
|
||||
* is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include "fake.h"
|
||||
|
||||
static int
|
||||
FakeInit (void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
FakeEnable (void)
|
||||
{
|
||||
}
|
||||
|
||||
static Bool
|
||||
FakeSpecialKey (KeySym sym)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
FakeDisable (void)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
FakeFini (void)
|
||||
{
|
||||
}
|
||||
|
||||
KdOsFuncs FakeOsFuncs = {
|
||||
FakeInit,
|
||||
FakeEnable,
|
||||
FakeSpecialKey,
|
||||
FakeDisable,
|
||||
FakeFini,
|
||||
0
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user