/* $NetBSD: mouse.h,v 1.2 1999/02/15 04:36:35 hubertf Exp $ */ /* * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: $Hdr: mouse.h,v 4.300 91/06/09 06:42:56 root Rel41 $ SONY * * @(#)mouse.h 8.1 (Berkeley) 6/11/93 */ #ifndef __MOUSE__ #define __MOUSE__ 1 /* * mouse register structure definition. */ /* * mouse data (mouse X, Y coordinates and its button status) */ struct ms_data { int md_sw; /* mouse button */ #define MS_BUTNL 0x04 #define MS_BUTNM 0x02 #define MS_BUTNR 0x01 int md_x; /* x coordinate */ int md_y; /* y coordinate */ }; struct ms_coord { int mc_x; /* x coordinate */ int mc_y; /* y coordinate */ }; struct ms_range { struct ms_coord mr_min; /* upper left */ struct ms_coord mr_max; /* lower right */ }; /* * mouse event report * event report is queued when mouse is put in event mode * by using MIOC SETEM ioctl() */ struct ms_event { struct ms_data mse_data; /* mouse X, Y and button status */ char mse_trig; /* trigger that caused this event */ #define MSE_MOTION 0 /* mouse movement */ #define MSE_BUTTON 1 /* mouse buttons */ #define MSE_KEY 2 /* keyboard keys */ char mse_dir; /* key or button direction */ #define MSE_DOWN 0 /* down */ #define MSE_UP 1 /* up */ #define MSE_UNKOWN 2 /* unkown */ char mse_code; /* key or button code */ #define MSE_BUTNR 0 /* right button */ #define MSE_BUTNM 1 /* middle button */ #define MSE_BUTNL 2 /* left button */ char mse_inval; /* for key code, see below */ struct timeval mse_time; /* time when this event occurred */ }; struct ms_queue { int mq_head; int mq_tail; #define MS_MAXREPORT 170 struct ms_event mq_queue[MS_MAXREPORT]; int dummy[2]; }; /* strct ms_param: * when mouse is moved more than mp_delta, amount that exceeds * the mp_delta is maginified by mp_mag(>0) */ struct ms_param { int mp_delta; /* threshold for maginification */ int mp_mag; /* magifying factor */ }; /* meaning of ms_eventmask */ #define MS_EMEVENT 0x80 /* 1 -> event mode */ #define MS_EMKEY 0x40 /* keyboard key changes -> event */ /* WARNING: use of MS_EMCORD[XY] is no recomended * MS_EMCORD[XY] will disappear shortly */ #define MS_EMCORDY 0x20 /* coordinate y changes -> event */ #define MS_EMCORDX 0x10 /* coordinate x changes -> event */ #define MS_EMMOTION 0x10 /* coordinates changes -> event */ #define MS_EMBUTNL 0x04 /* left button changes -> event */ #define MS_EMBUTNM 0x02 /* mid button changes -> event */ #define MS_EMBUTNR 0x01 /* right button changes -> event */ /* * Key Code */ #define KEY_A 41 #define KEY_B 59 #define KEY_C 57 #define KEY_D 43 #define KEY_E 29 #define KEY_F 44 #define KEY_G 45 #define KEY_H 46 #define KEY_I 34 #define KEY_J 47 #define KEY_K 48 #define KEY_L 49 #define KEY_M 61 #define KEY_N 60 #define KEY_O 35 #define KEY_P 36 #define KEY_Q 27 #define KEY_R 30 #define KEY_S 42 #define KEY_T 31 #define KEY_U 33 #define KEY_V 58 #define KEY_W 28 #define KEY_X 56 #define KEY_Y 32 #define KEY_Z 55 #define KEY_0 21 #define KEY_1 12 #define KEY_2 13 #define KEY_3 14 #define KEY_4 15 #define KEY_5 16 #define KEY_6 17 #define KEY_7 18 #define KEY_8 19 #define KEY_9 20 #define KEY_MINUS 22 /* - */ #define KEY_EQUAL 23 /* = */ #define KEY_YEN 24 /* \ */ #define KEY_BRA 37 /* [ */ #define KEY_KET 38 /* ] */ #define KEY_SEMICOL 50 /* ; */ #define KEY_SQUOTE 51 /* ' */ #define KEY_BQUOTE 52 /* ` */ #define KEY_COMMA 62 /* , */ #define KEY_PERIOD 63 /* . */ #define KEY_SLASH 64 /* / */ #define KEY_RO 65 /* 'RO' (katakana) */ #define KEY_ESC 11 #define KEY_TAB 26 #define KEY_BS 25 #define KEY_DEL 39 #define KEY_CR 53 /* carrige return */ #define KEY_SP 70 /* space */ #define KEY_CTRL 40 #define KEY_SHIFTL 54 /* left shift key */ #define KEY_SHIFTR 66 /* right shift key */ #define KEY_ALT 67 #define KEY_CAPS 68 #define KEY_MUHENKAN 69 #define KEY_HENKAN 71 #define KEY_EISUU 72 #define KEY_KANA 73 #define KEY_JIKKOU 74 /* function key */ #define KEY_F1 1 #define KEY_F2 2 #define KEY_F3 3 #define KEY_F4 4 #define KEY_F5 5 #define KEY_F6 6 #define KEY_F7 7 #define KEY_F8 8 #define KEY_F9 9 #define KEY_F10 10 /* numeric keypad */ #define NKEY_0 87 #define NKEY_1 83 #define NKEY_2 84 #define NKEY_3 85 #define NKEY_4 79 #define NKEY_5 80 #define NKEY_6 81 #define NKEY_7 75 #define NKEY_8 76 #define NKEY_9 77 #define NKEY_PERIOD 89 #define NKEY_MINUS 78 #define NKEY_PLUS 82 #define NKEY_COMMA 86 #define NKEY_CR 90 #define NKEY_LEFT 91 /* arrow key */ #define NKEY_RIGHT 93 #define NKEY_UP 88 #define NKEY_DOWN 92 #define OKEY_SPACE 94 #define OKEY_EISUU 95 #define OKEY_SHIFTL 96 #define OKEY_SHIFTR 97 #define OKEY_KANA 98 #define OKEY_EQUAL 99 #define OKEY_ASTERISK 100 #define OKEY_SLASH 101 #define OKEY_TAB 102 /* * Mouse I/O contol commands */ #include #define MSIOCGETEM _IOR('M', 0, int) /* get current event mask */ #define MSIOCSETEM _IOW('M', 1, int) /* set event mask */ #define MSIOCSETXY _IOW('M', 2, struct ms_coord) /* set current x, y */ #define MSIOCFLUSH _IO('M', 3) /* flush event queue */ #define MSIOCSETPARAM _IOW('M', 4, struct ms_param) /* set mouse parameter */ #define MSIOCSETRANGE _IOW('M', 5, struct ms_range) /* set mouse coordinate range */ #endif /* !__MOUSE__ */