~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/input.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _INPUT_H
  2 #define _INPUT_H
  3 
  4 /*
  5  * $Id: input.h,v 1.18 2000/07/25 21:36:56 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 #endif
 38 
 39 /*
 40  * The event structure itself
 41  */
 42 
 43 struct input_event {
 44         struct timeval time;
 45         unsigned short type;
 46         unsigned short code;
 47         unsigned int value;
 48 };
 49 
 50 /*
 51  * Protocol version.
 52  */
 53 
 54 #define EV_VERSION              0x010000
 55 
 56 /*
 57  * IOCTLs (0x00 - 0x7f)
 58  */
 59 
 60 #define EVIOCGVERSION           _IOR('E', 0x01, int)                    /* get driver version */
 61 #define EVIOCGID                _IOR('E', 0x02, short[4])               /* get device ID */
 62 #define EVIOCGREP               _IOR('E', 0x03, int[2])                 /* get repeat settings */
 63 #define EVIOCSREP               _IOW('E', 0x03, int[2])                 /* get repeat settings */
 64 #define EVIOCGKEYCODE           _IOR('E', 0x04, int[2])                 /* get keycode */
 65 #define EVIOCSKEYCODE           _IOW('E', 0x04, int[2])                 /* set keycode */
 66 #define EVIOCGKEY               _IOR('E', 0x05, int[2])                 /* get key value */
 67 #define EVIOCGNAME(len)         _IOC(_IOC_READ, 'E', 0x06, len)         /* get device name */
 68 
 69 #define EVIOCGBIT(ev,len)       _IOC(_IOC_READ, 'E', 0x20 + ev, len)    /* get event bits */
 70 #define EVIOCGABS(abs)          _IOR('E', 0x40 + abs, int[5])           /* get abs value/limits */ 
 71 
 72 /*
 73  * Event types
 74  */
 75 
 76 #define EV_RST                  0x00
 77 #define EV_KEY                  0x01
 78 #define EV_REL                  0x02
 79 #define EV_ABS                  0x03
 80 #define EV_LED                  0x11
 81 #define EV_SND                  0x12
 82 #define EV_REP                  0x14
 83 #define EV_MAX                  0x1f
 84 
 85 /*
 86  * Keys and buttons
 87  */
 88 
 89 #define KEY_RESERVED            0               
 90 #define KEY_ESC                 1               
 91 #define KEY_1                   2               
 92 #define KEY_2                   3               
 93 #define KEY_3                   4               
 94 #define KEY_4                   5               
 95 #define KEY_5                   6               
 96 #define KEY_6                   7               
 97 #define KEY_7                   8               
 98 #define KEY_8                   9               
 99 #define KEY_9                   10              
100 #define KEY_0                   11              
101 #define KEY_MINUS               12              
102 #define KEY_EQUAL               13              
103 #define KEY_BACKSPACE           14              
104 #define KEY_TAB                 15              
105 #define KEY_Q                   16              
106 #define KEY_W                   17              
107 #define KEY_E                   18              
108 #define KEY_R                   19              
109 #define KEY_T                   20              
110 #define KEY_Y                   21              
111 #define KEY_U                   22              
112 #define KEY_I                   23              
113 #define KEY_O                   24              
114 #define KEY_P                   25              
115 #define KEY_LEFTBRACE           26              
116 #define KEY_RIGHTBRACE          27              
117 #define KEY_ENTER               28              
118 #define KEY_LEFTCTRL            29              
119 #define KEY_A                   30              
120 #define KEY_S                   31              
121 #define KEY_D                   32              
122 #define KEY_F                   33              
123 #define KEY_G                   34              
124 #define KEY_H                   35              
125 #define KEY_J                   36              
126 #define KEY_K                   37              
127 #define KEY_L                   38              
128 #define KEY_SEMICOLON           39              
129 #define KEY_APOSTROPHE          40              
130 #define KEY_GRAVE               41              
131 #define KEY_LEFTSHIFT           42              
132 #define KEY_BACKSLASH           43              
133 #define KEY_Z                   44              
134 #define KEY_X                   45              
135 #define KEY_C                   46              
136 #define KEY_V                   47              
137 #define KEY_B                   48              
138 #define KEY_N                   49              
139 #define KEY_M                   50              
140 #define KEY_COMMA               51              
141 #define KEY_DOT                 52              
142 #define KEY_SLASH               53              
143 #define KEY_RIGHTSHIFT          54              
144 #define KEY_KPASTERISK          55              
145 #define KEY_LEFTALT             56              
146 #define KEY_SPACE               57              
147 #define KEY_CAPSLOCK            58              
148 #define KEY_F1                  59              
149 #define KEY_F2                  60              
150 #define KEY_F3                  61              
151 #define KEY_F4                  62              
152 #define KEY_F5                  63              
153 #define KEY_F6                  64              
154 #define KEY_F7                  65              
155 #define KEY_F8                  66              
156 #define KEY_F9                  67              
157 #define KEY_F10                 68              
158 #define KEY_NUMLOCK             69              
159 #define KEY_SCROLLLOCK          70              
160 #define KEY_KP7                 71              
161 #define KEY_KP8                 72              
162 #define KEY_KP9                 73              
163 #define KEY_KPMINUS             74              
164 #define KEY_KP4                 75              
165 #define KEY_KP5                 76              
166 #define KEY_KP6                 77              
167 #define KEY_KPPLUS              78              
168 #define KEY_KP1                 79              
169 #define KEY_KP2                 80              
170 #define KEY_KP3                 81              
171 #define KEY_KP0                 82              
172 #define KEY_KPDOT               83              
173 #define KEY_103RD               84
174 #define KEY_F13                 85              
175 #define KEY_102ND               86              
176 #define KEY_F11                 87              
177 #define KEY_F12                 88              
178 #define KEY_F14                 89              
179 #define KEY_F15                 90              
180 #define KEY_F16                 91              
181 #define KEY_F17                 92              
182 #define KEY_F18                 93              
183 #define KEY_F19                 94              
184 #define KEY_F20                 95              
185 #define KEY_KPENTER             96              
186 #define KEY_RIGHTCTRL           97              
187 #define KEY_KPSLASH             98              
188 #define KEY_SYSRQ               99              
189 #define KEY_RIGHTALT            100             
190 #define KEY_LINEFEED            101             
191 #define KEY_HOME                102             
192 #define KEY_UP                  103             
193 #define KEY_PAGEUP              104             
194 #define KEY_LEFT                105             
195 #define KEY_RIGHT               106             
196 #define KEY_END                 107             
197 #define KEY_DOWN                108             
198 #define KEY_PAGEDOWN            109             
199 #define KEY_INSERT              110             
200 #define KEY_DELETE              111             
201 #define KEY_MACRO               112             
202 #define KEY_MUTE                113             
203 #define KEY_VOLUMEDOWN          114             
204 #define KEY_VOLUMEUP            115             
205 #define KEY_POWER               116             
206 #define KEY_KPEQUAL             117             
207 #define KEY_KPPLUSMINUS         118             
208 #define KEY_PAUSE               119             
209 #define KEY_F21                 120             
210 #define KEY_F22                 121             
211 #define KEY_F23                 122             
212 #define KEY_F24                 123             
213 #define KEY_KPCOMMA             124
214 #define KEY_LEFTMETA            125             
215 #define KEY_RIGHTMETA           126             
216 #define KEY_COMPOSE             127             
217 
218 #define KEY_STOP                128             
219 #define KEY_AGAIN               129             
220 #define KEY_PROPS               130             
221 #define KEY_UNDO                131             
222 #define KEY_FRONT               132             
223 #define KEY_COPY                133             
224 #define KEY_OPEN                134             
225 #define KEY_PASTE               135             
226 #define KEY_FIND                136             
227 #define KEY_CUT                 137             
228 #define KEY_HELP                138             
229 #define KEY_MENU                139             
230 #define KEY_CALC                140             
231 #define KEY_SETUP               141             
232 #define KEY_SLEEP               142             
233 #define KEY_WAKEUP              143             
234 #define KEY_FILE                144             
235 #define KEY_SENDFILE            145             
236 #define KEY_DELETEFILE          146             
237 #define KEY_XFER                147             
238 #define KEY_PROG1               148             
239 #define KEY_PROG2               149             
240 #define KEY_WWW                 150             
241 #define KEY_MSDOS               151             
242 #define KEY_COFFEE              152             
243 #define KEY_DIRECTION           153             
244 #define KEY_CYCLEWINDOWS        154             
245 #define KEY_MAIL                155
246 #define KEY_BOOKMARKS           156
247 #define KEY_COMPUTER            157
248 #define KEY_BACK                158
249 #define KEY_FORWARD             159
250 #define KEY_CLOSECD             160             
251 #define KEY_EJECTCD             161             
252 #define KEY_EJECTCLOSECD        162             
253 #define KEY_NEXTSONG            163             
254 #define KEY_PLAYPAUSE           164             
255 #define KEY_PREVIOUSSONG        165             
256 #define KEY_STOPCD              166             
257 #define KEY_RECORD              167             
258 #define KEY_REWIND              168             
259 #define KEY_PHONE               169
260 
261 #define KEY_CONFIG              171
262 #define KEY_HOMEPAGE            172
263 #define KEY_REFRESH             173
264 #define KEY_EXIT                174
265 #define KEY_MOVE                175
266 #define KEY_EDIT                176
267 #define KEY_SCROLLUP            177
268 #define KEY_SCROLLDOWN          178
269 #define KEY_KPLEFTPAREN         179
270 #define KEY_KPRIGHTPAREN        180
271 
272 #define KEY_INTL1               181
273 #define KEY_INTL2               182
274 #define KEY_INTL3               183
275 #define KEY_INTL4               184
276 #define KEY_INTL5               185
277 #define KEY_INTL6               186
278 #define KEY_INTL7               187
279 #define KEY_INTL8               188
280 #define KEY_INTL9               189
281 #define KEY_LANG1               190
282 #define KEY_LANG2               191
283 #define KEY_LANG3               192
284 #define KEY_LANG4               193
285 #define KEY_LANG5               194
286 #define KEY_LANG6               195
287 #define KEY_LANG7               196
288 #define KEY_LANG8               197
289 #define KEY_LANG9               198
290 
291 #define KEY_UNKNOWN             200
292 
293 #define BTN_MISC                0x100
294 #define BTN_0                   0x100
295 #define BTN_1                   0x101
296 #define BTN_2                   0x102
297 #define BTN_3                   0x103
298 #define BTN_4                   0x104
299 #define BTN_5                   0x105
300 #define BTN_6                   0x106
301 #define BTN_7                   0x107
302 #define BTN_8                   0x108
303 #define BTN_9                   0x109
304 
305 #define BTN_MOUSE               0x110
306 #define BTN_LEFT                0x110
307 #define BTN_RIGHT               0x111
308 #define BTN_MIDDLE              0x112
309 #define BTN_SIDE                0x113
310 #define BTN_EXTRA               0x114
311 #define BTN_FORWARD             0x115
312 #define BTN_BACK                0x116
313 
314 #define BTN_JOYSTICK            0x120
315 #define BTN_TRIGGER             0x120
316 #define BTN_THUMB               0x121
317 #define BTN_THUMB2              0x122
318 #define BTN_TOP                 0x123
319 #define BTN_TOP2                0x124
320 #define BTN_PINKIE              0x125
321 #define BTN_BASE                0x126
322 #define BTN_BASE2               0x127
323 #define BTN_BASE3               0x128
324 #define BTN_BASE4               0x129
325 #define BTN_BASE5               0x12a
326 #define BTN_BASE6               0x12b
327 
328 #define BTN_GAMEPAD             0x130
329 #define BTN_A                   0x130
330 #define BTN_B                   0x131
331 #define BTN_C                   0x132
332 #define BTN_X                   0x133
333 #define BTN_Y                   0x134
334 #define BTN_Z                   0x135
335 #define BTN_TL                  0x136
336 #define BTN_TR                  0x137
337 #define BTN_TL2                 0x138
338 #define BTN_TR2                 0x139
339 #define BTN_SELECT              0x13a
340 #define BTN_START               0x13b
341 #define BTN_MODE                0x13c
342 
343 #define BTN_DIGI                0x140
344 #define BTN_TOOL_PEN            0x140
345 #define BTN_TOOL_RUBBER         0x141
346 #define BTN_TOOL_BRUSH          0x142
347 #define BTN_TOOL_PENCIL         0x143
348 #define BTN_TOOL_AIRBRUSH       0x144
349 #define BTN_TOOL_FINGER         0x145
350 #define BTN_TOOL_MOUSE          0x146
351 #define BTN_TOOL_LENS           0x147
352 #define BTN_TOUCH               0x14a
353 #define BTN_STYLUS              0x14b
354 #define BTN_STYLUS2             0x14c
355 
356 #define KEY_MAX                 0x1ff
357 
358 /*
359  * Relative axes
360  */
361 
362 #define REL_X                   0x00
363 #define REL_Y                   0x01
364 #define REL_Z                   0x02
365 #define REL_HWHEEL              0x06
366 #define REL_DIAL                0x07
367 #define REL_WHEEL               0x08
368 #define REL_MISC                0x09
369 #define REL_MAX                 0x0f
370 
371 /*
372  * Absolute axes
373  */
374 
375 #define ABS_X                   0x00
376 #define ABS_Y                   0x01
377 #define ABS_Z                   0x02
378 #define ABS_RX                  0x03
379 #define ABS_RY                  0x04
380 #define ABS_RZ                  0x05
381 #define ABS_THROTTLE            0x06
382 #define ABS_RUDDER              0x07
383 #define ABS_WHEEL               0x08
384 #define ABS_GAS                 0x09
385 #define ABS_BRAKE               0x0a
386 #define ABS_HAT0X               0x10
387 #define ABS_HAT0Y               0x11
388 #define ABS_HAT1X               0x12
389 #define ABS_HAT1Y               0x13
390 #define ABS_HAT2X               0x14
391 #define ABS_HAT2Y               0x15
392 #define ABS_HAT3X               0x16
393 #define ABS_HAT3Y               0x17
394 #define ABS_PRESSURE            0x18
395 #define ABS_DISTANCE            0x19
396 #define ABS_TILT_X              0x1a
397 #define ABS_TILT_Y              0x1b
398 #define ABS_MISC                0x1c
399 #define ABS_MAX                 0x1f
400 
401 /*
402  * LEDs
403  */
404 
405 #define LED_NUML                0x00
406 #define LED_CAPSL               0x01
407 #define LED_SCROLLL             0x02
408 #define LED_COMPOSE             0x03
409 #define LED_KANA                0x04
410 #define LED_MAX                 0x0f
411 
412 /*
413  * Autorepeat values
414  */
415 
416 #define REP_DELAY               0x00
417 #define REP_PERIOD              0x01
418 #define REP_MAX                 0x01
419 
420 /*
421  * Sounds
422  */
423 
424 #define SND_CLICK               0x00
425 #define SND_BELL                0x01
426 #define SND_MAX                 0x07
427 
428 /*
429  * IDs.
430  */
431 
432 #define ID_BUS                  0
433 #define ID_VENDOR               1
434 #define ID_PRODUCT              2
435 #define ID_VERSION              3
436 
437 #define BUS_PCI                 0x01
438 #define BUS_ISAPNP              0x02
439 #define BUS_USB                 0x03
440 
441 #define BUS_ISA                 0x10
442 #define BUS_I8042               0x11
443 #define BUS_XTKBD               0x12
444 #define BUS_RS232               0x13
445 #define BUS_GAMEPORT            0x14
446 #define BUS_PARPORT             0x15
447 #define BUS_AMIGA               0x16
448 #define BUS_ADB                 0x17
449 #define BUS_I2C                 0x18
450 
451 #ifdef __KERNEL__
452 
453 /*
454  * In-kernel definitions.
455  */
456 
457 #include <linux/sched.h>
458 #include <linux/devfs_fs_kernel.h>
459 
460 #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
461 #define BIT(x)  (1UL<<((x)%BITS_PER_LONG))
462 #define LONG(x) ((x)/BITS_PER_LONG)
463 
464 struct input_dev {
465 
466         void *private;
467 
468         int number;
469         char *name;
470         unsigned short idbus;
471         unsigned short idvendor;
472         unsigned short idproduct;
473         unsigned short idversion;
474 
475         unsigned long evbit[NBITS(EV_MAX)];
476         unsigned long keybit[NBITS(KEY_MAX)];
477         unsigned long relbit[NBITS(REL_MAX)];
478         unsigned long absbit[NBITS(ABS_MAX)];
479         unsigned long ledbit[NBITS(LED_MAX)];
480         unsigned long sndbit[NBITS(SND_MAX)];
481 
482         unsigned int keycodemax;
483         unsigned int keycodesize;
484         void *keycode;
485 
486         unsigned int repeat_key;
487         struct timer_list timer;
488 
489         int abs[ABS_MAX + 1];
490         int rep[REP_MAX + 1];
491 
492         unsigned long key[NBITS(KEY_MAX)];
493         unsigned long led[NBITS(LED_MAX)];
494         unsigned long snd[NBITS(SND_MAX)];
495         
496         int absmax[ABS_MAX + 1];
497         int absmin[ABS_MAX + 1];
498         int absfuzz[ABS_MAX + 1];
499         int absflat[ABS_MAX + 1];
500 
501         int (*open)(struct input_dev *dev);
502         void (*close)(struct input_dev *dev);
503         int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
504 
505         struct input_handle *handle;
506         struct input_dev *next;
507 };
508 
509 struct input_handler {
510 
511         void *private;
512 
513         void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
514         struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev);
515         void (*disconnect)(struct input_handle *handle);
516 
517         struct file_operations *fops;
518         int minor;
519 
520         struct input_handle *handle;
521         struct input_handler *next;
522 };
523 
524 struct input_handle {
525 
526         void *private;
527 
528         int open;
529         
530         struct input_dev *dev;
531         struct input_handler *handler;
532 
533         struct input_handle *dnext;
534         struct input_handle *hnext;
535 };
536 
537 void input_register_device(struct input_dev *);
538 void input_unregister_device(struct input_dev *);
539 
540 void input_register_handler(struct input_handler *);
541 void input_unregister_handler(struct input_handler *);
542 
543 int input_open_device(struct input_handle *);
544 void input_close_device(struct input_handle *);
545 
546 devfs_handle_t input_register_minor(char *name, int minor, int minor_base);
547 void input_unregister_minor(devfs_handle_t handle);
548 
549 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
550 
551 #define input_report_key(a,b,c) input_event(a, EV_KEY, b, !!(c))
552 #define input_report_rel(a,b,c) input_event(a, EV_REL, b, c)
553 #define input_report_abs(a,b,c) input_event(a, EV_ABS, b, c)
554 
555 #endif
556 #endif
557 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.