# lnx-ms.c File Reference

`#include "inputstr.h"`
`#include <X11/Xos.h>`
`#include <errno.h>`
`#include <termios.h>`
`#include "dmxinputinit.h"`
`#include "lnx-ms.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 | msLinuxReadBytes (int fd, unsigned char *buf, int len, int min)
static void | msLinuxButton (DevicePtr pDev, ENQUEUEPROC enqueue, int buttons, BLOCK block)
void | msLinuxRead (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)
void | msLinuxInit (DevicePtr pDev)
int | msLinuxOn (DevicePtr pDev)
void | msLinuxOff (DevicePtr pDev)
static void | msLinuxGetMap (DevicePtr pDev, unsigned char *map, int *nButtons)
void | msLinuxVTPreSwitch (pointer p)
void | msLinuxVTPostSwitch (pointer p)
pointer | msLinuxCreatePrivate (DeviceIntPtr pMouse)
void | msLinuxDestroyPrivate (pointer priv)
void | msLinuxGetInfo (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 Juliusz Chroboczek and Keith Packard (see the source code for complete references).

## Define Documentation

#define BLOCK DMXBlockType

#define CHECKPROC dmxCheckSpecialProcPtr

#define ENQUEUEPROC dmxEnqueueProcPtr

#define FATAL0 | ( |  | f | ) | dmxLog(dmxFatal,f)

#define FATAL1 | ( |  | f,
|  |  | a |
| ) |  |  | dmxLog(dmxFatal,f,a)

Referenced by msLinuxInit(), and msLinuxOn().

#define FATAL2 | ( |  | f,
|  |  | a,
|  |  | b |
| ) |  |  | dmxLog(dmxFatal,f,a,b)

#define GETPRIV

Value:

    myPrivate *priv                            \
                          = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private

#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 MOTIONPROC dmxMotionProcPtr

#define PRESS | ( |  | b | ) |

Value:

    do {                                                 \
            enqueue(pDev, ButtonPress, 0, 0, NULL, block);   \
        } while (0)

Referenced by msLinuxButton(), ps2LinuxButton(), and usbRead().

#define RELEASE | ( |  | b | ) |

Value:

    do {                                                 \
            enqueue(pDev, ButtonRelease, 0, 0, NULL, block); \
        } while (0)

Referenced by msLinuxButton(), ps2LinuxButton(), and usbRead().

## Typedef Documentation

typedef struct _myPrivate myPrivate

## Function Documentation

static void msLinuxButton | ( | DevicePtr | pDev,
|  | ENQUEUEPROC | enqueue,
|  | int | buttons,
|  | BLOCK | block |
| ) |  |  | `[static]`

References PRESS, and RELEASE.

Referenced by msLinuxRead().

pointer msLinuxCreatePrivate | ( | DeviceIntPtr | pMouse | ) |

Create a private structure for use within this file.

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

void msLinuxDestroyPrivate | ( | pointer | priv | ) |

Destroy a private structure.

void msLinuxGetInfo | ( | DevicePtr | pDev,
|  | DMXLocalInitInfoPtr | info |
| ) |  |  |

Fill the info structure with information needed to initialize pDev.

References _DMXLocalInitInfo::buttonClass, _DMXLocalInitInfo::map, _DMXLocalInitInfo::maxres, _DMXLocalInitInfo::maxval, _DMXLocalInitInfo::minres, _DMXLocalInitInfo::minval, msLinuxGetMap(), _DMXLocalInitInfo::numButtons, _DMXLocalInitInfo::numRelAxes, _DMXLocalInitInfo::ptrFeedbackClass, _DMXLocalInitInfo::res, and _DMXLocalInitInfo::valuatorClass.

static void msLinuxGetMap | ( | DevicePtr | pDev,
|  | unsigned char * | map,
|  | int * | nButtons |
| ) |  |  | `[static]`

Referenced by msLinuxGetInfo().

void msLinuxInit | ( | DevicePtr | pDev | ) |

Initialize pDev.

References FATAL1, and O_NONBLOCK.

Referenced by msLinuxOn().

void msLinuxOff | ( | DevicePtr | pDev | ) |

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

int msLinuxOn | ( | DevicePtr | pDev | ) |

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

References FATAL1, and msLinuxInit().

void msLinuxRead | ( | 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 msLinuxButton(), and msLinuxReadBytes().

static int msLinuxReadBytes | ( | int | fd,
|  | unsigned char * | buf,
|  | int | len,
|  | int | min |
| ) |  |  | `[static]`

Referenced by msLinuxRead().

void msLinuxVTPostSwitch | ( | pointer | p | ) |

Currently unused hook called after returning from a VT switch.

void msLinuxVTPreSwitch | ( | pointer | p | ) |

Currently unused hook called prior to an VT switch.

Generated June 29, 2004 for Distributed Multihead X by doxygen 1.3.4. </addres>