Version:  2.0.40 2.2.26 2.4.37 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10

Linux/include/linux/input.h

  1 #ifndef _INPUT_H
  2 #define _INPUT_H
  3 
  4 /*
  5  * $Id: input.h,v 1.34 2001/05/28 09:06:44 vojtech Exp $
  6  *
  7  *  Copyright (c) 1999-2000 Vojtech Pavlik
  8  *
  9  *  Sponsored by SuSE
 10  */
 11 
 12 /*
 13  * This program is free software; you can redistribute it and/or modify
 14  * it under the terms of the GNU General Public License as published by
 15  * the Free Software Foundation; either version 2 of the License, or
 16  * (at your option) any later version.
 17  *
 18  * This program is distributed in the hope that it will be useful,
 19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 21  * GNU General Public License for more details.
 22  *
 23  * You should have received a copy of the GNU General Public License
 24  * along with this program; if not, write to the Free Software
 25  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 26  *
 27  * Should you need to contact me, the author, you can do so either by
 28  * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail:
 29  * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
 30  */
 31 
 32 #ifdef __KERNEL__
 33 #include <linux/time.h>
 34 #else
 35 #include <sys/time.h>
 36 #include <sys/ioctl.h>
 37 #include <asm/types.h>
 38 #endif
 39 
 40 /*
 41  * The event structure itself
 42  */
 43 
 44 struct input_event {
 45         struct timeval time;
 46         unsigned short type;
 47         unsigned short code;
 48         unsigned int value;
 49 };
 50 
 51 /*
 52  * Protocol version.
 53  */
 54 
 55 #define EV_VERSION              0x010000
 56 
 57 /*
 58  * IOCTLs (0x00 - 0x7f)
 59  */
 60 
 61 #define EVIOCGVERSION           _IOR('E', 0x01, int)                    /* get driver version */
 62 #define EVIOCGID                _IOR('E', 0x02, short[4])               /* get device ID */
 63 #define EVIOCGREP               _IOR('E', 0x03, int[2])                 /* get repeat settings */
 64 #define EVIOCSREP               _IOW('E', 0x03, int[2])                 /* get repeat settings */
 65 #define EVIOCGKEYCODE           _IOR('E', 0x04, int[2])                 /* get keycode */
 66 #define EVIOCSKEYCODE           _IOW('E', 0x04, int[2])                 /* set keycode */
 67 #define EVIOCGKEY               _IOR('E', 0x05, int[2])                 /* get key value */
 68 #define EVIOCGNAME(len)         _IOC(_IOC_READ, 'E', 0x06, len)         /* get device name */
 69 #define EVIOCGBUS               _IOR('E', 0x07, short[4])               /* get bus address */
 70 
 71 #define EVIOCGBIT(ev,len)       _IOC(_IOC_READ, 'E', 0x20 + ev, len)    /* get event bits */
 72 #define EVIOCGABS(abs)          _IOR('E', 0x40 + abs, int[5])           /* get abs value/limits */
 73 
 74 #define EVIOCSFF                _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect))   /* send a force effect to a force feedback device */
 75 #define EVIOCRMFF               _IOW('E', 0x81, int)                    /* Erase a force effect */
 76 #define EVIOCSGAIN              _IOW('E', 0x82, unsigned short)         /* Set overall gain */
 77 #define EVIOCSAUTOCENTER        _IOW('E', 0x83, unsigned short)         /* Enable or disable auto-centering */
 78 #define EVIOCGEFFECTS           _IOR('E', 0x84, int)                    /* Report number of effects playable at the same time */
 79 
 80 /*
 81  * Event types
 82  */
 83 
 84 #define EV_RST                  0x00
 85 #define EV_KEY                  0x01
 86 #define EV_REL                  0x02
 87 #define EV_ABS                  0x03
 88 #define EV_MSC                  0x04
 89 #define EV_LED                  0x11
 90 #define EV_SND                  0x12
 91 #define EV_REP                  0x14
 92 #define EV_FF                   0x15
 93 #define EV_MAX                  0x1f
 94 
 95 /*
 96  * Keys and buttons
 97  */
 98 
 99 #define KEY_RESERVED            0
100 #define KEY_ESC                 1
101 #define KEY_1                   2
102 #define KEY_2                   3
103 #define KEY_3                   4
104 #define KEY_4                   5
105 #define KEY_5                   6
106 #define KEY_6                   7
107 #define KEY_7                   8
108 #define KEY_8                   9
109 #define KEY_9                   10
110 #define KEY_0                   11
111 #define KEY_MINUS               12
112 #define KEY_EQUAL               13
113 #define KEY_BACKSPACE           14
114 #define KEY_TAB                 15
115 #define KEY_Q                   16
116 #define KEY_W                   17
117 #define KEY_E                   18
118 #define KEY_R                   19
119 #define KEY_T                   20
120 #define KEY_Y                   21
121 #define KEY_U                   22
122 #define KEY_I                   23
123 #define KEY_O                   24
124 #define KEY_P                   25
125 #define KEY_LEFTBRACE           26
126 #define KEY_RIGHTBRACE          27
127 #define KEY_ENTER               28
128 #define KEY_LEFTCTRL            29
129 #define KEY_A                   30
130 #define KEY_S                   31
131 #define KEY_D                   32
132 #define KEY_F                   33
133 #define KEY_G                   34
134 #define KEY_H                   35
135 #define KEY_J                   36
136 #define KEY_K                   37
137 #define KEY_L                   38
138 #define KEY_SEMICOLON           39
139 #define KEY_APOSTROPHE          40
140 #define KEY_GRAVE               41
141 #define KEY_LEFTSHIFT           42
142 #define KEY_BACKSLASH           43
143 #define KEY_Z                   44
144 #define KEY_X                   45
145 #define KEY_C                   46
146 #define KEY_V                   47
147 #define KEY_B                   48
148 #define KEY_N                   49
149 #define KEY_M                   50
150 #define KEY_COMMA               51
151 #define KEY_DOT                 52
152 #define KEY_SLASH               53
153 #define KEY_RIGHTSHIFT          54
154 #define KEY_KPASTERISK          55
155 #define KEY_LEFTALT             56
156 #define KEY_SPACE               57
157 #define KEY_CAPSLOCK            58
158 #define KEY_F1                  59
159 #define KEY_F2                  60
160 #define KEY_F3                  61
161 #define KEY_F4                  62
162 #define KEY_F5                  63
163 #define KEY_F6                  64
164 #define KEY_F7                  65
165 #define KEY_F8                  66
166 #define KEY_F9                  67
167 #define KEY_F10                 68
168 #define KEY_NUMLOCK             69
169 #define KEY_SCROLLLOCK          70
170 #define KEY_KP7                 71
171 #define KEY_KP8                 72
172 #define KEY_KP9                 73
173 #define KEY_KPMINUS             74
174 #define KEY_KP4                 75
175 #define KEY_KP5                 76
176 #define KEY_KP6                 77
177 #define KEY_KPPLUS              78
178 #define KEY_KP1                 79
179 #define KEY_KP2                 80
180 #define KEY_KP3                 81
181 #define KEY_KP0                 82
182 #define KEY_KPDOT               83
183 #define KEY_103RD               84
184 #define KEY_F13                 85
185 #define KEY_102ND               86
186 #define KEY_F11                 87
187 #define KEY_F12                 88
188 #define KEY_F14                 89
189 #define KEY_F15                 90
190 #define KEY_F16                 91
191 #define KEY_F17                 92
192 #define KEY_F18                 93
193 #define KEY_F19                 94
194 #define KEY_F20                 95
195 #define KEY_KPENTER             96
196 #define KEY_RIGHTCTRL           97
197 #define KEY_KPSLASH             98
198 #define KEY_SYSRQ               99
199 #define KEY_RIGHTALT            100
200 #define KEY_LINEFEED            101
201 #define KEY_HOME                102
202 #define KEY_UP                  103
203 #define KEY_PAGEUP              104
204 #define KEY_LEFT                105
205 #define KEY_RIGHT               106
206 #define KEY_END                 107
207 #define KEY_DOWN                108
208 #define KEY_PAGEDOWN            109
209 #define KEY_INSERT              110
210 #define KEY_DELETE              111
211 #define KEY_MACRO               112
212 #define KEY_MUTE                113
213 #define KEY_VOLUMEDOWN          114
214 #define KEY_VOLUMEUP            115
215 #define KEY_POWER               116
216 #define KEY_KPEQUAL             117
217 #define KEY_KPPLUSMINUS         118
218 #define KEY_PAUSE               119
219 #define KEY_F21                 120
220 #define KEY_F22                 121
221 #define KEY_F23                 122
222 #define KEY_F24                 123
223 #define KEY_KPCOMMA             124
224 #define KEY_LEFTMETA            125
225 #define KEY_RIGHTMETA           126
226 #define KEY_COMPOSE             127
227 
228 #define KEY_STOP                128
229 #define KEY_AGAIN               129
230 #define KEY_PROPS               130
231 #define KEY_UNDO                131
232 #define KEY_FRONT               132
233 #define KEY_COPY                133
234 #define KEY_OPEN                134
235 #define KEY_PASTE               135
236 #define KEY_FIND                136
237 #define KEY_CUT                 137
238 #define KEY_HELP                138
239 #define KEY_MENU                139
240 #define KEY_CALC                140
241 #define KEY_SETUP               141
242 #define KEY_SLEEP               142
243 #define KEY_WAKEUP              143
244 #define KEY_FILE                144
245 #define KEY_SENDFILE            145
246 #define KEY_DELETEFILE          146
247 #define KEY_XFER                147
248 #define KEY_PROG1               148
249 #define KEY_PROG2               149
250 #define KEY_WWW                 150
251 #define KEY_MSDOS               151
252 #define KEY_COFFEE              152
253 #define KEY_DIRECTION           153
254 #define KEY_CYCLEWINDOWS        154
255 #define KEY_MAIL                155
256 #define KEY_BOOKMARKS           156
257 #define KEY_COMPUTER            157
258 #define KEY_BACK                158
259 #define KEY_FORWARD             159
260 #define KEY_CLOSECD             160
261 #define KEY_EJECTCD             161
262 #define KEY_EJECTCLOSECD        162
263 #define KEY_NEXTSONG            163
264 #define KEY_PLAYPAUSE           164
265 #define KEY_PREVIOUSSONG        165
266 #define KEY_STOPCD              166
267 #define KEY_RECORD              167
268 #define KEY_REWIND              168
269 #define KEY_PHONE               169
270 #define KEY_ISO                 170
271 #define KEY_CONFIG              171
272 #define KEY_HOMEPAGE            172
273 #define KEY_REFRESH             173
274 #define KEY_EXIT                174
275 #define KEY_MOVE                175
276 #define KEY_EDIT                176
277 #define KEY_SCROLLUP            177
278 #define KEY_SCROLLDOWN          178
279 #define KEY_KPLEFTPAREN         179
280 #define KEY_KPRIGHTPAREN        180
281 
282 #define KEY_INTL1               181
283 #define KEY_INTL2               182
284 #define KEY_INTL3               183
285 #define KEY_INTL4               184
286 #define KEY_INTL5               185
287 #define KEY_INTL6               186
288 #define KEY_INTL7               187
289 #define KEY_INTL8               188
290 #define KEY_INTL9               189
291 #define KEY_LANG1               190
292 #define KEY_LANG2               191
293 #define KEY_LANG3               192
294 #define KEY_LANG4               193
295 #define KEY_LANG5               194
296 #define KEY_LANG6               195
297 #define KEY_LANG7               196
298 #define KEY_LANG8               197
299 #define KEY_LANG9               198
300 
301 #define KEY_PLAYCD              200
302 #define KEY_PAUSECD             201
303 #define KEY_PROG3               202
304 #define KEY_PROG4               203
305 #define KEY_SUSPEND             205
306 #define KEY_CLOSE               206
307 
308 #define KEY_UNKNOWN             220
309 
310 #define KEY_BRIGHTNESSDOWN      224
311 #define KEY_BRIGHTNESSUP        225
312 
313 #define BTN_MISC                0x100
314 #define BTN_0                   0x100
315 #define BTN_1                   0x101
316 #define BTN_2                   0x102
317 #define BTN_3                   0x103
318 #define BTN_4                   0x104
319 #define BTN_5                   0x105
320 #define BTN_6                   0x106
321 #define BTN_7                   0x107
322 #define BTN_8                   0x108
323 #define BTN_9                   0x109
324 
325 #define BTN_MOUSE               0x110
326 #define BTN_LEFT                0x110
327 #define BTN_RIGHT               0x111
328 #define BTN_MIDDLE              0x112
329 #define BTN_SIDE                0x113
330 #define BTN_EXTRA               0x114
331 #define BTN_FORWARD             0x115
332 #define BTN_BACK                0x116
333 
334 #define BTN_JOYSTICK            0x120
335 #define BTN_TRIGGER             0x120
336 #define BTN_THUMB               0x121
337 #define BTN_THUMB2              0x122
338 #define BTN_TOP                 0x123
339 #define BTN_TOP2                0x124
340 #define BTN_PINKIE              0x125
341 #define BTN_BASE                0x126
342 #define BTN_BASE2               0x127
343 #define BTN_BASE3               0x128
344 #define BTN_BASE4               0x129
345 #define BTN_BASE5               0x12a
346 #define BTN_BASE6               0x12b
347 #define BTN_DEAD                0x12f
348 
349 #define BTN_GAMEPAD             0x130
350 #define BTN_A                   0x130
351 #define BTN_B                   0x131
352 #define BTN_C                   0x132
353 #define BTN_X                   0x133
354 #define BTN_Y                   0x134
355 #define BTN_Z                   0x135
356 #define BTN_TL                  0x136
357 #define BTN_TR                  0x137
358 #define BTN_TL2                 0x138
359 #define BTN_TR2                 0x139
360 #define BTN_SELECT              0x13a
361 #define BTN_START               0x13b
362 #define BTN_MODE                0x13c
363 #define BTN_THUMBL              0x13d
364 #define BTN_THUMBR              0x13e
365 
366 #define BTN_DIGI                0x140
367 #define BTN_TOOL_PEN            0x140
368 #define BTN_TOOL_RUBBER         0x141
369 #define BTN_TOOL_BRUSH          0x142
370 #define BTN_TOOL_PENCIL         0x143
371 #define BTN_TOOL_AIRBRUSH       0x144
372 #define BTN_TOOL_FINGER         0x145
373 #define BTN_TOOL_MOUSE          0x146
374 #define BTN_TOOL_LENS           0x147
375 #define BTN_TOUCH               0x14a
376 #define BTN_STYLUS              0x14b
377 #define BTN_STYLUS2             0x14c
378 
379 #define KEY_MAX                 0x1ff
380 
381 /*
382  * Relative axes
383  */
384 
385 #define REL_X                   0x00
386 #define REL_Y                   0x01
387 #define REL_Z                   0x02
388 #define REL_HWHEEL              0x06
389 #define REL_DIAL                0x07
390 #define REL_WHEEL               0x08
391 #define REL_MISC                0x09
392 #define REL_MAX                 0x0f
393 
394 /*
395  * Absolute axes
396  */
397 
398 #define ABS_X                   0x00
399 #define ABS_Y                   0x01
400 #define ABS_Z                   0x02
401 #define ABS_RX                  0x03
402 #define ABS_RY                  0x04
403 #define ABS_RZ                  0x05
404 #define ABS_THROTTLE            0x06
405 #define ABS_RUDDER              0x07
406 #define ABS_WHEEL               0x08
407 #define ABS_GAS                 0x09
408 #define ABS_BRAKE               0x0a
409 #define ABS_HAT0X               0x10
410 #define ABS_HAT0Y               0x11
411 #define ABS_HAT1X               0x12
412 #define ABS_HAT1Y               0x13
413 #define ABS_HAT2X               0x14
414 #define ABS_HAT2Y               0x15
415 #define ABS_HAT3X               0x16
416 #define ABS_HAT3Y               0x17
417 #define ABS_PRESSURE            0x18
418 #define ABS_DISTANCE            0x19
419 #define ABS_TILT_X              0x1a
420 #define ABS_TILT_Y              0x1b
421 #define ABS_MISC                0x1c
422 #define ABS_MAX                 0x1f
423 
424 /*
425  * Misc events
426  */
427 
428 #define MSC_SERIAL              0x00
429 #define MSC_PULSELED            0x01
430 #define MSC_MAX                 0x07
431 
432 /*
433  * LEDs
434  */
435 
436 #define LED_NUML                0x00
437 #define LED_CAPSL               0x01
438 #define LED_SCROLLL             0x02
439 #define LED_COMPOSE             0x03
440 #define LED_KANA                0x04
441 #define LED_SLEEP               0x05
442 #define LED_SUSPEND             0x06
443 #define LED_MUTE                0x07
444 #define LED_MISC                0x08
445 #define LED_MAX                 0x0f
446 
447 /*
448  * Autorepeat values
449  */
450 
451 #define REP_DELAY               0x00
452 #define REP_PERIOD              0x01
453 #define REP_MAX                 0x01
454 
455 /*
456  * Sounds
457  */
458 
459 #define SND_CLICK               0x00
460 #define SND_BELL                0x01
461 #define SND_MAX                 0x07
462 
463 /*
464  * IDs.
465  */
466 
467 #define ID_BUS                  0
468 #define ID_VENDOR               1
469 #define ID_PRODUCT              2
470 #define ID_VERSION              3
471 
472 #define BUS_PCI                 0x01
473 #define BUS_ISAPNP              0x02
474 #define BUS_USB                 0x03
475 #define BUS_HIL                 0x04
476 #define BUS_BLUETOOTH           0x05
477 
478 #define BUS_ISA                 0x10
479 #define BUS_I8042               0x11
480 #define BUS_XTKBD               0x12
481 #define BUS_RS232               0x13
482 #define BUS_GAMEPORT            0x14
483 #define BUS_PARPORT             0x15
484 #define BUS_AMIGA               0x16
485 #define BUS_ADB                 0x17
486 #define BUS_I2C                 0x18
487 
488 /*
489  * Structures used in ioctls to upload effects to a device
490  * The first structures are not passed directly by using ioctls.
491  * They are sub-structures of the actually sent structure (called ff_effect)
492  */
493 
494 struct ff_replay {
495         __u16 length;           /* Duration of an effect */
496         __u16 delay;            /* Time to wait before to start playing an effect */
497 };
498 
499 struct ff_trigger {
500         __u16 button;           /* Number of button triggering an effect */
501         __u16 interval;         /* Time to wait before an effect can be re-triggered */
502 };
503 
504 struct ff_shape {
505         __u16 attack_length;    /* Duration of attack */
506         __s16 attack_level;     /* Level at beginning of attack */
507         __u16 fade_length;      /* Duration of fade */
508         __s16 fade_level;       /* Level at end of fade */
509 };
510 
511 /* FF_CONSTANT */
512 struct ff_constant_effect {
513         __s16 level;            /* Strength of effect */
514         __u16 direction;        /* Direction of effect (see periodic effects) */
515         struct ff_shape shape;
516 };
517 
518 /* FF_SPRING of FF_FRICTION */
519 struct ff_interactive_effect {
520 /* Axis along which effect must be created. If null, the field named direction
521  * is used
522  * It is a bit array (ie to enable axes X and Y, use BIT(ABS_X) | BIT(ABS_Y)
523  */
524         __u16 axis;
525         __u16 direction;
526 
527         __s16 right_saturation; /* Max level when joystick is on the right */
528         __s16 left_saturation;  /* Max level when joystick in on the left */
529 
530         __s16 right_coeff;      /* Indicates how fast the force grows when the
531                                    joystick moves to the right */
532         __s16 left_coeff;       /* Same for left side */
533 
534         __u16 deadband;         /* Size of area where no force is produced */
535         __s16 center;           /* Position of dead dead zone */
536 
537 };
538 
539 /* FF_PERIODIC */
540 struct ff_periodic_effect {
541         __u16 waveform;         /* Kind of wave (sine, square...) */
542         __u16 period;
543         __s16 magnitude;        /* Peak value */
544         __s16 offset;           /* Mean value of wave (roughly) */
545         __u16 phase;            /* 'Horizontal' shift */
546         __u16 direction;        /* Direction. 0 deg -> 0x0000
547                                              90 deg -> 0x4000 */
548 
549         struct ff_shape shape;
550 };
551 
552 /*
553  * Structure sent through ioctl from the application to the driver
554  */
555 struct ff_effect {
556         __u16 type;
557 /* Following field denotes the unique id assigned to an effect.
558  * It is set by the driver.
559  */
560         __s16 id;
561 
562         struct ff_trigger trigger;
563         struct ff_replay replay;
564 
565         union {
566                 struct ff_constant_effect constant;
567                 struct ff_periodic_effect periodic;
568                 struct ff_interactive_effect interactive;
569         } u;
570 };
571 
572 /*
573  * Buttons that can trigger effects.  Use for example FF_BTN(BTN_TRIGGER) to
574  * access the bitmap.
575  */
576 
577 #define FF_BTN(x)       ((x) - BTN_MISC + FF_BTN_OFFSET)
578 #define FF_BTN_OFFSET   0x00
579 
580 /*
581  * Force feedback axis mappings. Use FF_ABS() to access the bitmap.
582  */
583 
584 #define FF_ABS(x)       ((x) + FF_ABS_OFFSET)
585 #define FF_ABS_OFFSET   0x40
586 
587 /*
588  * Force feedback effect types
589  */
590 
591 #define FF_RUMBLE       0x50
592 #define FF_PERIODIC     0x51
593 #define FF_CONSTANT     0x52
594 #define FF_SPRING       0x53
595 #define FF_FRICTION     0x54
596 
597 /*
598  * Force feedback periodic effect types
599  */
600 
601 #define FF_SQUARE       0x58
602 #define FF_TRIANGLE     0x59
603 #define FF_SINE         0x5a
604 #define FF_SAW_UP       0x5b
605 #define FF_SAW_DOWN     0x5c
606 #define FF_CUSTOM       0x5d
607 
608 /*
609  * Set ff device properties
610  */
611 
612 #define FF_GAIN         0x60
613 #define FF_AUTOCENTER   0x61
614 
615 #define FF_MAX          0x7f
616 
617 #ifdef __KERNEL__
618 
619 /*
620  * In-kernel definitions.
621  */
622 
623 #include <linux/sched.h>
624 #include <linux/devfs_fs_kernel.h>
625 
626 #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
627 #define BIT(x)  (1UL<<((x)%BITS_PER_LONG))
628 #define LONG(x) ((x)/BITS_PER_LONG)
629 
630 struct input_dev {
631 
632         void *private;
633 
634         int number;
635         char *name;
636         unsigned short idbus;
637         unsigned short idvendor;
638         unsigned short idproduct;
639         unsigned short idversion;
640 
641         unsigned long evbit[NBITS(EV_MAX)];
642         unsigned long keybit[NBITS(KEY_MAX)];
643         unsigned long relbit[NBITS(REL_MAX)];
644         unsigned long absbit[NBITS(ABS_MAX)];
645         unsigned long mscbit[NBITS(MSC_MAX)];
646         unsigned long ledbit[NBITS(LED_MAX)];
647         unsigned long sndbit[NBITS(SND_MAX)];
648         unsigned long ffbit[NBITS(FF_MAX)];
649         int ff_effects_max;
650 
651         unsigned int keycodemax;
652         unsigned int keycodesize;
653         void *keycode;
654 
655         unsigned int repeat_key;
656         struct timer_list timer;
657 
658         int abs[ABS_MAX + 1];
659         int rep[REP_MAX + 1];
660 
661         unsigned long key[NBITS(KEY_MAX)];
662         unsigned long led[NBITS(LED_MAX)];
663         unsigned long snd[NBITS(SND_MAX)];
664 
665         int absmax[ABS_MAX + 1];
666         int absmin[ABS_MAX + 1];
667         int absfuzz[ABS_MAX + 1];
668         int absflat[ABS_MAX + 1];
669 
670         int (*open)(struct input_dev *dev);
671         void (*close)(struct input_dev *dev);
672         int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
673         int (*upload_effect)(struct input_dev *dev, struct ff_effect *effect);
674         int (*erase_effect)(struct input_dev *dev, int effect_id);
675 
676         struct input_handle *handle;
677         struct input_dev *next;
678 };
679 
680 struct input_handler {
681 
682         void *private;
683 
684         void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
685         struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev);
686         void (*disconnect)(struct input_handle *handle);
687 
688         struct file_operations *fops;
689         int minor;
690 
691         struct input_handle *handle;
692         struct input_handler *next;
693 };
694 
695 struct input_handle {
696 
697         void *private;
698 
699         int open;
700 
701         struct input_dev *dev;
702         struct input_handler *handler;
703 
704         struct input_handle *dnext;
705         struct input_handle *hnext;
706 };
707 
708 void input_register_device(struct input_dev *);
709 void input_unregister_device(struct input_dev *);
710 
711 void input_register_handler(struct input_handler *);
712 void input_unregister_handler(struct input_handler *);
713 
714 int input_open_device(struct input_handle *);
715 void input_close_device(struct input_handle *);
716 
717 devfs_handle_t input_register_minor(char *name, int minor, int minor_base);
718 void input_unregister_minor(devfs_handle_t handle);
719 
720 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
721 
722 #define input_report_key(a,b,c) input_event(a, EV_KEY, b, !!(c))
723 #define input_report_rel(a,b,c) input_event(a, EV_REL, b, c)
724 #define input_report_abs(a,b,c) input_event(a, EV_ABS, b, c)
725 
726 #endif
727 #endif
728 

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us