#include <u.h>
#include <libc.h>
#include <draw.h>
#include <thread.h>
#include <cursor.h>
#include <mouse.h>

static int
bad(void)
{
	sysfatal("compiled with no window system support");
	return 0;
}

void
moveto(Mousectl *m, Point pt)
{
	USED(m);
	USED(pt);
	bad();
}

void
closemouse(Mousectl *mc)
{
	USED(mc);
	bad();
}

int
readmouse(Mousectl *mc)
{
	USED(mc);
	return bad();
}

Mousectl*
initmouse(char *file, Image *i)
{
	USED(file);
	USED(i);
	bad();
	return nil;
}

void
setcursor(Mousectl *mc, Cursor *c)
{
	USED(mc);
	USED(c);
	bad();
}

void
bouncemouse(Mouse *m)
{
	USED(m);
	bad();
}

