Subversion Repositories shark

Rev

Rev 519 | Rev 538 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * Project: S.Ha.R.K.
 *
 * Coordinators:
 *   Giorgio Buttazzo    <giorgio@sssup.it>
 *   Paolo Gai           <pj@gandalf.sssup.it>
 *
 * Authors     :
 *   Paolo Gai           <pj@gandalf.sssup.it>
 *   Massimiliano Giorgi <massy@gandalf.sssup.it>
 *   Luca Abeni          <luca@gandalf.sssup.it>
 *   Mauro Marinoni      <mauro.marinoni@unipv.it>
 *
 *
 * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
 *
 * http://www.sssup.it
 * http://retis.sssup.it
 * http://shark.sssup.it
 */


/*
 * Copyright (C) 2000 Paolo Gai
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */


/* Glue Layer Header Linux Input Driver*/

#ifndef __SHARK_MOUSE26_H__
#define __SHARK_MOUSE26_H__

#include <kernel/const.h>
#include <kernel/model.h>

#ifdef __cplusplus
extern "C" {
#endif

/* mouse buttons constant */  
#define MOUSE_RBUTT     1
#define MOUSE_CBUTT     2
#define MOUSE_LBUTT     4

/* the mouse event struct */
typedef struct {
        int x, y, z;            /* mouse position */
        int dx, dy, dz;         /* distance covered by mouse */
        unsigned long buttons;  /* buttons flags */
} MOUSE_EVT;

/* macros to test mouse buttons */
#define isLeftButton(b)         ((b) & MOUSE_LBUTT)
#define isRightButton(b)        ((b) & MOUSE_RBUTT)
#define isCentralButton(b)      ((b) & MOUSE_CBUTT)

/*
 * mouse initialization
 */

 
/* the MOUSE_PARMS structure used by MOUSE26_init() */
typedef struct mouse_parms {
        TASK_MODEL *tm;
        int xmin;
        int ymin;
        int xmax;
        int ymax;
        int threshold;
} MOUSE_PARMS;

#define MOUSE_DEFAULT (DWORD)-1

/* the default values for the MOUSE_PARMS structure */
#define BASE_MOUSE {(TASK_MODEL *)MOUSE_DEFAULT, \
                    (int)MOUSE_DEFAULT, \
                    (int)MOUSE_DEFAULT, \
                    (int)MOUSE_DEFAULT, \
                    (int)MOUSE_DEFAULT, \
                    (int)MOUSE_DEFAULT}


/* to change the MOUSE_PARMS struct */
#define mouse_default_parms(s)  (s).tm = (TASK_MODEL *)MOUSE_DEFAULT, \
                                (s).xmin = (int)MOUSE_DEFAULT, \
                                (s).xmin = (int)MOUSE_DEFAULT, \
                                (s).xmin = (int)MOUSE_DEFAULT, \
                                (s).xmin = (int)MOUSE_DEFAULT, \
                                (s).xmin = (int)MOUSE_DEFAULT


#define mouse_def_task(s,m)     (s).tm = (TASK_MODEL *)(m)
#define mouse_def_thresh(s,v)   (s).threshold = (v)
#define mouse_def_xmin(s,v)     (s).xmin = (v)
#define mouse_def_ymin(s,v)     (s).ymin = (v)
#define mouse_def_xmax(s,v)     (s).xmax = (v)
#define mouse_def_ymax(s,v)     (s).ymax = (v)

/* user mouse handler */
typedef void (*MOUSE_HANDLER)(MOUSE_EVT*);

/*
 * user mouse interface
 */

int  MOUSE26_init(MOUSE_PARMS *s);
int  MOUSE26_close(void);
 
void mouse_enable(void);
void mouse_disable(void);
void mouse_getpos(int *x, int *y, int *z, unsigned long *buttons);
void mouse_setpos(int  x, int  y, int z);
void mouse_getlimit(int *xmin, int *ymin, int *xmax, int *ymax);
int  mouse_setlimit(int  xmin, int  ymin, int  xmax, int  ymax);
int  mouse_getthreshold(void);
int  mouse_setthreshold(int t);
void mouse_hook(MOUSE_HANDLER h);

#ifdef __cplusplus
};
#endif

#endif