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