source: svn/trunk/newcon3bcm2_21bu/toolchain/mipsel-linux-uclibc/include/linux/input.h @ 52

Last change on this file since 52 was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 18.1 KB
Line 
1#ifndef _INPUT_H
2#define _INPUT_H
3
4/*
5 * Copyright (c) 1999-2002 Vojtech Pavlik
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published by
9 * the Free Software Foundation.
10 */
11
12#include <sys/time.h>
13#include <sys/ioctl.h>
14#include <asm/types.h>
15
16/*
17 * The event structure itself
18 */
19
20struct input_event {
21        struct timeval time;
22        __u16 type;
23        __u16 code;
24        __s32 value;
25};
26
27/*
28 * Protocol version.
29 */
30
31#define EV_VERSION              0x010000
32
33/*
34 * IOCTLs (0x00 - 0x7f)
35 */
36
37struct input_id {
38        __u16 bustype;
39        __u16 vendor;
40        __u16 product;
41        __u16 version;
42};
43
44struct input_absinfo {
45        __s32 value;
46        __s32 minimum;
47        __s32 maximum;
48        __s32 fuzz;
49        __s32 flat;
50};
51
52#define EVIOCGVERSION           _IOR('E', 0x01, int)                    /* get driver version */
53#define EVIOCGID                _IOR('E', 0x02, struct input_id)        /* get device ID */
54#define EVIOCGREP               _IOR('E', 0x03, int[2])                 /* [<2.6] get repeat settings */
55#define EVIOCSREP               _IOW('E', 0x03, int[2])                 /* [<2.6] get repeat settings */
56#define EVIOCGKEYCODE           _IOR('E', 0x04, int[2])                 /* get keycode */
57#define EVIOCSKEYCODE           _IOW('E', 0x04, int[2])                 /* set keycode */
58/*#define EVIOCGKEY             _IOR('E', 0x05, int[2])                  [<2.6] get key value - duplicate with a 2.6 definition, so commented out*/
59#define EVIOCGNAME(len)         _IOC(_IOC_READ, 'E', 0x06, len)         /* get device name */
60#define EVIOCGBUS               _IOR('E', 0x07, __s16[4])               /* [<2.6 ONLY] get bus address */
61#define EVIOCGPHYS(len)         _IOC(_IOC_READ, 'E', 0x07, len)         /* get physical location */
62#define EVIOCGUNIQ(len)         _IOC(_IOC_READ, 'E', 0x08, len)         /* get unique identifier */
63
64#define EVIOCGKEY(len)          _IOC(_IOC_READ, 'E', 0x18, len)         /* get global keystate */
65#define EVIOCGLED(len)          _IOC(_IOC_READ, 'E', 0x19, len)         /* get all LEDs */
66#define EVIOCGSND(len)          _IOC(_IOC_READ, 'E', 0x1a, len)         /* get all sounds status */
67
68#define EVIOCGBIT(ev,len)       _IOC(_IOC_READ, 'E', 0x20 + ev, len)    /* get event bits */
69#define EVIOCGABS(abs)          _IOR('E', 0x40 + abs, struct input_absinfo)             /* get abs value/limits */
70#define EVIOCSABS(abs)          _IOW('E', 0xc0 + abs, struct input_absinfo)             /* set abs value/limits */
71
72#define EVIOCSFF                _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect))   /* send a force effect to a force feedback device */
73#define EVIOCRMFF               _IOW('E', 0x81, int)                    /* Erase a force effect */
74#define EVIOCSGAIN              _IOW('E', 0x82, unsigned short)         /* [<2.6] Set overall gain */
75#define EVIOCSAUTOCENTER        _IOW('E', 0x83, unsigned short)         /* [<2.6] Enable or disable auto-centering */
76#define EVIOCGEFFECTS           _IOR('E', 0x84, int)                    /* Report number of effects playable at the same time */
77
78#define EVIOCGRAB               _IOW('E', 0x90, int)                    /* Grab/Release device */
79
80/*
81 * Event types
82 */
83
84#define EV_RST                  0x00            /* [<2.6] */
85#define EV_SYN                  0x00
86#define EV_KEY                  0x01
87#define EV_REL                  0x02
88#define EV_ABS                  0x03
89#define EV_MSC                  0x04
90#define EV_LED                  0x11
91#define EV_SND                  0x12
92#define EV_REP                  0x14
93#define EV_FF                   0x15
94#define EV_PWR                  0x16
95#define EV_FF_STATUS            0x17
96#define EV_MAX                  0x1f
97
98/*
99 * Synchronization events.
100 */
101
102#define SYN_REPORT              0
103#define SYN_CONFIG              1
104
105/*
106 * Keys and buttons
107 */
108
109#define KEY_RESERVED            0
110#define KEY_ESC                 1
111#define KEY_1                   2
112#define KEY_2                   3
113#define KEY_3                   4
114#define KEY_4                   5
115#define KEY_5                   6
116#define KEY_6                   7
117#define KEY_7                   8
118#define KEY_8                   9
119#define KEY_9                   10
120#define KEY_0                   11
121#define KEY_MINUS               12
122#define KEY_EQUAL               13
123#define KEY_BACKSPACE           14
124#define KEY_TAB                 15
125#define KEY_Q                   16
126#define KEY_W                   17
127#define KEY_E                   18
128#define KEY_R                   19
129#define KEY_T                   20
130#define KEY_Y                   21
131#define KEY_U                   22
132#define KEY_I                   23
133#define KEY_O                   24
134#define KEY_P                   25
135#define KEY_LEFTBRACE           26
136#define KEY_RIGHTBRACE          27
137#define KEY_ENTER               28
138#define KEY_LEFTCTRL            29
139#define KEY_A                   30
140#define KEY_S                   31
141#define KEY_D                   32
142#define KEY_F                   33
143#define KEY_G                   34
144#define KEY_H                   35
145#define KEY_J                   36
146#define KEY_K                   37
147#define KEY_L                   38
148#define KEY_SEMICOLON           39
149#define KEY_APOSTROPHE          40
150#define KEY_GRAVE               41
151#define KEY_LEFTSHIFT           42
152#define KEY_BACKSLASH           43
153#define KEY_Z                   44
154#define KEY_X                   45
155#define KEY_C                   46
156#define KEY_V                   47
157#define KEY_B                   48
158#define KEY_N                   49
159#define KEY_M                   50
160#define KEY_COMMA               51
161#define KEY_DOT                 52
162#define KEY_SLASH               53
163#define KEY_RIGHTSHIFT          54
164#define KEY_KPASTERISK          55
165#define KEY_LEFTALT             56
166#define KEY_SPACE               57
167#define KEY_CAPSLOCK            58
168#define KEY_F1                  59
169#define KEY_F2                  60
170#define KEY_F3                  61
171#define KEY_F4                  62
172#define KEY_F5                  63
173#define KEY_F6                  64
174#define KEY_F7                  65
175#define KEY_F8                  66
176#define KEY_F9                  67
177#define KEY_F10                 68
178#define KEY_NUMLOCK             69
179#define KEY_SCROLLLOCK          70
180#define KEY_KP7                 71
181#define KEY_KP8                 72
182#define KEY_KP9                 73
183#define KEY_KPMINUS             74
184#define KEY_KP4                 75
185#define KEY_KP5                 76
186#define KEY_KP6                 77
187#define KEY_KPPLUS              78
188#define KEY_KP1                 79
189#define KEY_KP2                 80
190#define KEY_KP3                 81
191#define KEY_KP0                 82
192#define KEY_KPDOT               83
193#define KEY_103RD               84
194
195#define KEY_ZENKAKUHANKAKU      85
196#define KEY_102ND               86
197#define KEY_F11                 87
198#define KEY_F12                 88
199#define KEY_RO                  89
200#define KEY_KATAKANA            90
201#define KEY_HIRAGANA            91
202#define KEY_HENKAN              92
203#define KEY_KATAKANAHIRAGANA    93
204#define KEY_MUHENKAN            94
205#define KEY_KPJPCOMMA           95
206#define KEY_KPENTER             96
207#define KEY_RIGHTCTRL           97
208#define KEY_KPSLASH             98
209#define KEY_SYSRQ               99
210#define KEY_RIGHTALT            100
211#define KEY_LINEFEED            101
212#define KEY_HOME                102
213#define KEY_UP                  103
214#define KEY_PAGEUP              104
215#define KEY_LEFT                105
216#define KEY_RIGHT               106
217#define KEY_END                 107
218#define KEY_DOWN                108
219#define KEY_PAGEDOWN            109
220#define KEY_INSERT              110
221#define KEY_DELETE              111
222#define KEY_MACRO               112
223#define KEY_MUTE                113
224#define KEY_VOLUMEDOWN          114
225#define KEY_VOLUMEUP            115
226#define KEY_POWER               116
227#define KEY_KPEQUAL             117
228#define KEY_KPPLUSMINUS         118
229#define KEY_PAUSE               119
230
231#define KEY_KPCOMMA             121
232#define KEY_HANGUEL             122
233#define KEY_HANJA               123
234#define KEY_YEN                 124
235#define KEY_LEFTMETA            125
236#define KEY_RIGHTMETA           126
237#define KEY_COMPOSE             127
238
239#define KEY_STOP                128
240#define KEY_AGAIN               129
241#define KEY_PROPS               130
242#define KEY_UNDO                131
243#define KEY_FRONT               132
244#define KEY_COPY                133
245#define KEY_OPEN                134
246#define KEY_PASTE               135
247#define KEY_FIND                136
248#define KEY_CUT                 137
249#define KEY_HELP                138
250#define KEY_MENU                139
251#define KEY_CALC                140
252#define KEY_SETUP               141
253#define KEY_SLEEP               142
254#define KEY_WAKEUP              143
255#define KEY_FILE                144
256#define KEY_SENDFILE            145
257#define KEY_DELETEFILE          146
258#define KEY_XFER                147
259#define KEY_PROG1               148
260#define KEY_PROG2               149
261#define KEY_WWW                 150
262#define KEY_MSDOS               151
263#define KEY_COFFEE              152
264#define KEY_DIRECTION           153
265#define KEY_CYCLEWINDOWS        154
266#define KEY_MAIL                155
267#define KEY_BOOKMARKS           156
268#define KEY_COMPUTER            157
269#define KEY_BACK                158
270#define KEY_FORWARD             159
271#define KEY_CLOSECD             160
272#define KEY_EJECTCD             161
273#define KEY_EJECTCLOSECD        162
274#define KEY_NEXTSONG            163
275#define KEY_PLAYPAUSE           164
276#define KEY_PREVIOUSSONG        165
277#define KEY_STOPCD              166
278#define KEY_RECORD              167
279#define KEY_REWIND              168
280#define KEY_PHONE               169
281#define KEY_ISO                 170
282#define KEY_CONFIG              171
283#define KEY_HOMEPAGE            172
284#define KEY_REFRESH             173
285#define KEY_EXIT                174
286#define KEY_MOVE                175
287#define KEY_EDIT                176
288#define KEY_SCROLLUP            177
289#define KEY_SCROLLDOWN          178
290#define KEY_KPLEFTPAREN         179
291#define KEY_KPRIGHTPAREN        180
292
293#define KEY_F13                 183
294#define KEY_F14                 184
295#define KEY_F15                 185
296#define KEY_F16                 186
297#define KEY_F17                 187
298#define KEY_F18                 188
299#define KEY_F19                 189
300#define KEY_F20                 190
301#define KEY_F21                 191
302#define KEY_F22                 192
303#define KEY_F23                 193
304#define KEY_F24                 194
305
306#define KEY_PLAYCD              200
307#define KEY_PAUSECD             201
308#define KEY_PROG3               202
309#define KEY_PROG4               203
310#define KEY_SUSPEND             205
311#define KEY_CLOSE               206
312#define KEY_PLAY                207
313#define KEY_FASTFORWARD         208
314#define KEY_BASSBOOST           209
315#define KEY_PRINT               210
316#define KEY_HP                  211
317#define KEY_CAMERA              212
318#define KEY_SOUND               213
319#define KEY_QUESTION            214
320#define KEY_EMAIL               215
321#define KEY_CHAT                216
322#define KEY_SEARCH              217
323#define KEY_CONNECT             218
324#define KEY_FINANCE             219
325#define KEY_SPORT               220
326#define KEY_SHOP                221
327#define KEY_ALTERASE            222
328#define KEY_CANCEL              223
329#define KEY_BRIGHTNESSDOWN      224
330#define KEY_BRIGHTNESSUP        225
331#define KEY_MEDIA               226
332
333#define KEY_SWITCHVIDEOMODE     227
334#define KEY_KBDILLUMTOGGLE      228
335#define KEY_KBDILLUMDOWN        229
336#define KEY_KBDILLUMUP          230
337
338#define KEY_UNKNOWN             240
339
340#define BTN_MISC                0x100
341#define BTN_0                   0x100
342#define BTN_1                   0x101
343#define BTN_2                   0x102
344#define BTN_3                   0x103
345#define BTN_4                   0x104
346#define BTN_5                   0x105
347#define BTN_6                   0x106
348#define BTN_7                   0x107
349#define BTN_8                   0x108
350#define BTN_9                   0x109
351
352#define BTN_MOUSE               0x110
353#define BTN_LEFT                0x110
354#define BTN_RIGHT               0x111
355#define BTN_MIDDLE              0x112
356#define BTN_SIDE                0x113
357#define BTN_EXTRA               0x114
358#define BTN_FORWARD             0x115
359#define BTN_BACK                0x116
360#define BTN_TASK                0x117
361
362#define BTN_JOYSTICK            0x120
363#define BTN_TRIGGER             0x120
364#define BTN_THUMB               0x121
365#define BTN_THUMB2              0x122
366#define BTN_TOP                 0x123
367#define BTN_TOP2                0x124
368#define BTN_PINKIE              0x125
369#define BTN_BASE                0x126
370#define BTN_BASE2               0x127
371#define BTN_BASE3               0x128
372#define BTN_BASE4               0x129
373#define BTN_BASE5               0x12a
374#define BTN_BASE6               0x12b
375#define BTN_DEAD                0x12f
376
377#define BTN_GAMEPAD             0x130
378#define BTN_A                   0x130
379#define BTN_B                   0x131
380#define BTN_C                   0x132
381#define BTN_X                   0x133
382#define BTN_Y                   0x134
383#define BTN_Z                   0x135
384#define BTN_TL                  0x136
385#define BTN_TR                  0x137
386#define BTN_TL2                 0x138
387#define BTN_TR2                 0x139
388#define BTN_SELECT              0x13a
389#define BTN_START               0x13b
390#define BTN_MODE                0x13c
391#define BTN_THUMBL              0x13d
392#define BTN_THUMBR              0x13e
393
394#define BTN_DIGI                0x140
395#define BTN_TOOL_PEN            0x140
396#define BTN_TOOL_RUBBER         0x141
397#define BTN_TOOL_BRUSH          0x142
398#define BTN_TOOL_PENCIL         0x143
399#define BTN_TOOL_AIRBRUSH       0x144
400#define BTN_TOOL_FINGER         0x145
401#define BTN_TOOL_MOUSE          0x146
402#define BTN_TOOL_LENS           0x147
403#define BTN_TOUCH               0x14a
404#define BTN_STYLUS              0x14b
405#define BTN_STYLUS2             0x14c
406#define BTN_TOOL_DOUBLETAP      0x14d
407#define BTN_TOOL_TRIPLETAP      0x14e
408
409#define BTN_WHEEL               0x150
410#define BTN_GEAR_DOWN           0x150
411#define BTN_GEAR_UP             0x151
412
413#define KEY_OK                  0x160
414#define KEY_SELECT              0x161
415#define KEY_GOTO                0x162
416#define KEY_CLEAR               0x163
417#define KEY_POWER2              0x164
418#define KEY_OPTION              0x165
419#define KEY_INFO                0x166
420#define KEY_TIME                0x167
421#define KEY_VENDOR              0x168
422#define KEY_ARCHIVE             0x169
423#define KEY_PROGRAM             0x16a
424#define KEY_CHANNEL             0x16b
425#define KEY_FAVORITES           0x16c
426#define KEY_EPG                 0x16d
427#define KEY_PVR                 0x16e
428#define KEY_MHP                 0x16f
429#define KEY_LANGUAGE            0x170
430#define KEY_TITLE               0x171
431#define KEY_SUBTITLE            0x172
432#define KEY_ANGLE               0x173
433#define KEY_ZOOM                0x174
434#define KEY_MODE                0x175
435#define KEY_KEYBOARD            0x176
436#define KEY_SCREEN              0x177
437#define KEY_PC                  0x178
438#define KEY_TV                  0x179
439#define KEY_TV2                 0x17a
440#define KEY_VCR                 0x17b
441#define KEY_VCR2                0x17c
442#define KEY_SAT                 0x17d
443#define KEY_SAT2                0x17e
444#define KEY_CD                  0x17f
445#define KEY_TAPE                0x180
446#define KEY_RADIO               0x181
447#define KEY_TUNER               0x182
448#define KEY_PLAYER              0x183
449#define KEY_TEXT                0x184
450#define KEY_DVD                 0x185
451#define KEY_AUX                 0x186
452#define KEY_MP3                 0x187
453#define KEY_AUDIO               0x188
454#define KEY_VIDEO               0x189
455#define KEY_DIRECTORY           0x18a
456#define KEY_LIST                0x18b
457#define KEY_MEMO                0x18c
458#define KEY_CALENDAR            0x18d
459#define KEY_RED                 0x18e
460#define KEY_GREEN               0x18f
461#define KEY_YELLOW              0x190
462#define KEY_BLUE                0x191
463#define KEY_CHANNELUP           0x192
464#define KEY_CHANNELDOWN         0x193
465#define KEY_FIRST               0x194
466#define KEY_LAST                0x195
467#define KEY_AB                  0x196
468#define KEY_NEXT                0x197
469#define KEY_RESTART             0x198
470#define KEY_SLOW                0x199
471#define KEY_SHUFFLE             0x19a
472#define KEY_BREAK               0x19b
473#define KEY_PREVIOUS            0x19c
474#define KEY_DIGITS              0x19d
475#define KEY_TEEN                0x19e
476#define KEY_TWEN                0x19f
477
478#define KEY_DEL_EOL             0x1c0
479#define KEY_DEL_EOS             0x1c1
480#define KEY_INS_LINE            0x1c2
481#define KEY_DEL_LINE            0x1c3
482
483#define KEY_FN                  0x1d0
484#define KEY_FN_ESC              0x1d1
485#define KEY_FN_F1               0x1d2
486#define KEY_FN_F2               0x1d3
487#define KEY_FN_F3               0x1d4
488#define KEY_FN_F4               0x1d5
489#define KEY_FN_F5               0x1d6
490#define KEY_FN_F6               0x1d7
491#define KEY_FN_F7               0x1d8
492#define KEY_FN_F8               0x1d9
493#define KEY_FN_F9               0x1da
494#define KEY_FN_F10              0x1db
495#define KEY_FN_F11              0x1dc
496#define KEY_FN_F12              0x1dd
497#define KEY_FN_1                0x1de
498#define KEY_FN_2                0x1df
499#define KEY_FN_D                0x1e0
500#define KEY_FN_E                0x1e1
501#define KEY_FN_F                0x1e2
502#define KEY_FN_S                0x1e3
503#define KEY_FN_B                0x1e4
504
505#define KEY_MAX                 0x1ff
506
507/*
508 * Relative axes
509 */
510
511#define REL_X                   0x00
512#define REL_Y                   0x01
513#define REL_Z                   0x02
514#define REL_RX                  0x03
515#define REL_RY                  0x04
516#define REL_RZ                  0x05
517#define REL_HWHEEL              0x06
518#define REL_DIAL                0x07
519#define REL_WHEEL               0x08
520#define REL_MISC                0x09
521#define REL_MAX                 0x0f
522
523/*
524 * Absolute axes
525 */
526
527#define ABS_X                   0x00
528#define ABS_Y                   0x01
529#define ABS_Z                   0x02
530#define ABS_RX                  0x03
531#define ABS_RY                  0x04
532#define ABS_RZ                  0x05
533#define ABS_THROTTLE            0x06
534#define ABS_RUDDER              0x07
535#define ABS_WHEEL               0x08
536#define ABS_GAS                 0x09
537#define ABS_BRAKE               0x0a
538#define ABS_HAT0X               0x10
539#define ABS_HAT0Y               0x11
540#define ABS_HAT1X               0x12
541#define ABS_HAT1Y               0x13
542#define ABS_HAT2X               0x14
543#define ABS_HAT2Y               0x15
544#define ABS_HAT3X               0x16
545#define ABS_HAT3Y               0x17
546#define ABS_PRESSURE            0x18
547#define ABS_DISTANCE            0x19
548#define ABS_TILT_X              0x1a
549#define ABS_TILT_Y              0x1b
550#define ABS_TOOL_WIDTH          0x1c
551#define ABS_VOLUME              0x20
552#define ABS_MISC                0x28
553#define ABS_MAX                 0x3f
554
555/*
556 * Misc events
557 */
558
559#define MSC_SERIAL              0x00
560#define MSC_PULSELED            0x01
561#define MSC_GESTURE             0x02
562#define MSC_RAW                 0x03
563#define MSC_SCAN                0x04
564#define MSC_MAX                 0x07
565
566/*
567 * LEDs
568 */
569
570#define LED_NUML                0x00
571#define LED_CAPSL               0x01
572#define LED_SCROLLL             0x02
573#define LED_COMPOSE             0x03
574#define LED_KANA                0x04
575#define LED_SLEEP               0x05
576#define LED_SUSPEND             0x06
577#define LED_MUTE                0x07
578#define LED_MISC                0x08
579#define LED_MAIL                0x09
580#define LED_CHARGING            0x0a
581#define LED_MAX                 0x0f
582
583/*
584 * Autorepeat values
585 */
586
587#define REP_DELAY               0x00
588#define REP_PERIOD              0x01
589#define REP_MAX                 0x01
590
591/*
592 * Sounds
593 */
594
595#define SND_CLICK               0x00
596#define SND_BELL                0x01
597#define SND_TONE                0x02
598#define SND_MAX                 0x07
599
600/*
601 * IDs.
602 */
603
604#define ID_BUS                  0
605#define ID_VENDOR               1
606#define ID_PRODUCT              2
607#define ID_VERSION              3
608
609#define BUS_PCI                 0x01
610#define BUS_ISAPNP              0x02
611#define BUS_USB                 0x03
612#define BUS_HIL                 0x04
613#define BUS_BLUETOOTH           0x05
614
615#define BUS_ISA                 0x10
616#define BUS_I8042               0x11
617#define BUS_XTKBD               0x12
618#define BUS_RS232               0x13
619#define BUS_GAMEPORT            0x14
620#define BUS_PARPORT             0x15
621#define BUS_AMIGA               0x16
622#define BUS_ADB                 0x17
623#define BUS_I2C                 0x18
624#define BUS_HOST                0x19
625
626/*
627 * Values describing the status of an effect
628 */
629#define FF_STATUS_STOPPED       0x00
630#define FF_STATUS_PLAYING       0x01
631#define FF_STATUS_MAX           0x01
632
633/*
634 * Structures used in ioctls to upload effects to a device
635 * The first structures are not passed directly by using ioctls.
636 * They are sub-structures of the actually sent structure (called ff_effect)
637 */
638
639struct ff_replay {
640        __u16 length; /* Duration of an effect in ms. All other times are also expressed in ms */
641        __u16 delay;  /* Time to wait before to start playing an effect */
642};
643
644struct ff_trigger {
645        __u16 button;   /* Number of button triggering an effect */
646        __u16 interval; /* Time to wait before an effect can be re-triggered (ms) */
647};
648
649struct ff_envelope {
650        __u16 attack_length;    /* Duration of attack (ms) */
651        __u16 attack_level;     /* Level at beginning of attack */
652        __u16 fade_length;      /* Duration of fade (ms) */
653        __u16 fade_level;       /* Level at end of fade */
654};
655
656/* FF_CONSTANT */
657struct ff_constant_effect {
658        __s16 level;        /* Strength of effect. Negative values are OK */
659        struct ff_envelope envelope;
660};
661
662/* FF_RAMP */
663struct ff_ramp_effect {
664        __s16 start_level;
665        __s16 end_level;
666        struct ff_envelope envelope;
667};
668
669/* FF_SPRING of FF_FRICTION */
670struct ff_condition_effect {
671        __u16 right_saturation; /* Max level when joystick is on the right */
672        __u16 left_saturation;  /* Max level when joystick in on the left */
673
674        __s16 right_coeff;      /* Indicates how fast the force grows when the
675                                   joystick moves to the right */
676        __s16 left_coeff;       /* Same for left side */
677
678        __u16 deadband; /* Size of area where no force is produced */
679        __s16 center;   /* Position of dead zone */
680
681};
682
683/* FF_PERIODIC */
684struct ff_periodic_effect {
685        __u16 waveform; /* Kind of wave (sine, square...) */
686        __u16 period;   /* in ms */
687        __s16 magnitude;        /* Peak value */
688        __s16 offset;   /* Mean value of wave (roughly) */
689        __u16 phase;            /* 'Horizontal' shift */
690
691        struct ff_envelope envelope;
692
693/* Only used if waveform == FF_CUSTOM */
694        __u32 custom_len;       /* Number of samples */
695        __s16 *custom_data;     /* Buffer of samples */
696/* Note: the data pointed by custom_data is copied by the driver. You can
697 * therefore dispose of the memory after the upload/update */
698};
699
700/* FF_RUMBLE */
701/* Some rumble pads have two motors of different weight.
702   strong_magnitude represents the magnitude of the vibration generated
703   by the heavy motor.
704*/
705struct ff_rumble_effect {
706        __u16 strong_magnitude;  /* Magnitude of the heavy motor */
707        __u16 weak_magnitude;    /* Magnitude of the light one */
708};
709
710/*
711 * Structure sent through ioctl from the application to the driver
712 */
713struct ff_effect {
714        __u16 type;
715/* Following field denotes the unique id assigned to an effect.
716 * If user sets if to -1, a new effect is created, and its id is returned in the same field
717 * Else, the user sets it to the effect id it wants to update.
718 */
719        __s16 id;
720
721        __u16 direction;        /* Direction. 0 deg -> 0x0000 (down)
722                                             90 deg -> 0x4000 (left)
723                                            180 deg -> 0x8000 (up)
724                                            270 deg -> 0xC000 (right)
725                                */
726
727        struct ff_trigger trigger;
728        struct ff_replay replay;
729
730        union {
731                struct ff_constant_effect constant;
732                struct ff_ramp_effect ramp;
733                struct ff_periodic_effect periodic;
734                struct ff_condition_effect condition[2]; /* One for each axis */
735                struct ff_rumble_effect rumble;
736        } u;
737};
738
739/*
740 * Buttons that can trigger effects.  Use for example FF_BTN(BTN_TRIGGER) to
741 * access the bitmap.
742 */
743
744#define FF_BTN(x)       ((x) - BTN_MISC + FF_BTN_OFFSET)
745#define FF_BTN_OFFSET   0x00
746
747/*
748 * Force feedback axis mappings. Use FF_ABS() to access the bitmap.
749 */
750
751#define FF_ABS(x)       ((x) + FF_ABS_OFFSET)
752#define FF_ABS_OFFSET   0x40
753
754/*
755 * Force feedback effect types
756 */
757
758#define FF_RUMBLE       0x50
759#define FF_PERIODIC     0x51
760#define FF_CONSTANT     0x52
761#define FF_SPRING       0x53
762#define FF_FRICTION     0x54
763#define FF_DAMPER       0x55
764#define FF_INERTIA      0x56
765#define FF_RAMP         0x57
766
767/*
768 * Force feedback periodic effect types
769 */
770
771#define FF_SQUARE       0x58
772#define FF_TRIANGLE     0x59
773#define FF_SINE         0x5a
774#define FF_SAW_UP       0x5b
775#define FF_SAW_DOWN     0x5c
776#define FF_CUSTOM       0x5d
777
778/*
779 * Set ff device properties
780 */
781
782#define FF_GAIN         0x60
783#define FF_AUTOCENTER   0x61
784
785#define FF_MAX          0x7f
786
787#endif
Note: See TracBrowser for help on using the repository browser.