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.13 2000/05/29 10:54:53 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_TL                  0x08
384 #define ABS_TR                  0x09
385 #define ABS_HAT0X               0x10
386 #define ABS_HAT0Y               0x11
387 #define ABS_HAT1X               0x12
388 #define ABS_HAT1Y               0x13
389 #define ABS_HAT2X               0x14
390 #define ABS_HAT2Y               0x15
391 #define ABS_HAT3X               0x16
392 #define ABS_HAT3Y               0x17
393 #define ABS_PRESSURE            0x18
394 #define ABS_DISTANCE            0x19
395 #define ABS_TILT_X              0x1a
396 #define ABS_TILT_Y              0x1b
397 #define ABS_MISC                0x1c
398 #define ABS_MAX                 0x1f
399 
400 /*
401  * LEDs
402  */
403 
404 #define LED_NUML                0x00
405 #define LED_CAPSL               0x01
406 #define LED_SCROLLL             0x02
407 #define LED_COMPOSE             0x03
408 #define LED_KANA                0x04
409 #define LED_MAX                 0x0f
410 
411 /*
412  * Autorepeat values
413  */
414 
415 #define REP_DELAY               0x00
416 #define REP_PERIOD              0x01
417 #define REP_MAX                 0x01
418 
419 /*
420  * Sounds
421  */
422 
423 #define SND_CLICK               0x00
424 #define SND_BELL                0x01
425 #define SND_MAX                 0x07
426 
427 /*
428  * IDs.
429  */
430 
431 #define ID_BUS                  0
432 #define ID_VENDOR               1
433 #define ID_PRODUCT              2
434 #define ID_VERSION              3
435 
436 #define BUS_PCI                 0x01
437 #define BUS_ISAPNP              0x02
438 #define BUS_USB                 0x03
439 
440 #define BUS_ISA                 0x10
441 #define BUS_I8042               0x11
442 #define BUS_XTKBD               0x12
443 #define BUS_RS232               0x13
444 #define BUS_GAMEPORT            0x14
445 #define BUS_PARPORT             0x15
446 #define BUS_AMIGA               0x16
447 #define BUS_ADB                 0x17
448 
449 #ifdef __KERNEL__
450 
451 /*
452  * In-kernel definitions.
453  */
454 
455 #include <linux/sched.h>
456 #include <linux/devfs_fs_kernel.h>
457 
458 #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
459 #define BIT(x)  (1UL<<((x)%BITS_PER_LONG))
460 #define LONG(x) ((x)/BITS_PER_LONG)
461 
462 struct input_dev {
463 
464         void *private;
465 
466         int number;
467         char *name;
468         unsigned short idbus;
469         unsigned short idvendor;
470         unsigned short idproduct;
471         unsigned short idversion;
472 
473         unsigned long evbit[NBITS(EV_MAX)];
474         unsigned long keybit[NBITS(KEY_MAX)];
475         unsigned long relbit[NBITS(REL_MAX)];
476         unsigned long absbit[NBITS(ABS_MAX)];
477         unsigned long ledbit[NBITS(LED_MAX)];
478         unsigned long sndbit[NBITS(SND_MAX)];
479 
480         unsigned int keycodemax;
481         unsigned int keycodesize;
482         void *keycode;
483 
484         unsigned int repeat_key;
485         struct timer_list timer;
486 
487         int abs[ABS_MAX + 1];
488         int rep[REP_MAX + 1];
489 
490         unsigned long key[NBITS(KEY_MAX)];
491         unsigned long led[NBITS(LED_MAX)];
492         unsigned long snd[NBITS(SND_MAX)];
493         
494         int absmax[ABS_MAX + 1];
495         int absmin[ABS_MAX + 1];
496         int absfuzz[ABS_MAX + 1];
497         int absflat[ABS_MAX + 1];
498 
499         int (*open)(struct input_dev *dev);
500         void (*close)(struct input_dev *dev);
501         int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
502 
503         struct input_handle *handle;
504         struct input_dev *next;
505 };
506 
507 struct input_handler {
508 
509         void *private;
510 
511         void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
512         struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev);
513         void (*disconnect)(struct input_handle *handle);
514 
515         struct file_operations *fops;
516         int minor;
517 
518         struct input_handle *handle;
519         struct input_handler *next;
520 };
521 
522 struct input_handle {
523 
524         void *private;
525 
526         int open;
527         
528         struct input_dev *dev;
529         struct input_handler *handler;
530 
531         struct input_handle *dnext;
532         struct input_handle *hnext;
533 };
534 
535 void input_register_device(struct input_dev *);
536 void input_unregister_device(struct input_dev *);
537 
538 void input_register_handler(struct input_handler *);
539 void input_unregister_handler(struct input_handler *);
540 
541 int input_open_device(struct input_handle *);
542 void input_close_device(struct input_handle *);
543 
544 devfs_handle_t input_register_minor(char *name, int minor, int minor_base);
545 void input_unregister_minor(devfs_handle_t handle);
546 
547 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
548 
549 #define input_report_key(a,b,c) input_event(a, EV_KEY, b, !!(c))
550 #define input_report_rel(a,b,c) input_event(a, EV_REL, b, c)
551 #define input_report_abs(a,b,c) input_event(a, EV_ABS, b, c)
552 
553 #endif
554 #endif
555 

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