1706f2543Smrg/* 2706f2543Smrg * Copyright � 1999 Keith Packard 3706f2543Smrg * 4706f2543Smrg * Permission to use, copy, modify, distribute, and sell this software and its 5706f2543Smrg * documentation for any purpose is hereby granted without fee, provided that 6706f2543Smrg * the above copyright notice appear in all copies and that both that 7706f2543Smrg * copyright notice and this permission notice appear in supporting 8706f2543Smrg * documentation, and that the name of Keith Packard not be used in 9706f2543Smrg * advertising or publicity pertaining to distribution of the software without 10706f2543Smrg * specific, written prior permission. Keith Packard makes no 11706f2543Smrg * representations about the suitability of this software for any purpose. It 12706f2543Smrg * is provided "as is" without express or implied warranty. 13706f2543Smrg * 14706f2543Smrg * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15706f2543Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16706f2543Smrg * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17706f2543Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18706f2543Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19706f2543Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20706f2543Smrg * PERFORMANCE OF THIS SOFTWARE. 21706f2543Smrg */ 22706f2543Smrg 23706f2543Smrg#ifndef _KDRIVE_H_ 24706f2543Smrg#define _KDRIVE_H_ 25706f2543Smrg 26706f2543Smrg#include <stdio.h> 27706f2543Smrg#include <string.h> 28706f2543Smrg#include <X11/X.h> 29706f2543Smrg#include <X11/Xproto.h> 30706f2543Smrg#include <X11/Xos.h> 31706f2543Smrg#include "scrnintstr.h" 32706f2543Smrg#include "pixmapstr.h" 33706f2543Smrg#include "windowstr.h" 34706f2543Smrg#include "servermd.h" 35706f2543Smrg#include "mibstore.h" 36706f2543Smrg#include "colormapst.h" 37706f2543Smrg#include "gcstruct.h" 38706f2543Smrg#include "input.h" 39706f2543Smrg#include "mipointer.h" 40706f2543Smrg#include "mi.h" 41706f2543Smrg#include "dix.h" 42706f2543Smrg#include "fb.h" 43706f2543Smrg#include "fboverlay.h" 44706f2543Smrg#include "shadow.h" 45706f2543Smrg#include "randrstr.h" 46706f2543Smrg#include "globals.h" 47706f2543Smrg 48706f2543Smrg#include "xkbstr.h" 49706f2543Smrg 50706f2543Smrg#define KD_DPMS_NORMAL 0 51706f2543Smrg#define KD_DPMS_STANDBY 1 52706f2543Smrg#define KD_DPMS_SUSPEND 2 53706f2543Smrg#define KD_DPMS_POWERDOWN 3 54706f2543Smrg#define KD_DPMS_MAX KD_DPMS_POWERDOWN 55706f2543Smrg 56706f2543Smrg#define Status int 57706f2543Smrg 58706f2543Smrgtypedef struct _KdCardInfo { 59706f2543Smrg struct _KdCardFuncs *cfuncs; 60706f2543Smrg void *closure; 61706f2543Smrg void *driver; 62706f2543Smrg struct _KdScreenInfo *screenList; 63706f2543Smrg int selected; 64706f2543Smrg struct _KdCardInfo *next; 65706f2543Smrg} KdCardInfo; 66706f2543Smrg 67706f2543Smrgextern KdCardInfo *kdCardInfo; 68706f2543Smrg 69706f2543Smrg/* 70706f2543Smrg * Configuration information per X screen 71706f2543Smrg */ 72706f2543Smrgtypedef struct _KdFrameBuffer { 73706f2543Smrg CARD8 *frameBuffer; 74706f2543Smrg int depth; 75706f2543Smrg int bitsPerPixel; 76706f2543Smrg int pixelStride; 77706f2543Smrg int byteStride; 78706f2543Smrg Bool shadow; 79706f2543Smrg unsigned long visuals; 80706f2543Smrg Pixel redMask, greenMask, blueMask; 81706f2543Smrg void *closure; 82706f2543Smrg} KdFrameBuffer; 83706f2543Smrg 84706f2543Smrg#define RR_Rotate_All (RR_Rotate_0|RR_Rotate_90|RR_Rotate_180|RR_Rotate_270) 85706f2543Smrg#define RR_Reflect_All (RR_Reflect_X|RR_Reflect_Y) 86706f2543Smrg 87706f2543Smrgtypedef struct _KdScreenInfo { 88706f2543Smrg struct _KdScreenInfo *next; 89706f2543Smrg KdCardInfo *card; 90706f2543Smrg ScreenPtr pScreen; 91706f2543Smrg void *driver; 92706f2543Smrg Rotation randr; /* rotation and reflection */ 93706f2543Smrg int width; 94706f2543Smrg int height; 95706f2543Smrg int rate; 96706f2543Smrg int width_mm; 97706f2543Smrg int height_mm; 98706f2543Smrg int subpixel_order; 99706f2543Smrg Bool dumb; 100706f2543Smrg Bool softCursor; 101706f2543Smrg int mynum; 102706f2543Smrg DDXPointRec origin; 103706f2543Smrg KdFrameBuffer fb; 104706f2543Smrg} KdScreenInfo; 105706f2543Smrg 106706f2543Smrgtypedef struct _KdCardFuncs { 107706f2543Smrg Bool (*cardinit) (KdCardInfo *); /* detect and map device */ 108706f2543Smrg Bool (*scrinit) (KdScreenInfo *);/* initialize screen information */ 109706f2543Smrg Bool (*initScreen) (ScreenPtr); /* initialize ScreenRec */ 110706f2543Smrg Bool (*finishInitScreen) (ScreenPtr pScreen); 111706f2543Smrg Bool (*createRes) (ScreenPtr); /* create screen resources */ 112706f2543Smrg void (*preserve) (KdCardInfo *); /* save graphics card state */ 113706f2543Smrg Bool (*enable) (ScreenPtr); /* set up for rendering */ 114706f2543Smrg Bool (*dpms) (ScreenPtr, int); /* set DPMS screen saver */ 115706f2543Smrg void (*disable) (ScreenPtr); /* turn off rendering */ 116706f2543Smrg void (*restore) (KdCardInfo *); /* restore graphics card state */ 117706f2543Smrg void (*scrfini) (KdScreenInfo *);/* close down screen */ 118706f2543Smrg void (*cardfini) (KdCardInfo *); /* close down */ 119706f2543Smrg 120706f2543Smrg Bool (*initCursor) (ScreenPtr); /* detect and map cursor */ 121706f2543Smrg void (*enableCursor) (ScreenPtr); /* enable cursor */ 122706f2543Smrg void (*disableCursor) (ScreenPtr); /* disable cursor */ 123706f2543Smrg void (*finiCursor) (ScreenPtr); /* close down */ 124706f2543Smrg void (*recolorCursor) (ScreenPtr, int, xColorItem *); 125706f2543Smrg 126706f2543Smrg Bool (*initAccel) (ScreenPtr); 127706f2543Smrg void (*enableAccel) (ScreenPtr); 128706f2543Smrg void (*disableAccel) (ScreenPtr); 129706f2543Smrg void (*finiAccel) (ScreenPtr); 130706f2543Smrg 131706f2543Smrg void (*getColors) (ScreenPtr, int, xColorItem *); 132706f2543Smrg void (*putColors) (ScreenPtr, int, xColorItem *); 133706f2543Smrg 134706f2543Smrg} KdCardFuncs; 135706f2543Smrg 136706f2543Smrg#define KD_MAX_PSEUDO_DEPTH 8 137706f2543Smrg#define KD_MAX_PSEUDO_SIZE (1 << KD_MAX_PSEUDO_DEPTH) 138706f2543Smrg 139706f2543Smrgtypedef struct { 140706f2543Smrg KdScreenInfo *screen; 141706f2543Smrg KdCardInfo *card; 142706f2543Smrg 143706f2543Smrg Bool enabled; 144706f2543Smrg Bool closed; 145706f2543Smrg int bytesPerPixel; 146706f2543Smrg 147706f2543Smrg int dpmsState; 148706f2543Smrg 149706f2543Smrg ColormapPtr pInstalledmap; /* current colormap */ 150706f2543Smrg xColorItem systemPalette[KD_MAX_PSEUDO_SIZE];/* saved windows colors */ 151706f2543Smrg 152706f2543Smrg CreateScreenResourcesProcPtr CreateScreenResources; 153706f2543Smrg CloseScreenProcPtr CloseScreen; 154706f2543Smrg} KdPrivScreenRec, *KdPrivScreenPtr; 155706f2543Smrg 156706f2543Smrgtypedef enum _kdPointerState { 157706f2543Smrg start, 158706f2543Smrg button_1_pend, 159706f2543Smrg button_1_down, 160706f2543Smrg button_2_down, 161706f2543Smrg button_3_pend, 162706f2543Smrg button_3_down, 163706f2543Smrg synth_2_down_13, 164706f2543Smrg synth_2_down_3, 165706f2543Smrg synth_2_down_1, 166706f2543Smrg num_input_states 167706f2543Smrg} KdPointerState; 168706f2543Smrg 169706f2543Smrg#define KD_MAX_BUTTON 32 170706f2543Smrg 171706f2543Smrg#define KD_KEYBOARD 1 172706f2543Smrg#define KD_MOUSE 2 173706f2543Smrg#define KD_TOUCHSCREEN 3 174706f2543Smrg 175706f2543Smrgtypedef struct _KdPointerInfo KdPointerInfo; 176706f2543Smrg 177706f2543Smrgtypedef struct _KdPointerDriver { 178706f2543Smrg char *name; 179706f2543Smrg Status (*Init) (KdPointerInfo *); 180706f2543Smrg Status (*Enable) (KdPointerInfo *); 181706f2543Smrg void (*Disable) (KdPointerInfo *); 182706f2543Smrg void (*Fini) (KdPointerInfo *); 183706f2543Smrg struct _KdPointerDriver *next; 184706f2543Smrg} KdPointerDriver; 185706f2543Smrg 186706f2543Smrgstruct _KdPointerInfo { 187706f2543Smrg DeviceIntPtr dixdev; 188706f2543Smrg char *name; 189706f2543Smrg char *path; 190706f2543Smrg char *protocol; 191706f2543Smrg InputOption *options; 192706f2543Smrg int inputClass; 193706f2543Smrg 194706f2543Smrg CARD8 map[KD_MAX_BUTTON + 1]; 195706f2543Smrg int nButtons; 196706f2543Smrg int nAxes; 197706f2543Smrg 198706f2543Smrg Bool emulateMiddleButton; 199706f2543Smrg unsigned long emulationTimeout; 200706f2543Smrg int emulationDx, emulationDy; 201706f2543Smrg 202706f2543Smrg Bool timeoutPending; 203706f2543Smrg KdPointerState mouseState; 204706f2543Smrg Bool eventHeld; 205706f2543Smrg struct { 206706f2543Smrg int type; 207706f2543Smrg int x; 208706f2543Smrg int y; 209706f2543Smrg int z; 210706f2543Smrg int flags; 211706f2543Smrg int absrel; 212706f2543Smrg } heldEvent; 213706f2543Smrg unsigned char buttonState; 214706f2543Smrg Bool transformCoordinates; 215706f2543Smrg int pressureThreshold; 216706f2543Smrg 217706f2543Smrg KdPointerDriver *driver; 218706f2543Smrg void *driverPrivate; 219706f2543Smrg 220706f2543Smrg struct _KdPointerInfo *next; 221706f2543Smrg}; 222706f2543Smrg 223706f2543Smrgextern int KdCurScreen; 224706f2543Smrg 225706f2543Smrgvoid KdAddPointerDriver (KdPointerDriver *driver); 226706f2543Smrgvoid KdRemovePointerDriver (KdPointerDriver *driver); 227706f2543SmrgKdPointerInfo *KdNewPointer (void); 228706f2543Smrgvoid KdFreePointer (KdPointerInfo *); 229706f2543Smrgint KdAddPointer (KdPointerInfo *ki); 230706f2543Smrgint KdAddConfigPointer (char *pointer); 231706f2543Smrgvoid KdRemovePointer (KdPointerInfo *ki); 232706f2543Smrg 233706f2543Smrg 234706f2543Smrg#define KD_KEY_COUNT 248 235706f2543Smrg#define KD_MIN_KEYCODE 8 236706f2543Smrg#define KD_MAX_KEYCODE 255 237706f2543Smrg#define KD_MAX_WIDTH 4 238706f2543Smrg#define KD_MAX_LENGTH (KD_MAX_KEYCODE - KD_MIN_KEYCODE + 1) 239706f2543Smrg 240706f2543Smrgtypedef struct { 241706f2543Smrg KeySym modsym; 242706f2543Smrg int modbit; 243706f2543Smrg} KdKeySymModsRec; 244706f2543Smrg 245706f2543Smrgtypedef struct _KdKeyboardInfo KdKeyboardInfo; 246706f2543Smrg 247706f2543Smrgtypedef struct _KdKeyboardDriver { 248706f2543Smrg char *name; 249706f2543Smrg Bool (*Init) (KdKeyboardInfo *); 250706f2543Smrg Bool (*Enable) (KdKeyboardInfo *); 251706f2543Smrg void (*Leds) (KdKeyboardInfo *, int); 252706f2543Smrg void (*Bell) (KdKeyboardInfo *, int, int, int); 253706f2543Smrg void (*Disable) (KdKeyboardInfo *); 254706f2543Smrg void (*Fini) (KdKeyboardInfo *); 255706f2543Smrg struct _KdKeyboardDriver *next; 256706f2543Smrg} KdKeyboardDriver; 257706f2543Smrg 258706f2543Smrgstruct _KdKeyboardInfo { 259706f2543Smrg struct _KdKeyboardInfo *next; 260706f2543Smrg DeviceIntPtr dixdev; 261706f2543Smrg void *closure; 262706f2543Smrg char *name; 263706f2543Smrg char *path; 264706f2543Smrg int inputClass; 265706f2543Smrg char *xkbRules; 266706f2543Smrg char *xkbModel; 267706f2543Smrg char *xkbLayout; 268706f2543Smrg char *xkbVariant; 269706f2543Smrg char *xkbOptions; 270706f2543Smrg int LockLed; 271706f2543Smrg 272706f2543Smrg int minScanCode; 273706f2543Smrg int maxScanCode; 274706f2543Smrg 275706f2543Smrg int leds; 276706f2543Smrg int bellPitch; 277706f2543Smrg int bellDuration; 278706f2543Smrg InputOption *options; 279706f2543Smrg 280706f2543Smrg KdKeyboardDriver *driver; 281706f2543Smrg void *driverPrivate; 282706f2543Smrg}; 283706f2543Smrg 284706f2543Smrgvoid KdAddKeyboardDriver (KdKeyboardDriver *driver); 285706f2543Smrgvoid KdRemoveKeyboardDriver (KdKeyboardDriver *driver); 286706f2543SmrgKdKeyboardInfo *KdNewKeyboard (void); 287706f2543Smrgvoid KdFreeKeyboard (KdKeyboardInfo *ki); 288706f2543Smrgint KdAddConfigKeyboard (char *pointer); 289706f2543Smrgint KdAddKeyboard (KdKeyboardInfo *ki); 290706f2543Smrgvoid KdRemoveKeyboard (KdKeyboardInfo *ki); 291706f2543Smrg 292706f2543Smrgtypedef struct _KdOsFuncs { 293706f2543Smrg int (*Init) (void); 294706f2543Smrg void (*Enable) (void); 295706f2543Smrg Bool (*SpecialKey) (KeySym); 296706f2543Smrg void (*Disable) (void); 297706f2543Smrg void (*Fini) (void); 298706f2543Smrg void (*pollEvents) (void); 299706f2543Smrg void (*Bell) (int, int, int); 300706f2543Smrg} KdOsFuncs; 301706f2543Smrg 302706f2543Smrgtypedef enum _KdSyncPolarity { 303706f2543Smrg KdSyncNegative, KdSyncPositive 304706f2543Smrg} KdSyncPolarity; 305706f2543Smrg 306706f2543Smrgtypedef struct _KdMonitorTiming { 307706f2543Smrg /* label */ 308706f2543Smrg int horizontal; 309706f2543Smrg int vertical; 310706f2543Smrg int rate; 311706f2543Smrg /* pixel clock */ 312706f2543Smrg int clock; /* in KHz */ 313706f2543Smrg /* horizontal timing */ 314706f2543Smrg int hfp; /* front porch */ 315706f2543Smrg int hbp; /* back porch */ 316706f2543Smrg int hblank; /* blanking */ 317706f2543Smrg KdSyncPolarity hpol; /* polarity */ 318706f2543Smrg /* vertical timing */ 319706f2543Smrg int vfp; /* front porch */ 320706f2543Smrg int vbp; /* back porch */ 321706f2543Smrg int vblank; /* blanking */ 322706f2543Smrg KdSyncPolarity vpol; /* polarity */ 323706f2543Smrg} KdMonitorTiming; 324706f2543Smrg 325706f2543Smrgextern const KdMonitorTiming kdMonitorTimings[]; 326706f2543Smrgextern const int kdNumMonitorTimings; 327706f2543Smrg 328706f2543Smrgtypedef struct _KdPointerMatrix { 329706f2543Smrg int matrix[2][3]; 330706f2543Smrg} KdPointerMatrix; 331706f2543Smrg 332706f2543Smrg/* 333706f2543Smrg * This is the only completely portable way to 334706f2543Smrg * compute this info. 335706f2543Smrg */ 336706f2543Smrg 337706f2543Smrg#ifndef BitsPerPixel 338706f2543Smrg#define BitsPerPixel(d) (\ 339706f2543Smrg PixmapWidthPaddingInfo[d].notPower2 ? \ 340706f2543Smrg (PixmapWidthPaddingInfo[d].bytesPerPixel * 8) : \ 341706f2543Smrg ((1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \ 342706f2543Smrg (PixmapWidthPaddingInfo[d].padRoundUp+1))) 343706f2543Smrg#endif 344706f2543Smrg 345706f2543Smrgextern DevPrivateKeyRec kdScreenPrivateKeyRec; 346706f2543Smrg#define kdScreenPrivateKey (&kdScreenPrivateKeyRec) 347706f2543Smrg 348706f2543Smrgextern unsigned long kdGeneration; 349706f2543Smrgextern Bool kdEnabled; 350706f2543Smrgextern Bool kdSwitchPending; 351706f2543Smrgextern Bool kdEmulateMiddleButton; 352706f2543Smrgextern Bool kdDisableZaphod; 353706f2543Smrgextern Bool kdAllowZap; 354706f2543Smrgextern int kdVirtualTerminal; 355706f2543Smrgextern char *kdSwitchCmd; 356706f2543Smrgextern KdOsFuncs *kdOsFuncs; 357706f2543Smrg 358706f2543Smrg#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \ 359706f2543Smrg dixLookupPrivate(&(pScreen)->devPrivates, kdScreenPrivateKey)) 360706f2543Smrg#define KdSetScreenPriv(pScreen,v) \ 361706f2543Smrg dixSetPrivate(&(pScreen)->devPrivates, kdScreenPrivateKey, v) 362706f2543Smrg#define KdScreenPriv(pScreen) KdPrivScreenPtr pScreenPriv = KdGetScreenPriv(pScreen) 363706f2543Smrg 364706f2543Smrg/* kcmap.c */ 365706f2543Smrgvoid 366706f2543SmrgKdSetColormap (ScreenPtr pScreen); 367706f2543Smrg 368706f2543Smrgvoid 369706f2543SmrgKdEnableColormap (ScreenPtr pScreen); 370706f2543Smrg 371706f2543Smrgvoid 372706f2543SmrgKdDisableColormap (ScreenPtr pScreen); 373706f2543Smrg 374706f2543Smrgvoid 375706f2543SmrgKdInstallColormap (ColormapPtr pCmap); 376706f2543Smrg 377706f2543Smrgvoid 378706f2543SmrgKdUninstallColormap (ColormapPtr pCmap); 379706f2543Smrg 380706f2543Smrgint 381706f2543SmrgKdListInstalledColormaps (ScreenPtr pScreen, Colormap *pCmaps); 382706f2543Smrg 383706f2543Smrgvoid 384706f2543SmrgKdStoreColors (ColormapPtr pCmap, int ndef, xColorItem *pdefs); 385706f2543Smrg 386706f2543Smrg/* kdrive.c */ 387706f2543Smrgextern miPointerScreenFuncRec kdPointerScreenFuncs; 388706f2543Smrg 389706f2543Smrgvoid 390706f2543SmrgKdSetRootClip (ScreenPtr pScreen, BOOL enable); 391706f2543Smrg 392706f2543Smrgvoid 393706f2543SmrgKdDisableScreen (ScreenPtr pScreen); 394706f2543Smrg 395706f2543Smrgvoid 396706f2543SmrgKdDisableScreens (void); 397706f2543Smrg 398706f2543SmrgBool 399706f2543SmrgKdEnableScreen (ScreenPtr pScreen); 400706f2543Smrg 401706f2543Smrgvoid 402706f2543SmrgKdEnableScreens (void); 403706f2543Smrg 404706f2543Smrgvoid 405706f2543SmrgKdSuspend (void); 406706f2543Smrg 407706f2543Smrgvoid 408706f2543SmrgKdResume (void); 409706f2543Smrg 410706f2543Smrgvoid 411706f2543SmrgKdProcessSwitch (void); 412706f2543Smrg 413706f2543SmrgRotation 414706f2543SmrgKdAddRotation (Rotation a, Rotation b); 415706f2543Smrg 416706f2543SmrgRotation 417706f2543SmrgKdSubRotation (Rotation a, Rotation b); 418706f2543Smrg 419706f2543Smrgvoid 420706f2543SmrgKdParseScreen (KdScreenInfo *screen, 421706f2543Smrg char *arg); 422706f2543Smrg 423706f2543SmrgKdPointerInfo * 424706f2543SmrgKdParsePointer (char *arg); 425706f2543Smrg 426706f2543SmrgKdKeyboardInfo * 427706f2543SmrgKdParseKeyboard (char *arg); 428706f2543Smrg 429706f2543Smrgchar * 430706f2543SmrgKdParseFindNext (char *cur, char *delim, char *save, char *last); 431706f2543Smrg 432706f2543Smrgvoid 433706f2543SmrgKdParseRgba (char *rgba); 434706f2543Smrg 435706f2543Smrgvoid 436706f2543SmrgKdUseMsg (void); 437706f2543Smrg 438706f2543Smrgint 439706f2543SmrgKdProcessArgument (int argc, char **argv, int i); 440706f2543Smrg 441706f2543Smrgvoid 442706f2543SmrgKdOsInit (KdOsFuncs *pOsFuncs); 443706f2543Smrg 444706f2543Smrgvoid 445706f2543SmrgKdOsAddInputDrivers (void); 446706f2543Smrg 447706f2543SmrgBool 448706f2543SmrgKdAllocatePrivates (ScreenPtr pScreen); 449706f2543Smrg 450706f2543SmrgBool 451706f2543SmrgKdCreateScreenResources (ScreenPtr pScreen); 452706f2543Smrg 453706f2543SmrgBool 454706f2543SmrgKdCloseScreen (int index, ScreenPtr pScreen); 455706f2543Smrg 456706f2543SmrgBool 457706f2543SmrgKdSaveScreen (ScreenPtr pScreen, int on); 458706f2543Smrg 459706f2543SmrgBool 460706f2543SmrgKdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv); 461706f2543Smrg 462706f2543Smrgvoid 463706f2543SmrgKdInitScreen (ScreenInfo *pScreenInfo, 464706f2543Smrg KdScreenInfo *screen, 465706f2543Smrg int argc, 466706f2543Smrg char **argv); 467706f2543Smrg 468706f2543Smrgvoid 469706f2543SmrgKdInitCard (ScreenInfo *pScreenInfo, 470706f2543Smrg KdCardInfo *card, 471706f2543Smrg int argc, 472706f2543Smrg char **argv); 473706f2543Smrg 474706f2543Smrgvoid 475706f2543SmrgKdInitOutput (ScreenInfo *pScreenInfo, 476706f2543Smrg int argc, 477706f2543Smrg char **argv); 478706f2543Smrg 479706f2543Smrgvoid 480706f2543SmrgKdSetSubpixelOrder (ScreenPtr pScreen, Rotation randr); 481706f2543Smrg 482706f2543Smrgvoid 483706f2543SmrgKdBacktrace (int signum); 484706f2543Smrg 485706f2543Smrg/* kinfo.c */ 486706f2543SmrgKdCardInfo * 487706f2543SmrgKdCardInfoAdd (KdCardFuncs *funcs, 488706f2543Smrg void *closure); 489706f2543Smrg 490706f2543SmrgKdCardInfo * 491706f2543SmrgKdCardInfoLast (void); 492706f2543Smrg 493706f2543Smrgvoid 494706f2543SmrgKdCardInfoDispose (KdCardInfo *ci); 495706f2543Smrg 496706f2543SmrgKdScreenInfo * 497706f2543SmrgKdScreenInfoAdd (KdCardInfo *ci); 498706f2543Smrg 499706f2543Smrgvoid 500706f2543SmrgKdScreenInfoDispose (KdScreenInfo *si); 501706f2543Smrg 502706f2543Smrg 503706f2543Smrg/* kinput.c */ 504706f2543Smrgvoid 505706f2543SmrgKdInitInput(void); 506706f2543Smrg 507706f2543Smrgvoid 508706f2543SmrgKdAddPointerDriver(KdPointerDriver *); 509706f2543Smrg 510706f2543Smrgvoid 511706f2543SmrgKdAddKeyboardDriver(KdKeyboardDriver *); 512706f2543Smrg 513706f2543SmrgBool 514706f2543SmrgKdRegisterFd (int fd, void (*read) (int fd, void *closure), void *closure); 515706f2543Smrg 516706f2543Smrgvoid 517706f2543SmrgKdUnregisterFds (void *closure, Bool do_close); 518706f2543Smrg 519706f2543Smrgvoid 520706f2543SmrgKdUnregisterFd (void *closure, int fd, Bool do_close); 521706f2543Smrg 522706f2543Smrgvoid 523706f2543SmrgKdEnqueueKeyboardEvent(KdKeyboardInfo *ki, unsigned char scan_code, 524706f2543Smrg unsigned char is_up); 525706f2543Smrg 526706f2543Smrg#define KD_BUTTON_1 0x01 527706f2543Smrg#define KD_BUTTON_2 0x02 528706f2543Smrg#define KD_BUTTON_3 0x04 529706f2543Smrg#define KD_BUTTON_4 0x08 530706f2543Smrg#define KD_BUTTON_5 0x10 531706f2543Smrg#define KD_BUTTON_8 0x80 532706f2543Smrg#define KD_MOUSE_DELTA 0x80000000 533706f2543Smrg 534706f2543Smrgvoid 535706f2543SmrgKdEnqueuePointerEvent(KdPointerInfo *pi, unsigned long flags, int rx, int ry, 536706f2543Smrg int rz); 537706f2543Smrg 538706f2543Smrgvoid 539706f2543Smrg_KdEnqueuePointerEvent(KdPointerInfo *pi, int type, int x, int y, int z, 540706f2543Smrg int b, int absrel, Bool force); 541706f2543Smrg 542706f2543Smrgvoid 543706f2543SmrgKdReleaseAllKeys (void); 544706f2543Smrg 545706f2543Smrgvoid 546706f2543SmrgKdSetLed (KdKeyboardInfo *ki, int led, Bool on); 547706f2543Smrg 548706f2543Smrgvoid 549706f2543SmrgKdSetPointerMatrix (KdPointerMatrix *pointer); 550706f2543Smrg 551706f2543Smrgvoid 552706f2543SmrgKdComputePointerMatrix (KdPointerMatrix *pointer, Rotation randr, int width, int height); 553706f2543Smrg 554706f2543Smrgvoid 555706f2543SmrgKdScreenToPointerCoords (int *x, int *y); 556706f2543Smrg 557706f2543Smrgvoid 558706f2543SmrgKdBlockHandler (int screen, 559706f2543Smrg pointer blockData, 560706f2543Smrg pointer timeout, 561706f2543Smrg pointer readmask); 562706f2543Smrg 563706f2543Smrgvoid 564706f2543SmrgKdWakeupHandler (int screen, 565706f2543Smrg pointer data, 566706f2543Smrg unsigned long result, 567706f2543Smrg pointer readmask); 568706f2543Smrg 569706f2543Smrgvoid 570706f2543SmrgKdDisableInput (void); 571706f2543Smrg 572706f2543Smrgvoid 573706f2543SmrgKdEnableInput (void); 574706f2543Smrg 575706f2543Smrgvoid 576706f2543SmrgProcessInputEvents (void); 577706f2543Smrg 578706f2543Smrgvoid 579706f2543SmrgKdRingBell (KdKeyboardInfo *ki, 580706f2543Smrg int volume, 581706f2543Smrg int pitch, 582706f2543Smrg int duration); 583706f2543Smrg 584706f2543Smrg/* kmode.c */ 585706f2543Smrgconst KdMonitorTiming * 586706f2543SmrgKdFindMode (KdScreenInfo *screen, 587706f2543Smrg Bool (*supported) (KdScreenInfo *, 588706f2543Smrg const KdMonitorTiming *)); 589706f2543Smrg 590706f2543SmrgBool 591706f2543SmrgKdTuneMode (KdScreenInfo *screen, 592706f2543Smrg Bool (*usable) (KdScreenInfo *), 593706f2543Smrg Bool (*supported) (KdScreenInfo *, 594706f2543Smrg const KdMonitorTiming *)); 595706f2543Smrg 596706f2543Smrg#ifdef RANDR 597706f2543SmrgBool 598706f2543SmrgKdRandRGetInfo (ScreenPtr pScreen, 599706f2543Smrg int randr, 600706f2543Smrg Bool (*supported) (ScreenPtr pScreen, 601706f2543Smrg const KdMonitorTiming *)); 602706f2543Smrg 603706f2543Smrgconst KdMonitorTiming * 604706f2543SmrgKdRandRGetTiming (ScreenPtr pScreen, 605706f2543Smrg Bool (*supported) (ScreenPtr pScreen, 606706f2543Smrg const KdMonitorTiming *), 607706f2543Smrg int rate, 608706f2543Smrg RRScreenSizePtr pSize); 609706f2543Smrg#endif 610706f2543Smrg 611706f2543Smrg/* kshadow.c */ 612706f2543SmrgBool 613706f2543SmrgKdShadowFbAlloc (KdScreenInfo *screen, Bool rotate); 614706f2543Smrg 615706f2543Smrgvoid 616706f2543SmrgKdShadowFbFree (KdScreenInfo *screen); 617706f2543Smrg 618706f2543SmrgBool 619706f2543SmrgKdShadowSet (ScreenPtr pScreen, int randr, ShadowUpdateProc update, ShadowWindowProc window); 620706f2543Smrg 621706f2543Smrgvoid 622706f2543SmrgKdShadowUnset (ScreenPtr pScreen); 623706f2543Smrg 624706f2543Smrg/* function prototypes to be implemented by the drivers */ 625706f2543Smrgvoid 626706f2543SmrgInitCard (char *name); 627706f2543Smrg 628706f2543Smrg#endif /* _KDRIVE_H_ */ 629