1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef _UAPI_INPUT_H 7 #define _UAPI_INPUT_H 8 #ifndef __KERNEL__ 9 #include <sys/time.h> 10 #include <sys/ioctl.h> 11 #include <sys/types.h> 12 #include <linux/types.h> 13 #endif 14 #include "input-event-codes.h" 15 struct input_event { 16 #if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL__) 17 struct timeval time; 18 #define input_event_sec time.tv_sec 19 #define input_event_usec time.tv_usec 20 #else 21 __kernel_ulong_t __sec; 22 #if defined(__sparc__) && defined(__arch64__) 23 unsigned int __usec; 24 unsigned int __pad; 25 #else 26 __kernel_ulong_t __usec; 27 #endif 28 #define input_event_sec __sec 29 #define input_event_usec __usec 30 #endif 31 __u16 type; 32 __u16 code; 33 __s32 value; 34 }; 35 #define EV_VERSION 0x010001 36 struct input_id { 37 __u16 bustype; 38 __u16 vendor; 39 __u16 product; 40 __u16 version; 41 }; 42 struct input_absinfo { 43 __s32 value; 44 __s32 minimum; 45 __s32 maximum; 46 __s32 fuzz; 47 __s32 flat; 48 __s32 resolution; 49 }; 50 struct input_keymap_entry { 51 #define INPUT_KEYMAP_BY_INDEX (1 << 0) 52 __u8 flags; 53 __u8 len; 54 __u16 index; 55 __u32 keycode; 56 __u8 scancode[32]; 57 }; 58 struct input_mask { 59 __u32 type; 60 __u32 codes_size; 61 __u64 codes_ptr; 62 }; 63 #define EVIOCGVERSION _IOR('E', 0x01, int) 64 #define EVIOCGID _IOR('E', 0x02, struct input_id) 65 #define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) 66 #define EVIOCSREP _IOW('E', 0x03, unsigned int[2]) 67 #define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2]) 68 #define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry) 69 #define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2]) 70 #define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry) 71 #define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) 72 #define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) 73 #define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) 74 #define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len) 75 #define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len) 76 #define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) 77 #define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) 78 #define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) 79 #define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len) 80 #define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len) 81 #define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo) 82 #define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo) 83 #define EVIOCSFF _IOW('E', 0x80, struct ff_effect) 84 #define EVIOCRMFF _IOW('E', 0x81, int) 85 #define EVIOCGEFFECTS _IOR('E', 0x84, int) 86 #define EVIOCGRAB _IOW('E', 0x90, int) 87 #define EVIOCREVOKE _IOW('E', 0x91, int) 88 #define EVIOCGMASK _IOR('E', 0x92, struct input_mask) 89 #define EVIOCSMASK _IOW('E', 0x93, struct input_mask) 90 #define EVIOCSCLOCKID _IOW('E', 0xa0, int) 91 #define ID_BUS 0 92 #define ID_VENDOR 1 93 #define ID_PRODUCT 2 94 #define ID_VERSION 3 95 #define BUS_PCI 0x01 96 #define BUS_ISAPNP 0x02 97 #define BUS_USB 0x03 98 #define BUS_HIL 0x04 99 #define BUS_BLUETOOTH 0x05 100 #define BUS_VIRTUAL 0x06 101 #define BUS_ISA 0x10 102 #define BUS_I8042 0x11 103 #define BUS_XTKBD 0x12 104 #define BUS_RS232 0x13 105 #define BUS_GAMEPORT 0x14 106 #define BUS_PARPORT 0x15 107 #define BUS_AMIGA 0x16 108 #define BUS_ADB 0x17 109 #define BUS_I2C 0x18 110 #define BUS_HOST 0x19 111 #define BUS_GSC 0x1A 112 #define BUS_ATARI 0x1B 113 #define BUS_SPI 0x1C 114 #define BUS_RMI 0x1D 115 #define BUS_CEC 0x1E 116 #define BUS_INTEL_ISHTP 0x1F 117 #define MT_TOOL_FINGER 0x00 118 #define MT_TOOL_PEN 0x01 119 #define MT_TOOL_PALM 0x02 120 #define MT_TOOL_DIAL 0x0a 121 #define MT_TOOL_MAX 0x0f 122 #define FF_STATUS_STOPPED 0x00 123 #define FF_STATUS_PLAYING 0x01 124 #define FF_STATUS_MAX 0x01 125 struct ff_replay { 126 __u16 length; 127 __u16 delay; 128 }; 129 struct ff_trigger { 130 __u16 button; 131 __u16 interval; 132 }; 133 struct ff_envelope { 134 __u16 attack_length; 135 __u16 attack_level; 136 __u16 fade_length; 137 __u16 fade_level; 138 }; 139 struct ff_constant_effect { 140 __s16 level; 141 struct ff_envelope envelope; 142 }; 143 struct ff_ramp_effect { 144 __s16 start_level; 145 __s16 end_level; 146 struct ff_envelope envelope; 147 }; 148 struct ff_condition_effect { 149 __u16 right_saturation; 150 __u16 left_saturation; 151 __s16 right_coeff; 152 __s16 left_coeff; 153 __u16 deadband; 154 __s16 center; 155 }; 156 struct ff_periodic_effect { 157 __u16 waveform; 158 __u16 period; 159 __s16 magnitude; 160 __s16 offset; 161 __u16 phase; 162 struct ff_envelope envelope; 163 __u32 custom_len; 164 __s16 __user *custom_data; 165 }; 166 struct ff_rumble_effect { 167 __u16 strong_magnitude; 168 __u16 weak_magnitude; 169 }; 170 struct ff_effect { 171 __u16 type; 172 __s16 id; 173 __u16 direction; 174 struct ff_trigger trigger; 175 struct ff_replay replay; 176 union { 177 struct ff_constant_effect constant; 178 struct ff_ramp_effect ramp; 179 struct ff_periodic_effect periodic; 180 struct ff_condition_effect condition[2]; 181 struct ff_rumble_effect rumble; 182 } u; 183 }; 184 #define FF_RUMBLE 0x50 185 #define FF_PERIODIC 0x51 186 #define FF_CONSTANT 0x52 187 #define FF_SPRING 0x53 188 #define FF_FRICTION 0x54 189 #define FF_DAMPER 0x55 190 #define FF_INERTIA 0x56 191 #define FF_RAMP 0x57 192 #define FF_EFFECT_MIN FF_RUMBLE 193 #define FF_EFFECT_MAX FF_RAMP 194 #define FF_SQUARE 0x58 195 #define FF_TRIANGLE 0x59 196 #define FF_SINE 0x5a 197 #define FF_SAW_UP 0x5b 198 #define FF_SAW_DOWN 0x5c 199 #define FF_CUSTOM 0x5d 200 #define FF_WAVEFORM_MIN FF_SQUARE 201 #define FF_WAVEFORM_MAX FF_CUSTOM 202 #define FF_GAIN 0x60 203 #define FF_AUTOCENTER 0x61 204 #define FF_MAX_EFFECTS FF_GAIN 205 #define FF_MAX 0x7f 206 #define FF_CNT (FF_MAX+1) 207 #endif 208