blob: e107211fd1017a7b36a8b618a510b93945815ceb [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _UAPI_INPUT_H
8#define _UAPI_INPUT_H
9#include <sys/time.h>
10#include <sys/ioctl.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070011#include <sys/types.h>
12#include <linux/types.h>
Christopher Ferris05d08e92016-02-04 13:16:38 -080013#include "input-event-codes.h"
Ben Cheng655a7c02013-10-16 16:09:24 -070014struct input_event {
Christopher Ferrisd842e432019-03-07 10:21:59 -080015#if __BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)
Christopher Ferris05d08e92016-02-04 13:16:38 -080016 struct timeval time;
Christopher Ferris76a1d452018-06-27 14:12:29 -070017#define input_event_sec time.tv_sec
18#define input_event_usec time.tv_usec
19#else
20 __kernel_ulong_t __sec;
Christopher Ferrisd842e432019-03-07 10:21:59 -080021#if defined(__sparc__) && defined(__arch64__)
22 unsigned int __usec;
Christopher Ferrisd32ca142020-02-04 16:16:51 -080023 unsigned int __pad;
Christopher Ferrisd842e432019-03-07 10:21:59 -080024#else
Christopher Ferris76a1d452018-06-27 14:12:29 -070025 __kernel_ulong_t __usec;
Christopher Ferrisd842e432019-03-07 10:21:59 -080026#endif
Christopher Ferris76a1d452018-06-27 14:12:29 -070027#define input_event_sec __sec
28#define input_event_usec __usec
29#endif
Tao Baod7db5942015-01-28 10:07:51 -080030 __u16 type;
31 __u16 code;
32 __s32 value;
Christopher Ferris05d08e92016-02-04 13:16:38 -080033};
Ben Cheng655a7c02013-10-16 16:09:24 -070034#define EV_VERSION 0x010001
35struct input_id {
Tao Baod7db5942015-01-28 10:07:51 -080036 __u16 bustype;
Christopher Ferris05d08e92016-02-04 13:16:38 -080037 __u16 vendor;
Tao Baod7db5942015-01-28 10:07:51 -080038 __u16 product;
39 __u16 version;
Ben Cheng655a7c02013-10-16 16:09:24 -070040};
Christopher Ferris05d08e92016-02-04 13:16:38 -080041struct input_absinfo {
Tao Baod7db5942015-01-28 10:07:51 -080042 __s32 value;
43 __s32 minimum;
44 __s32 maximum;
Christopher Ferris05d08e92016-02-04 13:16:38 -080045 __s32 fuzz;
Tao Baod7db5942015-01-28 10:07:51 -080046 __s32 flat;
47 __s32 resolution;
Ben Cheng655a7c02013-10-16 16:09:24 -070048};
Christopher Ferris05d08e92016-02-04 13:16:38 -080049struct input_keymap_entry {
Ben Cheng655a7c02013-10-16 16:09:24 -070050#define INPUT_KEYMAP_BY_INDEX (1 << 0)
Tao Baod7db5942015-01-28 10:07:51 -080051 __u8 flags;
52 __u8 len;
Christopher Ferris05d08e92016-02-04 13:16:38 -080053 __u16 index;
Tao Baod7db5942015-01-28 10:07:51 -080054 __u32 keycode;
55 __u8 scancode[32];
Ben Cheng655a7c02013-10-16 16:09:24 -070056};
Christopher Ferris05d08e92016-02-04 13:16:38 -080057struct input_mask {
58 __u32 type;
59 __u32 codes_size;
60 __u64 codes_ptr;
Christopher Ferris05d08e92016-02-04 13:16:38 -080061};
62#define EVIOCGVERSION _IOR('E', 0x01, int)
Ben Cheng655a7c02013-10-16 16:09:24 -070063#define EVIOCGID _IOR('E', 0x02, struct input_id)
64#define EVIOCGREP _IOR('E', 0x03, unsigned int[2])
65#define EVIOCSREP _IOW('E', 0x03, unsigned int[2])
66#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2])
Ben Cheng655a7c02013-10-16 16:09:24 -070067#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
68#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2])
69#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
70#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len)
Ben Cheng655a7c02013-10-16 16:09:24 -070071#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len)
72#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len)
73#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len)
74#define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len)
Ben Cheng655a7c02013-10-16 16:09:24 -070075#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len)
76#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len)
77#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len)
78#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len)
Ben Cheng655a7c02013-10-16 16:09:24 -070079#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len)
80#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo)
Christopher Ferris05d08e92016-02-04 13:16:38 -080081#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo)
82#define EVIOCSFF _IOW('E', 0x80, struct ff_effect)
Ben Cheng655a7c02013-10-16 16:09:24 -070083#define EVIOCRMFF _IOW('E', 0x81, int)
84#define EVIOCGEFFECTS _IOR('E', 0x84, int)
85#define EVIOCGRAB _IOW('E', 0x90, int)
Christopher Ferris38062f92014-07-09 15:33:25 -070086#define EVIOCREVOKE _IOW('E', 0x91, int)
Christopher Ferris05d08e92016-02-04 13:16:38 -080087#define EVIOCGMASK _IOR('E', 0x92, struct input_mask)
88#define EVIOCSMASK _IOW('E', 0x93, struct input_mask)
Elliott Hughes8cb52b02013-11-21 13:43:23 -080089#define EVIOCSCLOCKID _IOW('E', 0xa0, int)
Ben Cheng655a7c02013-10-16 16:09:24 -070090#define ID_BUS 0
91#define ID_VENDOR 1
92#define ID_PRODUCT 2
Ben Cheng655a7c02013-10-16 16:09:24 -070093#define ID_VERSION 3
94#define BUS_PCI 0x01
95#define BUS_ISAPNP 0x02
96#define BUS_USB 0x03
Ben Cheng655a7c02013-10-16 16:09:24 -070097#define BUS_HIL 0x04
98#define BUS_BLUETOOTH 0x05
99#define BUS_VIRTUAL 0x06
100#define BUS_ISA 0x10
Ben Cheng655a7c02013-10-16 16:09:24 -0700101#define BUS_I8042 0x11
102#define BUS_XTKBD 0x12
103#define BUS_RS232 0x13
104#define BUS_GAMEPORT 0x14
Ben Cheng655a7c02013-10-16 16:09:24 -0700105#define BUS_PARPORT 0x15
106#define BUS_AMIGA 0x16
107#define BUS_ADB 0x17
108#define BUS_I2C 0x18
Ben Cheng655a7c02013-10-16 16:09:24 -0700109#define BUS_HOST 0x19
110#define BUS_GSC 0x1A
111#define BUS_ATARI 0x1B
112#define BUS_SPI 0x1C
Christopher Ferris106b3a82016-08-24 12:15:38 -0700113#define BUS_RMI 0x1D
114#define BUS_CEC 0x1E
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800115#define BUS_INTEL_ISHTP 0x1F
Christopher Ferris80ae69d2022-08-02 16:32:21 -0700116#define BUS_AMD_SFH 0x20
Christopher Ferris9ce28842018-10-25 12:11:39 -0700117#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
Ben Cheng655a7c02013-10-16 16:09:24 -0700122#define FF_STATUS_STOPPED 0x00
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800123#define FF_STATUS_PLAYING 0x01
Ben Cheng655a7c02013-10-16 16:09:24 -0700124#define FF_STATUS_MAX 0x01
125struct ff_replay {
Tao Baod7db5942015-01-28 10:07:51 -0800126 __u16 length;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800127 __u16 delay;
Ben Cheng655a7c02013-10-16 16:09:24 -0700128};
129struct ff_trigger {
Tao Baod7db5942015-01-28 10:07:51 -0800130 __u16 button;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800131 __u16 interval;
Ben Cheng655a7c02013-10-16 16:09:24 -0700132};
133struct ff_envelope {
Tao Baod7db5942015-01-28 10:07:51 -0800134 __u16 attack_length;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800135 __u16 attack_level;
Tao Baod7db5942015-01-28 10:07:51 -0800136 __u16 fade_length;
137 __u16 fade_level;
Ben Cheng655a7c02013-10-16 16:09:24 -0700138};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800139struct ff_constant_effect {
Tao Baod7db5942015-01-28 10:07:51 -0800140 __s16 level;
141 struct ff_envelope envelope;
Ben Cheng655a7c02013-10-16 16:09:24 -0700142};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800143struct ff_ramp_effect {
Tao Baod7db5942015-01-28 10:07:51 -0800144 __s16 start_level;
145 __s16 end_level;
Tao Baod7db5942015-01-28 10:07:51 -0800146 struct ff_envelope envelope;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800147};
Ben Cheng655a7c02013-10-16 16:09:24 -0700148struct ff_condition_effect {
Tao Baod7db5942015-01-28 10:07:51 -0800149 __u16 right_saturation;
Tao Baod7db5942015-01-28 10:07:51 -0800150 __u16 left_saturation;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800151 __s16 right_coeff;
Tao Baod7db5942015-01-28 10:07:51 -0800152 __s16 left_coeff;
153 __u16 deadband;
Tao Baod7db5942015-01-28 10:07:51 -0800154 __s16 center;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800155};
Ben Cheng655a7c02013-10-16 16:09:24 -0700156struct ff_periodic_effect {
Tao Baod7db5942015-01-28 10:07:51 -0800157 __u16 waveform;
Tao Baod7db5942015-01-28 10:07:51 -0800158 __u16 period;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800159 __s16 magnitude;
Tao Baod7db5942015-01-28 10:07:51 -0800160 __s16 offset;
161 __u16 phase;
Tao Baod7db5942015-01-28 10:07:51 -0800162 struct ff_envelope envelope;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800163 __u32 custom_len;
Elliott Hughes0f0c18f2023-03-29 15:53:31 -0700164 __s16 * custom_data;
Ben Cheng655a7c02013-10-16 16:09:24 -0700165};
166struct ff_rumble_effect {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800167 __u16 strong_magnitude;
Tao Baod7db5942015-01-28 10:07:51 -0800168 __u16 weak_magnitude;
Ben Cheng655a7c02013-10-16 16:09:24 -0700169};
170struct ff_effect {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800171 __u16 type;
Tao Baod7db5942015-01-28 10:07:51 -0800172 __s16 id;
173 __u16 direction;
Tao Baod7db5942015-01-28 10:07:51 -0800174 struct ff_trigger trigger;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800175 struct ff_replay replay;
Tao Baod7db5942015-01-28 10:07:51 -0800176 union {
177 struct ff_constant_effect constant;
Tao Baod7db5942015-01-28 10:07:51 -0800178 struct ff_ramp_effect ramp;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800179 struct ff_periodic_effect periodic;
Tao Baod7db5942015-01-28 10:07:51 -0800180 struct ff_condition_effect condition[2];
181 struct ff_rumble_effect rumble;
Tao Baod7db5942015-01-28 10:07:51 -0800182 } u;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800183};
Ben Cheng655a7c02013-10-16 16:09:24 -0700184#define FF_RUMBLE 0x50
185#define FF_PERIODIC 0x51
186#define FF_CONSTANT 0x52
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800187#define FF_SPRING 0x53
Ben Cheng655a7c02013-10-16 16:09:24 -0700188#define FF_FRICTION 0x54
189#define FF_DAMPER 0x55
190#define FF_INERTIA 0x56
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800191#define FF_RAMP 0x57
Ben Cheng655a7c02013-10-16 16:09:24 -0700192#define FF_EFFECT_MIN FF_RUMBLE
193#define FF_EFFECT_MAX FF_RAMP
194#define FF_SQUARE 0x58
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800195#define FF_TRIANGLE 0x59
Ben Cheng655a7c02013-10-16 16:09:24 -0700196#define FF_SINE 0x5a
197#define FF_SAW_UP 0x5b
198#define FF_SAW_DOWN 0x5c
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800199#define FF_CUSTOM 0x5d
Ben Cheng655a7c02013-10-16 16:09:24 -0700200#define FF_WAVEFORM_MIN FF_SQUARE
201#define FF_WAVEFORM_MAX FF_CUSTOM
202#define FF_GAIN 0x60
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800203#define FF_AUTOCENTER 0x61
Christopher Ferris05d08e92016-02-04 13:16:38 -0800204#define FF_MAX_EFFECTS FF_GAIN
Ben Cheng655a7c02013-10-16 16:09:24 -0700205#define FF_MAX 0x7f
Christopher Ferris05d08e92016-02-04 13:16:38 -0800206#define FF_CNT (FF_MAX + 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800207#endif