OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [LINUX_2_4_26_OR32/] [linux/] [linux-2.4/] [include/] [linux/] [input.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef _INPUT_H
2
#define _INPUT_H
3
 
4
/*
5
 * $Id: input.h,v 1.1.1.1 2004-04-15 02:37:06 phoenix 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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.