Initial revision
diff --git a/include/mouse.h b/include/mouse.h
new file mode 100644
index 0000000..f0a0f69
--- /dev/null
+++ b/include/mouse.h
@@ -0,0 +1,44 @@
+typedef struct	Menu Menu;
+typedef struct 	Mousectl Mousectl;
+
+struct	Mouse
+{
+	int	buttons;	/* bit array: LMR=124 */
+	Point	xy;
+	ulong	msec;
+};
+
+struct Mousectl
+{
+	Mouse	m;
+	struct Channel	*c;	/* chan(Mouse) */
+	struct Channel	*resizec;	/* chan(int)[2] */
+			/* buffered in case client is waiting for a mouse action before handling resize */
+
+	char		*file;
+	int		mfd;		/* to mouse file */
+	int		cfd;		/* to cursor file */
+	int		pid;		/* of slave proc */
+	Display		*display;
+	/*Image*	image;	/ * of associated window/display */
+};
+
+struct Menu
+{
+	char	**item;
+	char	*(*gen)(int);
+	int	lasthit;
+};
+
+/*
+ * Mouse
+ */
+extern Mousectl*	initmouse(char*, Image*);
+extern void		moveto(Mousectl*, Point);
+extern int			readmouse(Mousectl*);
+extern void		closemouse(Mousectl*);
+struct Cursor;
+extern void		setcursor(Mousectl*, struct Cursor*);
+extern void		drawgetrect(Rectangle, int);
+extern Rectangle	getrect(int, Mousectl*);
+extern int	 		menuhit(int, Mousectl*, Menu*, Screen*);