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/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24#include <sys/types.h>
25#include <linux/types.h>
26#include "input-event-codes.h"
27struct input_event {
28/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29  struct timeval time;
30  __u16 type;
31  __u16 code;
32  __s32 value;
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34};
35#define EV_VERSION 0x010001
36struct input_id {
37  __u16 bustype;
38/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39  __u16 vendor;
40  __u16 product;
41  __u16 version;
42};
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44struct input_absinfo {
45  __s32 value;
46  __s32 minimum;
47  __s32 maximum;
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49  __s32 fuzz;
50  __s32 flat;
51  __s32 resolution;
52};
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54struct input_keymap_entry {
55#define INPUT_KEYMAP_BY_INDEX (1 << 0)
56  __u8 flags;
57  __u8 len;
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59  __u16 index;
60  __u32 keycode;
61  __u8 scancode[32];
62};
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64struct input_mask {
65  __u32 type;
66  __u32 codes_size;
67  __u64 codes_ptr;
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69};
70#define EVIOCGVERSION _IOR('E', 0x01, int)
71#define EVIOCGID _IOR('E', 0x02, struct input_id)
72#define EVIOCGREP _IOR('E', 0x03, unsigned int[2])
73/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74#define EVIOCSREP _IOW('E', 0x03, unsigned int[2])
75#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2])
76#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
77#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2])
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
80#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len)
81#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len)
82#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len)
83/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len)
85#define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len)
86#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len)
87#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len)
88/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
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/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo)
95#define EVIOCSFF _IOW('E', 0x80, struct ff_effect)
96#define EVIOCRMFF _IOW('E', 0x81, int)
97#define EVIOCGEFFECTS _IOR('E', 0x84, int)
98/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99#define EVIOCGRAB _IOW('E', 0x90, int)
100#define EVIOCREVOKE _IOW('E', 0x91, int)
101#define EVIOCGMASK _IOR('E', 0x92, struct input_mask)
102#define EVIOCSMASK _IOW('E', 0x93, struct input_mask)
103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104#define EVIOCSCLOCKID _IOW('E', 0xa0, int)
105#define ID_BUS 0
106#define ID_VENDOR 1
107#define ID_PRODUCT 2
108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109#define ID_VERSION 3
110#define BUS_PCI 0x01
111#define BUS_ISAPNP 0x02
112#define BUS_USB 0x03
113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114#define BUS_HIL 0x04
115#define BUS_BLUETOOTH 0x05
116#define BUS_VIRTUAL 0x06
117#define BUS_ISA 0x10
118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119#define BUS_I8042 0x11
120#define BUS_XTKBD 0x12
121#define BUS_RS232 0x13
122#define BUS_GAMEPORT 0x14
123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124#define BUS_PARPORT 0x15
125#define BUS_AMIGA 0x16
126#define BUS_ADB 0x17
127#define BUS_I2C 0x18
128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129#define BUS_HOST 0x19
130#define BUS_GSC 0x1A
131#define BUS_ATARI 0x1B
132#define BUS_SPI 0x1C
133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134#define MT_TOOL_FINGER 0
135#define MT_TOOL_PEN 1
136#define MT_TOOL_PALM 2
137#define MT_TOOL_MAX 2
138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139#define FF_STATUS_STOPPED 0x00
140#define FF_STATUS_PLAYING 0x01
141#define FF_STATUS_MAX 0x01
142struct ff_replay {
143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144  __u16 length;
145  __u16 delay;
146};
147struct ff_trigger {
148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149  __u16 button;
150  __u16 interval;
151};
152struct ff_envelope {
153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154  __u16 attack_length;
155  __u16 attack_level;
156  __u16 fade_length;
157  __u16 fade_level;
158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159};
160struct ff_constant_effect {
161  __s16 level;
162  struct ff_envelope envelope;
163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164};
165struct ff_ramp_effect {
166  __s16 start_level;
167  __s16 end_level;
168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169  struct ff_envelope envelope;
170};
171struct ff_condition_effect {
172  __u16 right_saturation;
173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174  __u16 left_saturation;
175  __s16 right_coeff;
176  __s16 left_coeff;
177  __u16 deadband;
178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179  __s16 center;
180};
181struct ff_periodic_effect {
182  __u16 waveform;
183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184  __u16 period;
185  __s16 magnitude;
186  __s16 offset;
187  __u16 phase;
188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189  struct ff_envelope envelope;
190  __u32 custom_len;
191  __s16 __user * custom_data;
192};
193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194struct ff_rumble_effect {
195  __u16 strong_magnitude;
196  __u16 weak_magnitude;
197};
198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199struct ff_effect {
200  __u16 type;
201  __s16 id;
202  __u16 direction;
203/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
204  struct ff_trigger trigger;
205  struct ff_replay replay;
206  union {
207    struct ff_constant_effect constant;
208/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
209    struct ff_ramp_effect ramp;
210    struct ff_periodic_effect periodic;
211    struct ff_condition_effect condition[2];
212    struct ff_rumble_effect rumble;
213/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
214  } u;
215};
216#define FF_RUMBLE 0x50
217#define FF_PERIODIC 0x51
218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219#define FF_CONSTANT 0x52
220#define FF_SPRING 0x53
221#define FF_FRICTION 0x54
222#define FF_DAMPER 0x55
223/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
224#define FF_INERTIA 0x56
225#define FF_RAMP 0x57
226#define FF_EFFECT_MIN FF_RUMBLE
227#define FF_EFFECT_MAX FF_RAMP
228/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
229#define FF_SQUARE 0x58
230#define FF_TRIANGLE 0x59
231#define FF_SINE 0x5a
232#define FF_SAW_UP 0x5b
233/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
234#define FF_SAW_DOWN 0x5c
235#define FF_CUSTOM 0x5d
236#define FF_WAVEFORM_MIN FF_SQUARE
237#define FF_WAVEFORM_MAX FF_CUSTOM
238/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
239#define FF_GAIN 0x60
240#define FF_AUTOCENTER 0x61
241#define FF_MAX_EFFECTS FF_GAIN
242#define FF_MAX 0x7f
243/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
244#define FF_CNT (FF_MAX + 1)
245#endif
246