xref: /csrg-svn/sys/news3400/iop/mouse.h (revision 63308)
153887Smckusick /*
2*63308Sbostic  * Copyright (c) 1992, 1993
3*63308Sbostic  *	The Regents of the University of California.  All rights reserved.
453887Smckusick  *
553887Smckusick  * This code is derived from software contributed to Berkeley by
653887Smckusick  * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc.
753887Smckusick  *
853887Smckusick  * %sccs.include.redist.c%
953887Smckusick  *
1053887Smckusick  * from: $Hdr: mouse.h,v 4.300 91/06/09 06:42:56 root Rel41 $ SONY
1153887Smckusick  *
12*63308Sbostic  *	@(#)mouse.h	8.1 (Berkeley) 06/11/93
1353887Smckusick  */
1453887Smckusick 
1553887Smckusick #ifndef __MOUSE__
1653887Smckusick #define __MOUSE__ 1
1753887Smckusick 
1853887Smckusick /*
1953887Smckusick  * mouse register structure definition.
2053887Smckusick  */
2153887Smckusick 
2253887Smckusick /*
2353887Smckusick  * mouse data (mouse X, Y coordinates and its button status)
2453887Smckusick  */
2553887Smckusick struct ms_data {
2653887Smckusick     int	    md_sw;  /* mouse button */
2753887Smckusick #define	    MS_BUTNL	0x04
2853887Smckusick #define	    MS_BUTNM	0x02
2953887Smckusick #define	    MS_BUTNR	0x01
3053887Smckusick     int	    md_x;   /* x coordinate */
3153887Smckusick     int	    md_y;   /* y coordinate */
3253887Smckusick };
3353887Smckusick 
3453887Smckusick struct ms_coord {
3553887Smckusick     int	    mc_x;   /* x coordinate */
3653887Smckusick     int	    mc_y;   /* y coordinate */
3753887Smckusick };
3853887Smckusick 
3953887Smckusick struct ms_range {
4053887Smckusick     struct ms_coord	mr_min;	/* upper left */
4153887Smckusick     struct ms_coord	mr_max;	/* lower right */
4253887Smckusick };
4353887Smckusick 
4453887Smckusick /*
4553887Smckusick  * mouse event report
4653887Smckusick  *	event report is queued when mouse is put in event mode
4753887Smckusick  *	by using MIOC SETEM ioctl()
4853887Smckusick  */
4953887Smckusick struct ms_event {
5053887Smckusick     struct ms_data	mse_data;	/* mouse X, Y and button status */
5153887Smckusick     char		mse_trig;	/* trigger that caused this event */
5253887Smckusick #define	MSE_MOTION	0		    /* mouse movement */
5353887Smckusick #define MSE_BUTTON	1		    /* mouse buttons */
5453887Smckusick #define MSE_KEY		2		    /* keyboard keys */
5553887Smckusick     char		mse_dir;	/* key or button direction */
5653887Smckusick #define MSE_DOWN	0		    /* down */
5753887Smckusick #define MSE_UP		1		    /* up */
5853887Smckusick #define MSE_UNKOWN	2		    /* unkown */
5953887Smckusick     char		mse_code;	/* key or button code */
6053887Smckusick #define MSE_BUTNR	0		    /* right button */
6153887Smckusick #define MSE_BUTNM	1		    /* middle button */
6253887Smckusick #define MSE_BUTNL	2		    /* left button */
6353887Smckusick     char		mse_inval;
6453887Smckusick   /* for key code, see below */
6553887Smckusick     struct timeval	mse_time;	/* time when this event occurred */
6653887Smckusick };
6753887Smckusick 
6853887Smckusick struct ms_queue {
6953887Smckusick     int			mq_head;
7053887Smckusick     int			mq_tail;
7153887Smckusick #define MS_MAXREPORT	170
7253887Smckusick     struct ms_event	mq_queue[MS_MAXREPORT];
7353887Smckusick     int			dummy[2];
7453887Smckusick };
7553887Smckusick 
7653887Smckusick /* strct ms_param:
7753887Smckusick  *	when mouse is moved more than mp_delta, amount that exceeds
7853887Smckusick  *	the mp_delta is maginified by mp_mag(>0)
7953887Smckusick  */
8053887Smckusick struct ms_param {
8153887Smckusick     int    mp_delta;	/* threshold for maginification */
8253887Smckusick     int	   mp_mag;	/* magifying factor */
8353887Smckusick };
8453887Smckusick 
8553887Smckusick /* meaning of ms_eventmask */
8653887Smckusick #define	    MS_EMEVENT	0x80	/* 1 -> event mode */
8753887Smckusick #define	    MS_EMKEY	0x40	/* keyboard key changes -> event */
8853887Smckusick 
8953887Smckusick 		/* WARNING: use of MS_EMCORD[XY] is no recomended
9053887Smckusick 		 *	MS_EMCORD[XY] will disappear shortly
9153887Smckusick 		 */
9253887Smckusick #define	    MS_EMCORDY	0x20	/* coordinate y changes -> event */
9353887Smckusick #define	    MS_EMCORDX	0x10	/* coordinate x changes -> event */
9453887Smckusick 
9553887Smckusick #define	    MS_EMMOTION	0x10	/* coordinates changes -> event */
9653887Smckusick #define	    MS_EMBUTNL	0x04	/* left button changes -> event */
9753887Smckusick #define	    MS_EMBUTNM	0x02	/* mid button changes -> event */
9853887Smckusick #define	    MS_EMBUTNR	0x01	/* right button changes -> event */
9953887Smckusick 
10053887Smckusick 
10153887Smckusick /*
10253887Smckusick  * Key Code
10353887Smckusick  */
10453887Smckusick 
10553887Smckusick #define KEY_A		41
10653887Smckusick #define KEY_B		59
10753887Smckusick #define KEY_C		57
10853887Smckusick #define KEY_D		43
10953887Smckusick #define KEY_E		29
11053887Smckusick #define KEY_F		44
11153887Smckusick #define KEY_G		45
11253887Smckusick #define KEY_H		46
11353887Smckusick #define KEY_I		34
11453887Smckusick #define KEY_J		47
11553887Smckusick #define KEY_K		48
11653887Smckusick #define KEY_L		49
11753887Smckusick #define KEY_M		61
11853887Smckusick #define KEY_N		60
11953887Smckusick #define KEY_O		35
12053887Smckusick #define KEY_P		36
12153887Smckusick #define KEY_Q		27
12253887Smckusick #define KEY_R		30
12353887Smckusick #define KEY_S		42
12453887Smckusick #define KEY_T		31
12553887Smckusick #define KEY_U		33
12653887Smckusick #define KEY_V		58
12753887Smckusick #define KEY_W		28
12853887Smckusick #define KEY_X		56
12953887Smckusick #define KEY_Y		32
13053887Smckusick #define KEY_Z		55
13153887Smckusick #define KEY_0		21
13253887Smckusick #define KEY_1		12
13353887Smckusick #define KEY_2		13
13453887Smckusick #define KEY_3		14
13553887Smckusick #define KEY_4		15
13653887Smckusick #define KEY_5		16
13753887Smckusick #define KEY_6		17
13853887Smckusick #define KEY_7		18
13953887Smckusick #define KEY_8		19
14053887Smckusick #define KEY_9		20
14153887Smckusick #define KEY_MINUS	22	/* - */
14253887Smckusick #define KEY_EQUAL	23	/* = */
14353887Smckusick #define KEY_YEN		24	/* \ */
14453887Smckusick #define KEY_BRA		37	/* [ */
14553887Smckusick #define KEY_KET		38	/* ] */
14653887Smckusick #define KEY_SEMICOL	50	/* ; */
14753887Smckusick #define KEY_SQUOTE	51	/* ' */
14853887Smckusick #define KEY_BQUOTE	52	/* ` */
14953887Smckusick #define KEY_COMMA	62	/* , */
15053887Smckusick #define KEY_PERIOD	63	/* . */
15153887Smckusick #define KEY_SLASH	64	/* / */
15253887Smckusick #define KEY_RO		65	/* 'RO' (katakana) */
15353887Smckusick #define KEY_ESC		11
15453887Smckusick #define KEY_TAB		26
15553887Smckusick #define KEY_BS		25
15653887Smckusick #define KEY_DEL		39
15753887Smckusick #define KEY_CR		53	/* carrige return */
15853887Smckusick #define KEY_SP		70	/* space */
15953887Smckusick #define KEY_CTRL	40
16053887Smckusick #define KEY_SHIFTL	54	/* left shift key */
16153887Smckusick #define KEY_SHIFTR	66	/* right shift key */
16253887Smckusick #define KEY_ALT		67
16353887Smckusick #define KEY_CAPS	68
16453887Smckusick #define KEY_MUHENKAN	69
16553887Smckusick #define KEY_HENKAN	71
16653887Smckusick #define KEY_EISUU	72
16753887Smckusick #define KEY_KANA	73
16853887Smckusick #define KEY_JIKKOU	74
16953887Smckusick 
17053887Smckusick /* function key */
17153887Smckusick #define KEY_F1		1
17253887Smckusick #define KEY_F2		2
17353887Smckusick #define KEY_F3		3
17453887Smckusick #define KEY_F4		4
17553887Smckusick #define KEY_F5		5
17653887Smckusick #define KEY_F6		6
17753887Smckusick #define KEY_F7		7
17853887Smckusick #define KEY_F8		8
17953887Smckusick #define KEY_F9		9
18053887Smckusick #define KEY_F10		10
18153887Smckusick 
18253887Smckusick /* numeric keypad */
18353887Smckusick #define NKEY_0		87
18453887Smckusick #define NKEY_1		83
18553887Smckusick #define NKEY_2		84
18653887Smckusick #define NKEY_3		85
18753887Smckusick #define NKEY_4		79
18853887Smckusick #define NKEY_5		80
18953887Smckusick #define NKEY_6		81
19053887Smckusick #define NKEY_7		75
19153887Smckusick #define NKEY_8		76
19253887Smckusick #define NKEY_9		77
19353887Smckusick #define NKEY_PERIOD	89
19453887Smckusick #define NKEY_MINUS	78
19553887Smckusick #define NKEY_PLUS	82
19653887Smckusick #define NKEY_COMMA	86
19753887Smckusick #define NKEY_CR		90
19853887Smckusick #define NKEY_LEFT	91	/* arrow key */
19953887Smckusick #define NKEY_RIGHT	93
20053887Smckusick #define NKEY_UP		88
20153887Smckusick #define NKEY_DOWN	92
20253887Smckusick #define OKEY_SPACE	94
20353887Smckusick #define OKEY_EISUU	95
20453887Smckusick #define OKEY_SHIFTL	96
20553887Smckusick #define OKEY_SHIFTR	97
20653887Smckusick #define OKEY_KANA	98
20753887Smckusick #define OKEY_EQUAL	99
20853887Smckusick #define OKEY_ASTERISK	100
20953887Smckusick #define OKEY_SLASH	101
21053887Smckusick #define OKEY_TAB	102
21153887Smckusick 
21253887Smckusick /*
21353887Smckusick  * Mouse I/O contol commands
21453887Smckusick  */
21553887Smckusick 
21653887Smckusick #include <sys/ioctl.h>
21753887Smckusick 
21853887Smckusick #define	MSIOCGETEM	_IOR('M', 0, int)	/* get current event mask */
21953887Smckusick #define	MSIOCSETEM	_IOW('M', 1, int)	/* set event mask */
22053887Smckusick #define	MSIOCSETXY	_IOW('M', 2, struct ms_coord) /* set current x, y */
22153887Smckusick #define	MSIOCFLUSH	_IO('M', 3)		/* flush event queue */
22253887Smckusick #define	MSIOCSETPARAM	_IOW('M', 4, struct ms_param) /* set mouse parameter */
22353887Smckusick #define	MSIOCSETRANGE	_IOW('M', 5, struct ms_range) /* set mouse coordinate range */
22453887Smckusick 
22553887Smckusick #endif /* !__MOUSE__ */
226