OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [mw/] [src/] [drivers/] [mou_fbsd.c] - Rev 1773

Go to most recent revision | Compare with Previous | Blame | View Log

/* #include <stdio.h> */
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
 
#include <machine/mouse.h>
#include <machine/console.h>
 
/* #include <vgl.h> */
 
#include "device.h"
 
#define SCALE 3
#define THRESH 5
 
 
static int FBSD_Open(MOUSEDEVICE *pmd);
static void FBSD_Close(void);
static int FBSD_GetButtonInfo(void);
static void FBSD_GetDefaultAccel(int *pscale, int *pthresh);
static int FBSD_Read(MWCOORD *dx, MWCOORD *dy, MWCOORD *dz,int *bp);
MOUSEDEVICE mousedev = {
    FBSD_Open,
    FBSD_Close,
    FBSD_GetButtonInfo,
    FBSD_GetDefaultAccel,
    FBSD_Read,
    NULL
};
 
static int mouse_fd=0;
 
static int FBSD_Open(MOUSEDEVICE *pmd)
{
 
    mousemode_t theMouseMode;
 
    mouse_fd=open("/dev/sysmouse",O_RDONLY);
    if(mouse_fd < 0)
    {
	return(-1);
    }
    ioctl(mouse_fd, MOUSE_GETMODE, &theMouseMode);
    theMouseMode.level=1;
    ioctl(mouse_fd, MOUSE_SETMODE, &theMouseMode);
    return mouse_fd;
 
}
 
static void FBSD_Close(void)
{
    if (mouse_fd > 0)
    {
	close(mouse_fd);
    }
    mouse_fd=0;
 
}
 
static int FBSD_GetButtonInfo(void)
{
    return MWBUTTON_L | MWBUTTON_M | MWBUTTON_R;
}
 
static void FBSD_GetDefaultAccel(int *pscale, int *pthresh)
{
    *pscale = SCALE;
    *pthresh = THRESH;
}
 
extern void FBSD_handle_event(void);
 
static int FBSD_Read(MWCOORD *dx, MWCOORD *dy, MWCOORD *dz,
		     int *bp)
 
{
    mousestatus_t theStatus;
    int butStat=0;
    int retVal=0;
 
    FBSD_handle_event();
 
    ioctl(mouse_fd,MOUSE_GETSTATUS, &theStatus);
 
    if(theStatus.flags | MOUSE_POSCHANGED)
    {
	*dx=theStatus.dx;
	*dy=theStatus.dy;
	*dz=theStatus.dz;
	retVal|=1;
    }
 
    if(theStatus.button & 0x1)
    {
	butStat|=MWBUTTON_L;
	retVal|=1;
    }
    if(theStatus.button & 0x2)
    {
	butStat|=MWBUTTON_M;
	retVal|=1;
    }
    if(theStatus.button & 0x4)
    {
	butStat|=MWBUTTON_R;
	retVal|=1;
    }
 
    *bp=butStat;
    return retVal;
}
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.