XenevaOS
Loading...
Searching...
No Matches
input.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * Copyright (c) 1999-2002 Vojtech Pavlik
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 */
9#ifndef _UAPI_INPUT_H
10#define _UAPI_INPUT_H
11
12
13#ifndef __KERNEL__
14#include <sys/time.h>
15#include <sys/ioctl.h>
16#include <sys/types.h>
17#include <linux/types.h>
18#endif
19
20#include "input-event-codes.h"
21
22/*
23 * The event structure itself
24 * Note that __USE_TIME_BITS64 is defined by libc based on
25 * application's request to use 64 bit time_t.
26 */
27
29#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL__)
30 struct timeval time;
31#define input_event_sec time.tv_sec
32#define input_event_usec time.tv_usec
33#else
34 __kernel_ulong_t __sec;
35#if defined(__sparc__) && defined(__arch64__)
36 unsigned int __usec;
37 unsigned int __pad;
38#else
39 __kernel_ulong_t __usec;
40#endif
41#define input_event_sec __sec
42#define input_event_usec __usec
43#endif
47};
48
49/*
50 * Protocol version.
51 */
52
53#define EV_VERSION 0x010001
54
55/*
56 * IOCTLs (0x00 - 0x7f)
57 */
58
65
101
118#define INPUT_KEYMAP_BY_INDEX (1 << 0)
124};
125
131
132#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
133#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
134#define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat settings */
135#define EVIOCSREP _IOW('E', 0x03, unsigned int[2]) /* set repeat settings */
136
137#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2]) /* get keycode */
138#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
139#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2]) /* set keycode */
140#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
141
142#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */
143#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */
144#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */
145#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len) /* get device properties */
146
171#define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len)
172
173#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global key state */
174#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */
175#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */
176#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len) /* get all switch states */
177
178#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len) /* get event bits */
179#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo) /* get abs value/limits */
180#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo) /* set abs value/limits */
181
182#define EVIOCSFF _IOW('E', 0x80, struct ff_effect) /* send a force effect to a force feedback device */
183#define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */
184#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */
185
186#define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
187#define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
188
218#define EVIOCGMASK _IOR('E', 0x92, struct input_mask) /* Get event-masks */
219
241#define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */
242
243#define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
244
245/*
246 * IDs.
247 */
248
249#define ID_BUS 0
250#define ID_VENDOR 1
251#define ID_PRODUCT 2
252#define ID_VERSION 3
253
254#define BUS_PCI 0x01
255#define BUS_ISAPNP 0x02
256#define BUS_USB 0x03
257#define BUS_HIL 0x04
258#define BUS_BLUETOOTH 0x05
259#define BUS_VIRTUAL 0x06
260
261#define BUS_ISA 0x10
262#define BUS_I8042 0x11
263#define BUS_XTKBD 0x12
264#define BUS_RS232 0x13
265#define BUS_GAMEPORT 0x14
266#define BUS_PARPORT 0x15
267#define BUS_AMIGA 0x16
268#define BUS_ADB 0x17
269#define BUS_I2C 0x18
270#define BUS_HOST 0x19
271#define BUS_GSC 0x1A
272#define BUS_ATARI 0x1B
273#define BUS_SPI 0x1C
274#define BUS_RMI 0x1D
275#define BUS_CEC 0x1E
276#define BUS_INTEL_ISHTP 0x1F
277#define BUS_AMD_SFH 0x20
278#define BUS_SDW 0x21
279
280/*
281 * MT_TOOL types
282 */
283#define MT_TOOL_FINGER 0x00
284#define MT_TOOL_PEN 0x01
285#define MT_TOOL_PALM 0x02
286#define MT_TOOL_DIAL 0x0a
287#define MT_TOOL_MAX 0x0f
288
289/*
290 * Values describing the status of a force-feedback effect
291 */
292#define FF_STATUS_STOPPED 0x00
293#define FF_STATUS_PLAYING 0x01
294#define FF_STATUS_MAX 0x01
295
296/*
297 * Structures used in ioctls to upload effects to a device
298 * They are pieces of a bigger structure (called ff_effect)
299 */
300
301/*
302 * All duration values are expressed in ms. Values above 32767 ms (0x7fff)
303 * should not be used and have unspecified results.
304 */
305
315
325
344
354
366
387
418
431
449
473struct ff_effect {
479
480 union {
481 struct ff_constant_effect constant;
482 struct ff_ramp_effect ramp;
483 struct ff_periodic_effect periodic;
484 struct ff_condition_effect condition[2]; /* One for each axis */
485 struct ff_rumble_effect rumble;
486 struct ff_haptic_effect haptic;
487 } u;
488};
489
490/*
491 * Force feedback effect types
492 */
493
494#define FF_HAPTIC 0x4f
495#define FF_RUMBLE 0x50
496#define FF_PERIODIC 0x51
497#define FF_CONSTANT 0x52
498#define FF_SPRING 0x53
499#define FF_FRICTION 0x54
500#define FF_DAMPER 0x55
501#define FF_INERTIA 0x56
502#define FF_RAMP 0x57
503
504#define FF_EFFECT_MIN FF_HAPTIC
505#define FF_EFFECT_MAX FF_RAMP
506
507/*
508 * Force feedback periodic effect types
509 */
510
511#define FF_SQUARE 0x58
512#define FF_TRIANGLE 0x59
513#define FF_SINE 0x5a
514#define FF_SAW_UP 0x5b
515#define FF_SAW_DOWN 0x5c
516#define FF_CUSTOM 0x5d
517
518#define FF_WAVEFORM_MIN FF_SQUARE
519#define FF_WAVEFORM_MAX FF_CUSTOM
520
521/*
522 * Set ff device properties
523 */
524
525#define FF_GAIN 0x60
526#define FF_AUTOCENTER 0x61
527
528/*
529 * ff->playback(effect_id = FF_GAIN) is the first effect_id to
530 * cause a collision with another ff method, in this case ff->set_gain().
531 * Therefore the greatest safe value for effect_id is FF_GAIN - 1,
532 * and thus the total number of effects should never exceed FF_GAIN.
533 */
534#define FF_MAX_EFFECTS FF_GAIN
535
536#define FF_MAX 0x7f
537#define FF_CNT (FF_MAX+1)
538
539#endif /* _UAPI_INPUT_H */
unsigned long long __kernel_ulong_t
Definition types.h:47
#define __user
Definition compiler.h:63
int32_t __s32
Definition drm.h:41
uint32_t __u32
Definition drm.h:42
uint8_t __u8
Definition drm.h:38
int16_t __s16
Definition drm.h:39
uint16_t __u16
Definition drm.h:40
uint64_t __u64
Definition drm.h:44
Definition input.h:377
__u16 left_saturation
Definition input.h:379
__s16 center
Definition input.h:385
__u16 deadband
Definition input.h:384
__u16 right_saturation
Definition input.h:378
__s16 right_coeff
Definition input.h:381
__s16 left_coeff
Definition input.h:382
Definition input.h:350
struct ff_envelope envelope
Definition input.h:352
__s16 level
Definition input.h:351
Definition input.h:473
__u16 type
Definition input.h:474
__s16 id
Definition input.h:475
__u16 direction
Definition input.h:476
struct ff_trigger trigger
Definition input.h:477
struct ff_replay replay
Definition input.h:478
union ff_effect::@263 u
Definition input.h:338
__u16 fade_level
Definition input.h:342
__u16 attack_level
Definition input.h:340
__u16 attack_length
Definition input.h:339
__u16 fade_length
Definition input.h:341
Definition input.h:441
__u16 intensity
Definition input.h:445
__u16 vendor_id
Definition input.h:443
__u8 vendor_waveform_page
Definition input.h:444
__u16 hid_usage
Definition input.h:442
__u16 retrigger_period
Definition input.h:447
__u16 repeat_count
Definition input.h:446
Definition input.h:406
__s16 offset
Definition input.h:410
__s16 __user * custom_data
Definition input.h:416
__u32 custom_len
Definition input.h:415
struct ff_envelope envelope
Definition input.h:413
__u16 waveform
Definition input.h:407
__u16 phase
Definition input.h:411
__s16 magnitude
Definition input.h:409
__u16 period
Definition input.h:408
Definition input.h:361
__s16 end_level
Definition input.h:363
__s16 start_level
Definition input.h:362
struct ff_envelope envelope
Definition input.h:364
Definition input.h:311
__u16 length
Definition input.h:312
__u16 delay
Definition input.h:313
Definition input.h:427
__u16 weak_magnitude
Definition input.h:429
__u16 strong_magnitude
Definition input.h:428
Definition input.h:321
__u16 interval
Definition input.h:323
__u16 button
Definition input.h:322
Definition input.h:93
__s32 flat
Definition input.h:98
__s32 fuzz
Definition input.h:97
__s32 resolution
Definition input.h:99
__s32 maximum
Definition input.h:96
__s32 minimum
Definition input.h:95
__s32 value
Definition input.h:94
Definition input.h:28
__u16 type
Definition input.h:44
struct timeval time
Definition input.h:30
__s32 value
Definition input.h:46
__u16 code
Definition input.h:45
Definition input.h:59
__u16 bustype
Definition input.h:60
__u16 product
Definition input.h:62
__u16 version
Definition input.h:63
__u16 vendor
Definition input.h:61
Definition input.h:117
__u8 len
Definition input.h:120
__u32 keycode
Definition input.h:122
__u8 flags
Definition input.h:119
__u8 scancode[32]
Definition input.h:123
__u16 index
Definition input.h:121
Definition input.h:126
__u32 type
Definition input.h:127
__u32 codes_size
Definition input.h:128
__u64 codes_ptr
Definition input.h:129
Definition time.h:47