lnx-ps2.c File Reference

#include "inputstr.h"
#include <X11/Xos.h>
#include <errno.h>
#include <termios.h>
#include "dmxinputinit.h"
#include "lnx-ps2.h"

Data Structures

struct  _myPrivate

Defines

#define GETPRIV
#define LOG0(f)   dmxLog(dmxDebug,f)
#define LOG1(f, a)   dmxLog(dmxDebug,f,a)
#define LOG2(f, a, b)   dmxLog(dmxDebug,f,a,b)
#define LOG3(f, a, b, c)   dmxLog(dmxDebug,f,a,b,c)
#define FATAL0(f)   dmxLog(dmxFatal,f)
#define FATAL1(f, a)   dmxLog(dmxFatal,f,a)
#define FATAL2(f, a, b)   dmxLog(dmxFatal,f,a,b)
#define MOTIONPROC   dmxMotionProcPtr
#define ENQUEUEPROC   dmxEnqueueProcPtr
#define CHECKPROC   dmxCheckSpecialProcPtr
#define BLOCK   DMXBlockType
#define PRESS(b)
#define RELEASE(b)

Typedefs

typedef struct _myPrivate myPrivate

Functions

static int ps2LinuxReadBytes (int fd, unsigned char *buf, int len, int min)
static void ps2LinuxButton (DevicePtr pDev, ENQUEUEPROC enqueue, int buttons, BLOCK block)
void ps2LinuxRead (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)
void ps2LinuxInit (DevicePtr pDev)
int ps2LinuxOn (DevicePtr pDev)
void ps2LinuxOff (DevicePtr pDev)
static void ps2LinuxGetMap (DevicePtr pDev, unsigned char *map, int *nButtons)
void ps2LinuxVTPreSwitch (pointer p)
void ps2LinuxVTPostSwitch (pointer p)
pointer ps2LinuxCreatePrivate (DeviceIntPtr pMouse)
void ps2LinuxDestroyPrivate (pointer priv)
void ps2LinuxGetInfo (DevicePtr pDev, DMXLocalInitInfoPtr info)

Detailed Description

This code implements a low-level device driver for a serial MS mouse. The code is derived from code by Keith Packard (see the source code for complete references).


Define Documentation

#define BLOCK   DMXBlockType
#define CHECKPROC   dmxCheckSpecialProcPtr
#define ENQUEUEPROC   dmxEnqueueProcPtr
#define FATAL0 (  )     dmxLog(dmxFatal,f)
#define FATAL1 ( f,
 )     dmxLog(dmxFatal,f,a)
#define FATAL2 ( f,
a,
 )     dmxLog(dmxFatal,f,a,b)
#define GETPRIV
Value:
myPrivate *priv                            \
                      = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
#define LOG0 (  )     dmxLog(dmxDebug,f)
#define LOG1 ( f,
 )     dmxLog(dmxDebug,f,a)
#define LOG2 ( f,
a,
 )     dmxLog(dmxDebug,f,a,b)
#define LOG3 ( f,
a,
b,
 )     dmxLog(dmxDebug,f,a,b,c)
#define MOTIONPROC   dmxMotionProcPtr
#define PRESS (  ) 
Value:
do {                                                 \
        enqueue(pDev, ButtonPress, 0, 0, NULL, block);   \
    } while (0)
#define RELEASE (  ) 
Value:
do {                                                 \
        enqueue(pDev, ButtonRelease, 0, 0, NULL, block); \
    } while (0)

Typedef Documentation

typedef struct _myPrivate myPrivate

Function Documentation

static void ps2LinuxButton ( DevicePtr  pDev,
ENQUEUEPROC  enqueue,
int  buttons,
BLOCK  block 
) [static]

References GETPRIV, PRESS, and RELEASE.

Referenced by ps2LinuxRead().

pointer ps2LinuxCreatePrivate ( DeviceIntPtr  pMouse  ) 

Create a private structure for use within this file.

References _myPrivate::fd, and _myPrivate::pMouse.

void ps2LinuxDestroyPrivate ( pointer  priv  ) 

Destroy a private structure.

void ps2LinuxGetInfo ( DevicePtr  pDev,
DMXLocalInitInfoPtr  info 
)
static void ps2LinuxGetMap ( DevicePtr  pDev,
unsigned char *  map,
int *  nButtons 
) [static]

Referenced by ps2LinuxGetInfo().

void ps2LinuxInit ( DevicePtr  pDev  ) 

Initialize pDev.

References FATAL1, GETPRIV, and O_NONBLOCK.

Referenced by ps2LinuxOn().

void ps2LinuxOff ( DevicePtr  pDev  ) 

Turn pDev off (i.e., stop taking input from pDev).

References GETPRIV.

int ps2LinuxOn ( DevicePtr  pDev  ) 

Turn pDev on (i.e., take input from pDev).

References GETPRIV, and ps2LinuxInit().

void ps2LinuxRead ( DevicePtr  pDev,
MOTIONPROC  motion,
ENQUEUEPROC  enqueue,
CHECKPROC  checkspecial,
BLOCK  block 
)

Read an event from the pDev device. If the event is a motion event, enqueue it with the motion function. Otherwise, check for special keys with the checkspecial function and enqueue the event with the enqueue function. The block type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function.

References GETPRIV, ps2LinuxButton(), and ps2LinuxReadBytes().

static int ps2LinuxReadBytes ( int  fd,
unsigned char *  buf,
int  len,
int  min 
) [static]

Referenced by ps2LinuxRead().

void ps2LinuxVTPostSwitch ( pointer  p  ) 

Currently unused hook called after returning from a VT switch.

void ps2LinuxVTPreSwitch ( pointer  p  ) 

Currently unused hook called prior to an VT switch.


Generated June 29, 2004 for Distributed Multihead X by doxygen 1.3.4.