1*53ee8cc1Swenshuai.xi #ifndef _LINUX_JOYSTICK_H 2*53ee8cc1Swenshuai.xi #define _LINUX_JOYSTICK_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi /* 5*53ee8cc1Swenshuai.xi * $Id: joystick.h,v 1.3 2000/11/30 11:07:05 vojtech Exp $ 6*53ee8cc1Swenshuai.xi * 7*53ee8cc1Swenshuai.xi * Copyright (C) 1996-2000 Vojtech Pavlik 8*53ee8cc1Swenshuai.xi * 9*53ee8cc1Swenshuai.xi * Sponsored by SuSE 10*53ee8cc1Swenshuai.xi */ 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi /* 13*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or modify 14*53ee8cc1Swenshuai.xi * it under the terms of the GNU General Public License as published by 15*53ee8cc1Swenshuai.xi * the Free Software Foundation; either version 2 of the License, or 16*53ee8cc1Swenshuai.xi * (at your option) any later version. 17*53ee8cc1Swenshuai.xi * 18*53ee8cc1Swenshuai.xi * This program is distributed in the hope that it will be useful, 19*53ee8cc1Swenshuai.xi * but WITHOUT ANY WARRANTY; without even the implied warranty of 20*53ee8cc1Swenshuai.xi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21*53ee8cc1Swenshuai.xi * GNU General Public License for more details. 22*53ee8cc1Swenshuai.xi * 23*53ee8cc1Swenshuai.xi * You should have received a copy of the GNU General Public License 24*53ee8cc1Swenshuai.xi * along with this program; if not, write to the Free Software 25*53ee8cc1Swenshuai.xi * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 26*53ee8cc1Swenshuai.xi * 27*53ee8cc1Swenshuai.xi * Should you need to contact me, the author, you can do so either by 28*53ee8cc1Swenshuai.xi * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail: 29*53ee8cc1Swenshuai.xi * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic 30*53ee8cc1Swenshuai.xi */ 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi #include <asm/types.h> 33*53ee8cc1Swenshuai.xi #include <linux/input.h> 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi /* 36*53ee8cc1Swenshuai.xi * Version 37*53ee8cc1Swenshuai.xi */ 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi #define JS_VERSION 0x020100 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi /* 42*53ee8cc1Swenshuai.xi * Types and constants for reading from /dev/js 43*53ee8cc1Swenshuai.xi */ 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi #define JS_EVENT_BUTTON 0x01 /* button pressed/released */ 46*53ee8cc1Swenshuai.xi #define JS_EVENT_AXIS 0x02 /* joystick moved */ 47*53ee8cc1Swenshuai.xi #define JS_EVENT_INIT 0x80 /* initial state of device */ 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi struct js_event { 50*53ee8cc1Swenshuai.xi __u32 time; /* event timestamp in milliseconds */ 51*53ee8cc1Swenshuai.xi __s16 value; /* value */ 52*53ee8cc1Swenshuai.xi __u8 type; /* event type */ 53*53ee8cc1Swenshuai.xi __u8 number; /* axis/button number */ 54*53ee8cc1Swenshuai.xi }; 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi /* 57*53ee8cc1Swenshuai.xi * IOCTL commands for joystick driver 58*53ee8cc1Swenshuai.xi */ 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi #define JSIOCGVERSION _IOR('j', 0x01, __u32) /* get driver version */ 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi #define JSIOCGAXES _IOR('j', 0x11, __u8) /* get number of axes */ 63*53ee8cc1Swenshuai.xi #define JSIOCGBUTTONS _IOR('j', 0x12, __u8) /* get number of buttons */ 64*53ee8cc1Swenshuai.xi #define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) /* get identifier string */ 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi #define JSIOCSCORR _IOW('j', 0x21, struct js_corr) /* set correction values */ 67*53ee8cc1Swenshuai.xi #define JSIOCGCORR _IOR('j', 0x22, struct js_corr) /* get correction values */ 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xi #define JSIOCSAXMAP _IOW('j', 0x31, __u8[ABS_MAX + 1]) /* set axis mapping */ 70*53ee8cc1Swenshuai.xi #define JSIOCGAXMAP _IOR('j', 0x32, __u8[ABS_MAX + 1]) /* get axis mapping */ 71*53ee8cc1Swenshuai.xi #define JSIOCSBTNMAP _IOW('j', 0x33, __u16[KEY_MAX - BTN_MISC + 1]) /* set button mapping */ 72*53ee8cc1Swenshuai.xi #define JSIOCGBTNMAP _IOR('j', 0x34, __u16[KEY_MAX - BTN_MISC + 1]) /* get button mapping */ 73*53ee8cc1Swenshuai.xi 74*53ee8cc1Swenshuai.xi /* 75*53ee8cc1Swenshuai.xi * Types and constants for get/set correction 76*53ee8cc1Swenshuai.xi */ 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi #define JS_CORR_NONE 0x00 /* returns raw values */ 79*53ee8cc1Swenshuai.xi #define JS_CORR_BROKEN 0x01 /* broken line */ 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi struct js_corr { 82*53ee8cc1Swenshuai.xi __s32 coef[8]; 83*53ee8cc1Swenshuai.xi __s16 prec; 84*53ee8cc1Swenshuai.xi __u16 type; 85*53ee8cc1Swenshuai.xi }; 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi /* 88*53ee8cc1Swenshuai.xi * v0.x compatibility definitions 89*53ee8cc1Swenshuai.xi */ 90*53ee8cc1Swenshuai.xi 91*53ee8cc1Swenshuai.xi #define JS_RETURN sizeof(struct JS_DATA_TYPE) 92*53ee8cc1Swenshuai.xi #define JS_TRUE 1 93*53ee8cc1Swenshuai.xi #define JS_FALSE 0 94*53ee8cc1Swenshuai.xi #define JS_X_0 0x01 95*53ee8cc1Swenshuai.xi #define JS_Y_0 0x02 96*53ee8cc1Swenshuai.xi #define JS_X_1 0x04 97*53ee8cc1Swenshuai.xi #define JS_Y_1 0x08 98*53ee8cc1Swenshuai.xi #define JS_MAX 2 99*53ee8cc1Swenshuai.xi 100*53ee8cc1Swenshuai.xi #define JS_DEF_TIMEOUT 0x1300 101*53ee8cc1Swenshuai.xi #define JS_DEF_CORR 0 102*53ee8cc1Swenshuai.xi #define JS_DEF_TIMELIMIT 10L 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi #define JS_SET_CAL 1 105*53ee8cc1Swenshuai.xi #define JS_GET_CAL 2 106*53ee8cc1Swenshuai.xi #define JS_SET_TIMEOUT 3 107*53ee8cc1Swenshuai.xi #define JS_GET_TIMEOUT 4 108*53ee8cc1Swenshuai.xi #define JS_SET_TIMELIMIT 5 109*53ee8cc1Swenshuai.xi #define JS_GET_TIMELIMIT 6 110*53ee8cc1Swenshuai.xi #define JS_GET_ALL 7 111*53ee8cc1Swenshuai.xi #define JS_SET_ALL 8 112*53ee8cc1Swenshuai.xi 113*53ee8cc1Swenshuai.xi struct JS_DATA_TYPE { 114*53ee8cc1Swenshuai.xi __s32 buttons; 115*53ee8cc1Swenshuai.xi __s32 x; 116*53ee8cc1Swenshuai.xi __s32 y; 117*53ee8cc1Swenshuai.xi }; 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi struct JS_DATA_SAVE_TYPE_32 { 120*53ee8cc1Swenshuai.xi __s32 JS_TIMEOUT; 121*53ee8cc1Swenshuai.xi __s32 BUSY; 122*53ee8cc1Swenshuai.xi __s32 JS_EXPIRETIME; 123*53ee8cc1Swenshuai.xi __s32 JS_TIMELIMIT; 124*53ee8cc1Swenshuai.xi struct JS_DATA_TYPE JS_SAVE; 125*53ee8cc1Swenshuai.xi struct JS_DATA_TYPE JS_CORR; 126*53ee8cc1Swenshuai.xi }; 127*53ee8cc1Swenshuai.xi 128*53ee8cc1Swenshuai.xi struct JS_DATA_SAVE_TYPE_64 { 129*53ee8cc1Swenshuai.xi __s32 JS_TIMEOUT; 130*53ee8cc1Swenshuai.xi __s32 BUSY; 131*53ee8cc1Swenshuai.xi __s64 JS_EXPIRETIME; 132*53ee8cc1Swenshuai.xi __s64 JS_TIMELIMIT; 133*53ee8cc1Swenshuai.xi struct JS_DATA_TYPE JS_SAVE; 134*53ee8cc1Swenshuai.xi struct JS_DATA_TYPE JS_CORR; 135*53ee8cc1Swenshuai.xi }; 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi #endif /* _LINUX_JOYSTICK_H */ 139