385 lines
7.4 KiB
C
385 lines
7.4 KiB
C
/*
|
|
(c) Copyright 1996 Hewlett-Packard Company
|
|
(c) Copyright 1996 International Business Machines Corp.
|
|
(c) Copyright 1996 Sun Microsystems, Inc.
|
|
(c) Copyright 1996 Novell, Inc.
|
|
(c) Copyright 1996 Digital Equipment Corp.
|
|
(c) Copyright 1996 Fujitsu Limited
|
|
(c) Copyright 1996 Hitachi, Ltd.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
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
|
|
COPYRIGHT HOLDERS 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 names of the copyright holders shall
|
|
not be used in advertising or otherwise to promote the sale, use or other
|
|
dealings in this Software without prior written authorization from said
|
|
copyright holders.
|
|
*/
|
|
|
|
#ifdef HAVE_DIX_CONFIG_H
|
|
#include <dix-config.h>
|
|
#endif
|
|
|
|
#include <X11/X.h>
|
|
#include <X11/Xos.h>
|
|
#include <X11/Xproto.h>
|
|
#include "windowstr.h"
|
|
#include "servermd.h"
|
|
#include "DiPrint.h"
|
|
|
|
/*-
|
|
*-----------------------------------------------------------------------
|
|
* InitOutput --
|
|
* If this is built as a print-only server, then we must supply
|
|
* an InitOutput routine. If a normal server's real ddx InitOutput
|
|
* is used, then it should call PrinterInitOutput if it so desires.
|
|
* The ddx-level hook is needed to allow the printer stuff to
|
|
* create additional screens. An extension can't reliably do
|
|
* this for two reasons:
|
|
*
|
|
* 1) If InitOutput doesn't create any screens, then main()
|
|
* exits before calling InitExtensions().
|
|
*
|
|
* 2) Other extensions may rely on knowing about all screens
|
|
* when they initialize, and we can't guarantee the order
|
|
* of extension initialization.
|
|
*
|
|
* Results:
|
|
* ScreenInfo filled in, and PrinterInitOutput is called to create
|
|
* the screens associated with printers.
|
|
*
|
|
* Side Effects:
|
|
* None
|
|
*
|
|
*-----------------------------------------------------------------------
|
|
*/
|
|
|
|
void
|
|
InitOutput(
|
|
ScreenInfo *pScreenInfo,
|
|
int argc,
|
|
char **argv)
|
|
|
|
{
|
|
pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
|
|
pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
|
|
pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
|
|
pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
|
|
|
|
pScreenInfo->numPixmapFormats = 0; /* get them in PrinterInitOutput */
|
|
screenInfo.numVideoScreens = 0;
|
|
|
|
#ifdef PRINT_ONLY_SERVER
|
|
PrinterInitOutput(pScreenInfo, argc, argv);
|
|
#endif
|
|
|
|
}
|
|
|
|
void
|
|
DDXRingBell(int volume, int pitch, int duration)
|
|
{
|
|
/* dummy func; link fails without */
|
|
}
|
|
|
|
static void
|
|
BellProc(
|
|
int volume,
|
|
DeviceIntPtr pDev)
|
|
{
|
|
return;
|
|
}
|
|
|
|
static void
|
|
KeyControlProc(
|
|
DeviceIntPtr pDev,
|
|
KeybdCtrl *ctrl)
|
|
{
|
|
return;
|
|
}
|
|
|
|
static KeySym printKeyMap[256];
|
|
static CARD8 printModMap[256];
|
|
|
|
static int
|
|
KeyboardProc(
|
|
DevicePtr pKbd,
|
|
int what,
|
|
int argc,
|
|
char *argv[])
|
|
{
|
|
KeySymsRec keySyms;
|
|
|
|
keySyms.minKeyCode = 8;
|
|
keySyms.maxKeyCode = 8;
|
|
keySyms.mapWidth = 1;
|
|
keySyms.map = printKeyMap;
|
|
|
|
switch(what)
|
|
{
|
|
case DEVICE_INIT:
|
|
InitKeyboardDeviceStruct(pKbd, &keySyms, printModMap,
|
|
(BellProcPtr)BellProc,
|
|
KeyControlProc);
|
|
break;
|
|
case DEVICE_ON:
|
|
break;
|
|
case DEVICE_OFF:
|
|
break;
|
|
case DEVICE_CLOSE:
|
|
break;
|
|
}
|
|
return Success;
|
|
}
|
|
|
|
#include "../mi/mipointer.h"
|
|
static int
|
|
PointerProc(
|
|
DevicePtr pPtr,
|
|
int what,
|
|
int argc,
|
|
char *argv[])
|
|
{
|
|
#define NUM_BUTTONS 1
|
|
CARD8 map[NUM_BUTTONS];
|
|
|
|
switch(what)
|
|
{
|
|
case DEVICE_INIT:
|
|
{
|
|
map[0] = 0;
|
|
InitPointerDeviceStruct(pPtr, map, NUM_BUTTONS,
|
|
GetMotionHistory,
|
|
(PtrCtrlProcPtr)_XpVoidNoop,
|
|
GetMotionHistorySize(), 2);
|
|
break;
|
|
}
|
|
case DEVICE_ON:
|
|
break;
|
|
case DEVICE_OFF:
|
|
break;
|
|
case DEVICE_CLOSE:
|
|
break;
|
|
}
|
|
return Success;
|
|
}
|
|
|
|
void
|
|
InitInput(
|
|
int argc,
|
|
char **argv)
|
|
{
|
|
DeviceIntPtr ptr, kbd;
|
|
|
|
ptr = AddInputDevice((DeviceProc)PointerProc, TRUE);
|
|
kbd = AddInputDevice((DeviceProc)KeyboardProc, TRUE);
|
|
RegisterPointerDevice(ptr);
|
|
RegisterKeyboardDevice(kbd);
|
|
return;
|
|
}
|
|
|
|
|
|
Bool
|
|
LegalModifier(
|
|
unsigned int key,
|
|
DeviceIntPtr dev)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
void
|
|
ProcessInputEvents(void)
|
|
{
|
|
}
|
|
|
|
#ifdef __DARWIN__
|
|
#include "micmap.h"
|
|
|
|
void GlxExtensionInit(void);
|
|
void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr);
|
|
|
|
void
|
|
DarwinHandleGUI(int argc, char *argv[])
|
|
{
|
|
}
|
|
|
|
void DarwinGlxExtensionInit(void)
|
|
{
|
|
GlxExtensionInit();
|
|
}
|
|
|
|
void DarwinGlxWrapInitVisuals(
|
|
miInitVisualsProcPtr *procPtr)
|
|
{
|
|
GlxWrapInitVisuals(procPtr);
|
|
}
|
|
#endif
|
|
|
|
#ifdef DDXOSINIT
|
|
void
|
|
OsVendorInit(void)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
#ifdef DDXOSFATALERROR
|
|
void
|
|
OsVendorFatalError(void)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
#ifdef DDXBEFORERESET
|
|
void
|
|
ddxBeforeReset(void)
|
|
{
|
|
return;
|
|
}
|
|
#endif
|
|
|
|
/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
|
|
void ddxInitGlobals(void)
|
|
{
|
|
PrinterInitGlobals();
|
|
}
|
|
|
|
/****************************************
|
|
* ddxUseMsg()
|
|
*
|
|
* Called my usemsg from os/utils/c
|
|
*
|
|
*****************************************/
|
|
|
|
void ddxUseMsg(void)
|
|
{
|
|
}
|
|
|
|
void AbortDDX (void)
|
|
{
|
|
}
|
|
|
|
void ddxGiveUp(void) /* Called by GiveUp() */
|
|
{
|
|
}
|
|
|
|
int
|
|
ddxProcessArgument (
|
|
int argc,
|
|
char *argv[],
|
|
int i)
|
|
{
|
|
return(0);
|
|
}
|
|
|
|
#ifdef XINPUT
|
|
|
|
#include <X11/extensions/XI.h>
|
|
#include <X11/extensions/XIproto.h>
|
|
#include "XIstubs.h"
|
|
#include "exglobals.h"
|
|
|
|
int
|
|
ChangePointerDevice (
|
|
DeviceIntPtr old_dev,
|
|
DeviceIntPtr new_dev,
|
|
unsigned char x,
|
|
unsigned char y)
|
|
{
|
|
return (BadDevice);
|
|
}
|
|
|
|
int
|
|
ChangeDeviceControl (
|
|
register ClientPtr client,
|
|
DeviceIntPtr dev,
|
|
xDeviceCtl *control)
|
|
{
|
|
return BadMatch;
|
|
}
|
|
|
|
int
|
|
NewInputDeviceRequest(InputOption *options, DeviceIntPtr *pdev)
|
|
{
|
|
return BadValue;
|
|
}
|
|
|
|
void
|
|
DeleteInputDeviceRequest(DeviceIntPtr dev)
|
|
{
|
|
}
|
|
|
|
void
|
|
OpenInputDevice (
|
|
DeviceIntPtr dev,
|
|
ClientPtr client,
|
|
int *status)
|
|
{
|
|
return;
|
|
}
|
|
|
|
void
|
|
AddOtherInputDevices (void)
|
|
{
|
|
return;
|
|
}
|
|
|
|
void
|
|
CloseInputDevice (
|
|
DeviceIntPtr dev,
|
|
ClientPtr client)
|
|
{
|
|
return;
|
|
}
|
|
|
|
int
|
|
ChangeKeyboardDevice (
|
|
DeviceIntPtr old_dev,
|
|
DeviceIntPtr new_dev)
|
|
{
|
|
return (Success);
|
|
}
|
|
|
|
int
|
|
SetDeviceMode (
|
|
register ClientPtr client,
|
|
DeviceIntPtr dev,
|
|
int mode)
|
|
{
|
|
return BadMatch;
|
|
}
|
|
|
|
int
|
|
SetDeviceValuators (
|
|
register ClientPtr client,
|
|
DeviceIntPtr dev,
|
|
int *valuators,
|
|
int first_valuator,
|
|
int num_valuators)
|
|
{
|
|
return BadMatch;
|
|
}
|
|
|
|
|
|
#endif /* XINPUT */
|
|
|
|
#ifdef AIXV3
|
|
/*
|
|
* This is just to get the server to link on AIX, where some bits
|
|
* that should be in os/ are instead in hw/ibm.
|
|
*/
|
|
int SelectWaitTime = 10000; /* usec */
|
|
#endif
|