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