git.y1.nz

fbui

Framebuffer-based graphical environment
download: https://git.y1.nz/archives/fbui.tar.gz
README | Files | Log | Refs

include/linux/input.h

      1 #ifndef _INPUT_H
      2 #define _INPUT_H
      3 
      4 /*
      5  * Copyright (c) 1999-2002 Vojtech Pavlik
      6  *
      7  * This program is free software; you can redistribute it and/or modify it
      8  * under the terms of the GNU General Public License version 2 as published by
      9  * the Free Software Foundation.
     10  */
     11 
     12 #ifdef __KERNEL__
     13 #include <linux/time.h>
     14 #include <linux/list.h>
     15 #else
     16 #include <sys/time.h>
     17 #include <sys/ioctl.h>
     18 #include <asm/types.h>
     19 #endif
     20 
     21 /*
     22  * The event structure itself
     23  */
     24 
     25 struct input_event {
     26 	struct timeval time;
     27 	__u16 type;
     28 	__u16 code;
     29 	__s32 value;
     30 };
     31 
     32 /*
     33  * Protocol version.
     34  */
     35 
     36 #define EV_VERSION		0x010000
     37 
     38 /*
     39  * IOCTLs (0x00 - 0x7f)
     40  */
     41 
     42 struct input_id {
     43 	__u16 bustype;
     44 	__u16 vendor;
     45 	__u16 product;
     46 	__u16 version;
     47 };
     48 
     49 struct input_absinfo {
     50 	__s32 value;
     51 	__s32 minimum;
     52 	__s32 maximum;
     53 	__s32 fuzz;
     54 	__s32 flat;
     55 };
     56 
     57 #define EVIOCGVERSION		_IOR('E', 0x01, int)			/* get driver version */
     58 #define EVIOCGID		_IOR('E', 0x02, struct input_id)	/* get device ID */
     59 #define EVIOCGKEYCODE		_IOR('E', 0x04, int[2])			/* get keycode */
     60 #define EVIOCSKEYCODE		_IOW('E', 0x04, int[2])			/* set keycode */
     61 
     62 #define EVIOCGNAME(len)		_IOC(_IOC_READ, 'E', 0x06, len)		/* get device name */
     63 #define EVIOCGPHYS(len)		_IOC(_IOC_READ, 'E', 0x07, len)		/* get physical location */
     64 #define EVIOCGUNIQ(len)		_IOC(_IOC_READ, 'E', 0x08, len)		/* get unique identifier */
     65 
     66 #define EVIOCGKEY(len)		_IOC(_IOC_READ, 'E', 0x18, len)		/* get global keystate */
     67 #define EVIOCGLED(len)		_IOC(_IOC_READ, 'E', 0x19, len)		/* get all LEDs */
     68 #define EVIOCGSND(len)		_IOC(_IOC_READ, 'E', 0x1a, len)		/* get all sounds status */
     69 
     70 #define EVIOCGBIT(ev,len)	_IOC(_IOC_READ, 'E', 0x20 + ev, len)	/* get event bits */
     71 #define EVIOCGABS(abs)		_IOR('E', 0x40 + abs, struct input_absinfo)		/* get abs value/limits */
     72 #define EVIOCSABS(abs)		_IOW('E', 0xc0 + abs, struct input_absinfo)		/* set 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 EVIOCGEFFECTS		_IOR('E', 0x84, int)			/* Report number of effects playable at the same time */
     77 
     78 #define EVIOCGRAB		_IOW('E', 0x90, int)			/* Grab/Release device */
     79 
     80 /*
     81  * Event types
     82  */
     83 
     84 #define EV_SYN			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_PWR			0x16
     94 #define EV_FF_STATUS		0x17
     95 #define EV_MAX			0x1f
     96 
     97 /*
     98  * Synchronization events.
     99  */
    100 
    101 #define SYN_REPORT		0
    102 #define SYN_CONFIG		1
    103 
    104 /*
    105  * Keys and buttons
    106  */
    107 
    108 #define KEY_RESERVED		0
    109 #define KEY_ESC			1
    110 #define KEY_1			2
    111 #define KEY_2			3
    112 #define KEY_3			4
    113 #define KEY_4			5
    114 #define KEY_5			6
    115 #define KEY_6			7
    116 #define KEY_7			8
    117 #define KEY_8			9
    118 #define KEY_9			10
    119 #define KEY_0			11
    120 #define KEY_MINUS		12
    121 #define KEY_EQUAL		13
    122 #define KEY_BACKSPACE		14
    123 #define KEY_TAB			15
    124 #define KEY_Q			16
    125 #define KEY_W			17
    126 #define KEY_E			18
    127 #define KEY_R			19
    128 #define KEY_T			20
    129 #define KEY_Y			21
    130 #define KEY_U			22
    131 #define KEY_I			23
    132 #define KEY_O			24
    133 #define KEY_P			25
    134 #define KEY_LEFTBRACE		26
    135 #define KEY_RIGHTBRACE		27
    136 #define KEY_ENTER		28
    137 #define KEY_LEFTCTRL		29
    138 #define KEY_A			30
    139 #define KEY_S			31
    140 #define KEY_D			32
    141 #define KEY_F			33
    142 #define KEY_G			34
    143 #define KEY_H			35
    144 #define KEY_J			36
    145 #define KEY_K			37
    146 #define KEY_L			38
    147 #define KEY_SEMICOLON		39
    148 #define KEY_APOSTROPHE		40
    149 #define KEY_GRAVE		41
    150 #define KEY_LEFTSHIFT		42
    151 #define KEY_BACKSLASH		43
    152 #define KEY_Z			44
    153 #define KEY_X			45
    154 #define KEY_C			46
    155 #define KEY_V			47
    156 #define KEY_B			48
    157 #define KEY_N			49
    158 #define KEY_M			50
    159 #define KEY_COMMA		51
    160 #define KEY_DOT			52
    161 #define KEY_SLASH		53
    162 #define KEY_RIGHTSHIFT		54
    163 #define KEY_KPASTERISK		55
    164 #define KEY_LEFTALT		56
    165 #define KEY_SPACE		57
    166 #define KEY_CAPSLOCK		58
    167 #define KEY_F1			59
    168 #define KEY_F2			60
    169 #define KEY_F3			61
    170 #define KEY_F4			62
    171 #define KEY_F5			63
    172 #define KEY_F6			64
    173 #define KEY_F7			65
    174 #define KEY_F8			66
    175 #define KEY_F9			67
    176 #define KEY_F10			68
    177 #define KEY_NUMLOCK		69
    178 #define KEY_SCROLLLOCK		70
    179 #define KEY_KP7			71
    180 #define KEY_KP8			72
    181 #define KEY_KP9			73
    182 #define KEY_KPMINUS		74
    183 #define KEY_KP4			75
    184 #define KEY_KP5			76
    185 #define KEY_KP6			77
    186 #define KEY_KPPLUS		78
    187 #define KEY_KP1			79
    188 #define KEY_KP2			80
    189 #define KEY_KP3			81
    190 #define KEY_KP0			82
    191 #define KEY_KPDOT		83
    192 
    193 #define KEY_ZENKAKUHANKAKU	85
    194 #define KEY_102ND		86
    195 #define KEY_F11			87
    196 #define KEY_F12			88
    197 #define KEY_RO			89
    198 #define KEY_KATAKANA		90
    199 #define KEY_HIRAGANA		91
    200 #define KEY_HENKAN		92
    201 #define KEY_KATAKANAHIRAGANA	93
    202 #define KEY_MUHENKAN		94
    203 #define KEY_KPJPCOMMA		95
    204 #define KEY_KPENTER		96
    205 #define KEY_RIGHTCTRL		97
    206 #define KEY_KPSLASH		98
    207 #define KEY_SYSRQ		99
    208 #define KEY_RIGHTALT		100
    209 #define KEY_LINEFEED		101
    210 #define KEY_HOME		102
    211 #define KEY_UP			103
    212 #define KEY_PAGEUP		104
    213 #define KEY_LEFT		105
    214 #define KEY_RIGHT		106
    215 #define KEY_END			107
    216 #define KEY_DOWN		108
    217 #define KEY_PAGEDOWN		109
    218 #define KEY_INSERT		110
    219 #define KEY_DELETE		111
    220 #define KEY_MACRO		112
    221 #define KEY_MUTE		113
    222 #define KEY_VOLUMEDOWN		114
    223 #define KEY_VOLUMEUP		115
    224 #define KEY_POWER		116
    225 #define KEY_KPEQUAL		117
    226 #define KEY_KPPLUSMINUS		118
    227 #define KEY_PAUSE		119
    228 
    229 #define KEY_KPCOMMA		121
    230 #define KEY_HANGUEL		122
    231 #define KEY_HANJA		123
    232 #define KEY_YEN			124
    233 #define KEY_LEFTMETA		125
    234 #define KEY_RIGHTMETA		126
    235 #define KEY_COMPOSE		127
    236 
    237 #define KEY_STOP		128
    238 #define KEY_AGAIN		129
    239 #define KEY_PROPS		130
    240 #define KEY_UNDO		131
    241 #define KEY_FRONT		132
    242 #define KEY_COPY		133
    243 #define KEY_OPEN		134
    244 #define KEY_PASTE		135
    245 #define KEY_FIND		136
    246 #define KEY_CUT			137
    247 #define KEY_HELP		138
    248 #define KEY_MENU		139
    249 #define KEY_CALC		140
    250 #define KEY_SETUP		141
    251 #define KEY_SLEEP		142
    252 #define KEY_WAKEUP		143
    253 #define KEY_FILE		144
    254 #define KEY_SENDFILE		145
    255 #define KEY_DELETEFILE		146
    256 #define KEY_XFER		147
    257 #define KEY_PROG1		148
    258 #define KEY_PROG2		149
    259 #define KEY_WWW			150
    260 #define KEY_MSDOS		151
    261 #define KEY_COFFEE		152
    262 #define KEY_DIRECTION		153
    263 #define KEY_CYCLEWINDOWS	154
    264 #define KEY_MAIL		155
    265 #define KEY_BOOKMARKS		156
    266 #define KEY_COMPUTER		157
    267 #define KEY_BACK		158
    268 #define KEY_FORWARD		159
    269 #define KEY_CLOSECD		160
    270 #define KEY_EJECTCD		161
    271 #define KEY_EJECTCLOSECD	162
    272 #define KEY_NEXTSONG		163
    273 #define KEY_PLAYPAUSE		164
    274 #define KEY_PREVIOUSSONG	165
    275 #define KEY_STOPCD		166
    276 #define KEY_RECORD		167
    277 #define KEY_REWIND		168
    278 #define KEY_PHONE		169
    279 #define KEY_ISO			170
    280 #define KEY_CONFIG		171
    281 #define KEY_HOMEPAGE		172
    282 #define KEY_REFRESH		173
    283 #define KEY_EXIT		174
    284 #define KEY_MOVE		175
    285 #define KEY_EDIT		176
    286 #define KEY_SCROLLUP		177
    287 #define KEY_SCROLLDOWN		178
    288 #define KEY_KPLEFTPAREN		179
    289 #define KEY_KPRIGHTPAREN	180
    290 
    291 #define KEY_F13			183
    292 #define KEY_F14			184
    293 #define KEY_F15			185
    294 #define KEY_F16			186
    295 #define KEY_F17			187
    296 #define KEY_F18			188
    297 #define KEY_F19			189
    298 #define KEY_F20			190
    299 #define KEY_F21			191
    300 #define KEY_F22			192
    301 #define KEY_F23			193
    302 #define KEY_F24			194
    303 
    304 #define KEY_PLAYCD		200
    305 #define KEY_PAUSECD		201
    306 #define KEY_PROG3		202
    307 #define KEY_PROG4		203
    308 #define KEY_SUSPEND		205
    309 #define KEY_CLOSE		206
    310 #define KEY_PLAY		207
    311 #define KEY_FASTFORWARD		208
    312 #define KEY_BASSBOOST		209
    313 #define KEY_PRINT		210
    314 #define KEY_HP			211
    315 #define KEY_CAMERA		212
    316 #define KEY_SOUND		213
    317 #define KEY_QUESTION		214
    318 #define KEY_EMAIL		215
    319 #define KEY_CHAT		216
    320 #define KEY_SEARCH		217
    321 #define KEY_CONNECT		218
    322 #define KEY_FINANCE		219
    323 #define KEY_SPORT		220
    324 #define KEY_SHOP		221
    325 #define KEY_ALTERASE		222
    326 #define KEY_CANCEL		223
    327 #define KEY_BRIGHTNESSDOWN	224
    328 #define KEY_BRIGHTNESSUP	225
    329 #define KEY_MEDIA		226
    330 
    331 #define KEY_UNKNOWN		240
    332 
    333 #define BTN_MISC		0x100
    334 #define BTN_0			0x100
    335 #define BTN_1			0x101
    336 #define BTN_2			0x102
    337 #define BTN_3			0x103
    338 #define BTN_4			0x104
    339 #define BTN_5			0x105
    340 #define BTN_6			0x106
    341 #define BTN_7			0x107
    342 #define BTN_8			0x108
    343 #define BTN_9			0x109
    344 
    345 #define BTN_MOUSE		0x110
    346 #define BTN_LEFT		0x110
    347 #define BTN_RIGHT		0x111
    348 #define BTN_MIDDLE		0x112
    349 #define BTN_SIDE		0x113
    350 #define BTN_EXTRA		0x114
    351 #define BTN_FORWARD		0x115
    352 #define BTN_BACK		0x116
    353 #define BTN_TASK		0x117
    354 
    355 #define BTN_JOYSTICK		0x120
    356 #define BTN_TRIGGER		0x120
    357 #define BTN_THUMB		0x121
    358 #define BTN_THUMB2		0x122
    359 #define BTN_TOP			0x123
    360 #define BTN_TOP2		0x124
    361 #define BTN_PINKIE		0x125
    362 #define BTN_BASE		0x126
    363 #define BTN_BASE2		0x127
    364 #define BTN_BASE3		0x128
    365 #define BTN_BASE4		0x129
    366 #define BTN_BASE5		0x12a
    367 #define BTN_BASE6		0x12b
    368 #define BTN_DEAD		0x12f
    369 
    370 #define BTN_GAMEPAD		0x130
    371 #define BTN_A			0x130
    372 #define BTN_B			0x131
    373 #define BTN_C			0x132
    374 #define BTN_X			0x133
    375 #define BTN_Y			0x134
    376 #define BTN_Z			0x135
    377 #define BTN_TL			0x136
    378 #define BTN_TR			0x137
    379 #define BTN_TL2			0x138
    380 #define BTN_TR2			0x139
    381 #define BTN_SELECT		0x13a
    382 #define BTN_START		0x13b
    383 #define BTN_MODE		0x13c
    384 #define BTN_THUMBL		0x13d
    385 #define BTN_THUMBR		0x13e
    386 
    387 #define BTN_DIGI		0x140
    388 #define BTN_TOOL_PEN		0x140
    389 #define BTN_TOOL_RUBBER		0x141
    390 #define BTN_TOOL_BRUSH		0x142
    391 #define BTN_TOOL_PENCIL		0x143
    392 #define BTN_TOOL_AIRBRUSH	0x144
    393 #define BTN_TOOL_FINGER		0x145
    394 #define BTN_TOOL_MOUSE		0x146
    395 #define BTN_TOOL_LENS		0x147
    396 #define BTN_TOUCH		0x14a
    397 #define BTN_STYLUS		0x14b
    398 #define BTN_STYLUS2		0x14c
    399 #define BTN_TOOL_DOUBLETAP	0x14d
    400 #define BTN_TOOL_TRIPLETAP	0x14e
    401 
    402 #define BTN_WHEEL		0x150
    403 #define BTN_GEAR_DOWN		0x150
    404 #define BTN_GEAR_UP		0x151
    405 
    406 #define KEY_OK			0x160
    407 #define KEY_SELECT 		0x161
    408 #define KEY_GOTO		0x162
    409 #define KEY_CLEAR		0x163
    410 #define KEY_POWER2		0x164
    411 #define KEY_OPTION		0x165
    412 #define KEY_INFO		0x166
    413 #define KEY_TIME		0x167
    414 #define KEY_VENDOR		0x168
    415 #define KEY_ARCHIVE		0x169
    416 #define KEY_PROGRAM		0x16a
    417 #define KEY_CHANNEL		0x16b
    418 #define KEY_FAVORITES		0x16c
    419 #define KEY_EPG			0x16d
    420 #define KEY_PVR			0x16e
    421 #define KEY_MHP			0x16f
    422 #define KEY_LANGUAGE		0x170
    423 #define KEY_TITLE		0x171
    424 #define KEY_SUBTITLE		0x172
    425 #define KEY_ANGLE		0x173
    426 #define KEY_ZOOM		0x174
    427 #define KEY_MODE		0x175
    428 #define KEY_KEYBOARD		0x176
    429 #define KEY_SCREEN		0x177
    430 #define KEY_PC			0x178
    431 #define KEY_TV			0x179
    432 #define KEY_TV2			0x17a
    433 #define KEY_VCR			0x17b
    434 #define KEY_VCR2		0x17c
    435 #define KEY_SAT			0x17d
    436 #define KEY_SAT2		0x17e
    437 #define KEY_CD			0x17f
    438 #define KEY_TAPE		0x180
    439 #define KEY_RADIO		0x181
    440 #define KEY_TUNER		0x182
    441 #define KEY_PLAYER		0x183
    442 #define KEY_TEXT		0x184
    443 #define KEY_DVD			0x185
    444 #define KEY_AUX			0x186
    445 #define KEY_MP3			0x187
    446 #define KEY_AUDIO		0x188
    447 #define KEY_VIDEO		0x189
    448 #define KEY_DIRECTORY		0x18a
    449 #define KEY_LIST		0x18b
    450 #define KEY_MEMO		0x18c
    451 #define KEY_CALENDAR		0x18d
    452 #define KEY_RED			0x18e
    453 #define KEY_GREEN		0x18f
    454 #define KEY_YELLOW		0x190
    455 #define KEY_BLUE		0x191
    456 #define KEY_CHANNELUP		0x192
    457 #define KEY_CHANNELDOWN		0x193
    458 #define KEY_FIRST		0x194
    459 #define KEY_LAST		0x195
    460 #define KEY_AB			0x196
    461 #define KEY_NEXT		0x197
    462 #define KEY_RESTART		0x198
    463 #define KEY_SLOW		0x199
    464 #define KEY_SHUFFLE		0x19a
    465 #define KEY_BREAK		0x19b
    466 #define KEY_PREVIOUS		0x19c
    467 #define KEY_DIGITS		0x19d
    468 #define KEY_TEEN		0x19e
    469 #define KEY_TWEN		0x19f
    470 
    471 #define KEY_DEL_EOL		0x1c0
    472 #define KEY_DEL_EOS		0x1c1
    473 #define KEY_INS_LINE		0x1c2
    474 #define KEY_DEL_LINE		0x1c3
    475 
    476 #define KEY_MAX			0x1ff
    477 
    478 /*
    479  * Relative axes
    480  */
    481 
    482 #define REL_X			0x00
    483 #define REL_Y			0x01
    484 #define REL_Z			0x02
    485 #define REL_HWHEEL		0x06
    486 #define REL_DIAL		0x07
    487 #define REL_WHEEL		0x08
    488 #define REL_MISC		0x09
    489 #define REL_MAX			0x0f
    490 
    491 /*
    492  * Absolute axes
    493  */
    494 
    495 #define ABS_X			0x00
    496 #define ABS_Y			0x01
    497 #define ABS_Z			0x02
    498 #define ABS_RX			0x03
    499 #define ABS_RY			0x04
    500 #define ABS_RZ			0x05
    501 #define ABS_THROTTLE		0x06
    502 #define ABS_RUDDER		0x07
    503 #define ABS_WHEEL		0x08
    504 #define ABS_GAS			0x09
    505 #define ABS_BRAKE		0x0a
    506 #define ABS_HAT0X		0x10
    507 #define ABS_HAT0Y		0x11
    508 #define ABS_HAT1X		0x12
    509 #define ABS_HAT1Y		0x13
    510 #define ABS_HAT2X		0x14
    511 #define ABS_HAT2Y		0x15
    512 #define ABS_HAT3X		0x16
    513 #define ABS_HAT3Y		0x17
    514 #define ABS_PRESSURE		0x18
    515 #define ABS_DISTANCE		0x19
    516 #define ABS_TILT_X		0x1a
    517 #define ABS_TILT_Y		0x1b
    518 #define ABS_TOOL_WIDTH		0x1c
    519 #define ABS_VOLUME		0x20
    520 #define ABS_MISC		0x28
    521 #define ABS_MAX			0x3f
    522 
    523 /*
    524  * Misc events
    525  */
    526 
    527 #define MSC_SERIAL		0x00
    528 #define MSC_PULSELED		0x01
    529 #define MSC_GESTURE		0x02
    530 #define MSC_RAW			0x03
    531 #define MSC_SCAN		0x04
    532 #define MSC_MAX			0x07
    533 
    534 /*
    535  * LEDs
    536  */
    537 
    538 #define LED_NUML		0x00
    539 #define LED_CAPSL		0x01
    540 #define LED_SCROLLL		0x02
    541 #define LED_COMPOSE		0x03
    542 #define LED_KANA		0x04
    543 #define LED_SLEEP		0x05
    544 #define LED_SUSPEND		0x06
    545 #define LED_MUTE		0x07
    546 #define LED_MISC		0x08
    547 #define LED_MAX			0x0f
    548 
    549 /*
    550  * Autorepeat values
    551  */
    552 
    553 #define REP_DELAY		0x00
    554 #define REP_PERIOD		0x01
    555 #define REP_MAX			0x01
    556 
    557 /*
    558  * Sounds
    559  */
    560 
    561 #define SND_CLICK		0x00
    562 #define SND_BELL		0x01
    563 #define SND_TONE		0x02
    564 #define SND_MAX			0x07
    565 
    566 /*
    567  * IDs.
    568  */
    569 
    570 #define ID_BUS			0
    571 #define ID_VENDOR		1
    572 #define ID_PRODUCT		2
    573 #define ID_VERSION		3
    574 
    575 #define BUS_PCI			0x01
    576 #define BUS_ISAPNP		0x02
    577 #define BUS_USB			0x03
    578 #define BUS_HIL			0x04
    579 #define BUS_BLUETOOTH		0x05
    580 
    581 #define BUS_ISA			0x10
    582 #define BUS_I8042		0x11
    583 #define BUS_XTKBD		0x12
    584 #define BUS_RS232		0x13
    585 #define BUS_GAMEPORT		0x14
    586 #define BUS_PARPORT		0x15
    587 #define BUS_AMIGA		0x16
    588 #define BUS_ADB			0x17
    589 #define BUS_I2C			0x18
    590 #define BUS_HOST		0x19
    591 
    592 /*
    593  * Values describing the status of an effect
    594  */
    595 #define FF_STATUS_STOPPED	0x00
    596 #define FF_STATUS_PLAYING	0x01
    597 #define FF_STATUS_MAX		0x01
    598 
    599 /*
    600  * Structures used in ioctls to upload effects to a device
    601  * The first structures are not passed directly by using ioctls.
    602  * They are sub-structures of the actually sent structure (called ff_effect)
    603  */
    604 
    605 struct ff_replay {
    606 	__u16 length; /* Duration of an effect in ms. All other times are also expressed in ms */
    607 	__u16 delay;  /* Time to wait before to start playing an effect */
    608 };
    609 
    610 struct ff_trigger {
    611 	__u16 button;   /* Number of button triggering an effect */
    612 	__u16 interval; /* Time to wait before an effect can be re-triggered (ms) */
    613 };
    614 
    615 struct ff_envelope {
    616 	__u16 attack_length;	/* Duration of attack (ms) */
    617 	__u16 attack_level;	/* Level at beginning of attack */
    618 	__u16 fade_length;	/* Duration of fade (ms) */
    619 	__u16 fade_level;	/* Level at end of fade */
    620 };
    621 
    622 /* FF_CONSTANT */
    623 struct ff_constant_effect {
    624 	__s16 level;	    /* Strength of effect. Negative values are OK */
    625 	struct ff_envelope envelope;
    626 };
    627 
    628 /* FF_RAMP */
    629 struct ff_ramp_effect {
    630 	__s16 start_level;
    631 	__s16 end_level;
    632 	struct ff_envelope envelope;
    633 };
    634 
    635 /* FF_SPRING of FF_FRICTION */
    636 struct ff_condition_effect {
    637 	__u16 right_saturation; /* Max level when joystick is on the right */
    638 	__u16 left_saturation;  /* Max level when joystick in on the left */
    639 
    640 	__s16 right_coeff;	/* Indicates how fast the force grows when the
    641 				   joystick moves to the right */
    642 	__s16 left_coeff;	/* Same for left side */
    643 
    644 	__u16 deadband;	/* Size of area where no force is produced */
    645 	__s16 center;	/* Position of dead zone */
    646 
    647 };
    648 
    649 /* FF_PERIODIC */
    650 struct ff_periodic_effect {
    651 	__u16 waveform;	/* Kind of wave (sine, square...) */
    652 	__u16 period;	/* in ms */
    653 	__s16 magnitude;	/* Peak value */
    654 	__s16 offset;	/* Mean value of wave (roughly) */
    655 	__u16 phase;		/* 'Horizontal' shift */
    656 
    657 	struct ff_envelope envelope;
    658 
    659 /* Only used if waveform == FF_CUSTOM */
    660 	__u32 custom_len;	/* Number of samples */
    661 	__s16 *custom_data;	/* Buffer of samples */
    662 /* Note: the data pointed by custom_data is copied by the driver. You can
    663  * therefore dispose of the memory after the upload/update */
    664 };
    665 
    666 /* FF_RUMBLE */
    667 /* Some rumble pads have two motors of different weight.
    668    strong_magnitude represents the magnitude of the vibration generated
    669    by the heavy motor.
    670 */
    671 struct ff_rumble_effect {
    672 	__u16 strong_magnitude;  /* Magnitude of the heavy motor */
    673 	__u16 weak_magnitude;    /* Magnitude of the light one */
    674 };
    675 
    676 /*
    677  * Structure sent through ioctl from the application to the driver
    678  */
    679 struct ff_effect {
    680 	__u16 type;
    681 /* Following field denotes the unique id assigned to an effect.
    682  * If user sets if to -1, a new effect is created, and its id is returned in the same field
    683  * Else, the user sets it to the effect id it wants to update.
    684  */
    685 	__s16 id;
    686 
    687 	__u16 direction;	/* Direction. 0 deg -> 0x0000 (down)
    688 					     90 deg -> 0x4000 (left)
    689 					    180 deg -> 0x8000 (up)
    690 					    270 deg -> 0xC000 (right)
    691 				*/
    692 
    693 	struct ff_trigger trigger;
    694 	struct ff_replay replay;
    695 
    696 	union {
    697 		struct ff_constant_effect constant;
    698 		struct ff_ramp_effect ramp;
    699 		struct ff_periodic_effect periodic;
    700 		struct ff_condition_effect condition[2]; /* One for each axis */
    701 		struct ff_rumble_effect rumble;
    702 	} u;
    703 };
    704 
    705 /*
    706  * Force feedback effect types
    707  */
    708 
    709 #define FF_RUMBLE	0x50
    710 #define FF_PERIODIC	0x51
    711 #define FF_CONSTANT	0x52
    712 #define FF_SPRING	0x53
    713 #define FF_FRICTION	0x54
    714 #define FF_DAMPER	0x55
    715 #define FF_INERTIA	0x56
    716 #define FF_RAMP		0x57
    717 
    718 /*
    719  * Force feedback periodic effect types
    720  */
    721 
    722 #define FF_SQUARE	0x58
    723 #define FF_TRIANGLE	0x59
    724 #define FF_SINE		0x5a
    725 #define FF_SAW_UP	0x5b
    726 #define FF_SAW_DOWN	0x5c
    727 #define FF_CUSTOM	0x5d
    728 
    729 /*
    730  * Set ff device properties
    731  */
    732 
    733 #define FF_GAIN		0x60
    734 #define FF_AUTOCENTER	0x61
    735 
    736 #define FF_MAX		0x7f
    737 
    738 #ifdef __KERNEL__
    739 
    740 /*
    741  * In-kernel definitions.
    742  */
    743 
    744 #include <linux/fs.h>
    745 #include <linux/timer.h>
    746 
    747 #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
    748 #define BIT(x)	(1UL<<((x)%BITS_PER_LONG))
    749 #define LONG(x) ((x)/BITS_PER_LONG)
    750 
    751 #define INPUT_KEYCODE(dev, scancode) ((dev->keycodesize == 1) ? ((u8*)dev->keycode)[scancode] : \
    752 	((dev->keycodesize == 2) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode])))
    753 
    754 #define SET_INPUT_KEYCODE(dev, scancode, val)			\
    755 		({	unsigned __old;				\
    756 		switch (dev->keycodesize) {			\
    757 			case 1: {				\
    758 				u8 *k = (u8 *)dev->keycode;	\
    759 				__old = k[scancode];		\
    760 				k[scancode] = val;		\
    761 				break;				\
    762 			}					\
    763 			case 2: {				\
    764 				u16 *k = (u16 *)dev->keycode;	\
    765 				__old = k[scancode];		\
    766 				k[scancode] = val;		\
    767 				break;				\
    768 			}					\
    769 			default: {				\
    770 				u32 *k = (u32 *)dev->keycode;	\
    771 				__old = k[scancode];		\
    772 				k[scancode] = val;		\
    773 				break;				\
    774 			}					\
    775 		}						\
    776 		__old; })
    777 
    778 struct input_dev {
    779 
    780 	void *private;
    781 
    782 	char *name;
    783 	char *phys;
    784 	char *uniq;
    785 	struct input_id id;
    786 
    787 	unsigned long evbit[NBITS(EV_MAX)];
    788 	unsigned long keybit[NBITS(KEY_MAX)];
    789 	unsigned long relbit[NBITS(REL_MAX)];
    790 	unsigned long absbit[NBITS(ABS_MAX)];
    791 	unsigned long mscbit[NBITS(MSC_MAX)];
    792 	unsigned long ledbit[NBITS(LED_MAX)];
    793 	unsigned long sndbit[NBITS(SND_MAX)];
    794 	unsigned long ffbit[NBITS(FF_MAX)];
    795 	int ff_effects_max;
    796 
    797 	unsigned int keycodemax;
    798 	unsigned int keycodesize;
    799 	void *keycode;
    800 
    801 	unsigned int repeat_key;
    802 	struct timer_list timer;
    803 
    804 	struct pm_dev *pm_dev;
    805 	struct pt_regs *regs;
    806 	int state;
    807 
    808 	int sync;
    809 
    810 	int abs[ABS_MAX + 1];
    811 	int rep[REP_MAX + 1];
    812 
    813 	unsigned long key[NBITS(KEY_MAX)];
    814 	unsigned long led[NBITS(LED_MAX)];
    815 	unsigned long snd[NBITS(SND_MAX)];
    816 
    817 	int absmax[ABS_MAX + 1];
    818 	int absmin[ABS_MAX + 1];
    819 	int absfuzz[ABS_MAX + 1];
    820 	int absflat[ABS_MAX + 1];
    821 
    822 	int (*open)(struct input_dev *dev);
    823 	void (*close)(struct input_dev *dev);
    824 	int (*accept)(struct input_dev *dev, struct file *file);
    825 	int (*flush)(struct input_dev *dev, struct file *file);
    826 	int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
    827 	int (*upload_effect)(struct input_dev *dev, struct ff_effect *effect);
    828 	int (*erase_effect)(struct input_dev *dev, int effect_id);
    829 
    830 	struct input_handle *grab;
    831 	struct device *dev;
    832 
    833 	struct list_head	h_list;
    834 	struct list_head	node;
    835 };
    836 
    837 /*
    838  * Structure for hotplug & device<->driver matching.
    839  */
    840 
    841 #define INPUT_DEVICE_ID_MATCH_BUS	1
    842 #define INPUT_DEVICE_ID_MATCH_VENDOR	2
    843 #define INPUT_DEVICE_ID_MATCH_PRODUCT	4
    844 #define INPUT_DEVICE_ID_MATCH_VERSION	8
    845 
    846 #define INPUT_DEVICE_ID_MATCH_EVBIT	0x010
    847 #define INPUT_DEVICE_ID_MATCH_KEYBIT	0x020
    848 #define INPUT_DEVICE_ID_MATCH_RELBIT	0x040
    849 #define INPUT_DEVICE_ID_MATCH_ABSBIT	0x080
    850 #define INPUT_DEVICE_ID_MATCH_MSCIT	0x100
    851 #define INPUT_DEVICE_ID_MATCH_LEDBIT	0x200
    852 #define INPUT_DEVICE_ID_MATCH_SNDBIT	0x400
    853 #define INPUT_DEVICE_ID_MATCH_FFBIT	0x800
    854 
    855 #define INPUT_DEVICE_ID_MATCH_DEVICE\
    856 	(INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
    857 #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\
    858 	(INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
    859 
    860 struct input_device_id {
    861 
    862 	unsigned long flags;
    863 
    864 	struct input_id id;
    865 
    866 	unsigned long evbit[NBITS(EV_MAX)];
    867 	unsigned long keybit[NBITS(KEY_MAX)];
    868 	unsigned long relbit[NBITS(REL_MAX)];
    869 	unsigned long absbit[NBITS(ABS_MAX)];
    870 	unsigned long mscbit[NBITS(MSC_MAX)];
    871 	unsigned long ledbit[NBITS(LED_MAX)];
    872 	unsigned long sndbit[NBITS(SND_MAX)];
    873 	unsigned long ffbit[NBITS(FF_MAX)];
    874 
    875 	unsigned long driver_info;
    876 };
    877 
    878 struct input_handle;
    879 
    880 struct input_handler {
    881 
    882 	void *private;
    883 
    884 	void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
    885 	struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev, struct input_device_id *id);
    886 	void (*disconnect)(struct input_handle *handle);
    887 
    888 	struct file_operations *fops;
    889 	int minor;
    890 	char *name;
    891 
    892 	struct input_device_id *id_table;
    893 	struct input_device_id *blacklist;
    894 
    895 	struct list_head	h_list;
    896 	struct list_head	node;
    897 };
    898 
    899 struct input_handle {
    900 
    901 	void *private;
    902 
    903 	int open;
    904 	char *name;
    905 
    906 	struct input_dev *dev;
    907 	struct input_handler *handler;
    908 
    909 	struct list_head	d_node;
    910 	struct list_head	h_node;
    911 };
    912 
    913 #define to_dev(n) container_of(n,struct input_dev,node)
    914 #define to_handler(n) container_of(n,struct input_handler,node);
    915 #define to_handle(n) container_of(n,struct input_handle,d_node)
    916 #define to_handle_h(n) container_of(n,struct input_handle,h_node)
    917 
    918 static inline void init_input_dev(struct input_dev *dev)
    919 {
    920 	INIT_LIST_HEAD(&dev->h_list);
    921 	INIT_LIST_HEAD(&dev->node);
    922 }
    923 
    924 void input_register_device(struct input_dev *);
    925 void input_unregister_device(struct input_dev *);
    926 
    927 void input_register_handler(struct input_handler *);
    928 void input_unregister_handler(struct input_handler *);
    929 
    930 int input_grab_device(struct input_handle *);
    931 void input_release_device(struct input_handle *);
    932 
    933 int input_open_device(struct input_handle *);
    934 void input_close_device(struct input_handle *);
    935 
    936 int input_accept_process(struct input_handle *handle, struct file *file);
    937 int input_flush_device(struct input_handle* handle, struct file* file);
    938 
    939 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
    940 
    941 static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
    942 {
    943 	input_event(dev, EV_KEY, code, !!value);
    944 }
    945 
    946 static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value)
    947 {
    948 	input_event(dev, EV_REL, code, value);
    949 }
    950 
    951 static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
    952 {
    953 	input_event(dev, EV_ABS, code, value);
    954 }
    955 
    956 static inline void input_report_ff(struct input_dev *dev, unsigned int code, int value)
    957 {
    958 	input_event(dev, EV_FF, code, value);
    959 }
    960 
    961 static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value)
    962 {
    963 	input_event(dev, EV_FF_STATUS, code, value);
    964 }
    965 
    966 static inline void input_regs(struct input_dev *dev, struct pt_regs *regs)
    967 {
    968 	dev->regs = regs;
    969 }
    970 
    971 static inline void input_sync(struct input_dev *dev)
    972 {
    973 	input_event(dev, EV_SYN, SYN_REPORT, 0);
    974 	dev->regs = NULL;
    975 }
    976 
    977 static inline void input_set_abs_params(struct input_dev *dev, int axis, int min, int max, int fuzz, int flat)
    978 {
    979 	dev->absmin[axis] = min;
    980 	dev->absmax[axis] = max;
    981 	dev->absfuzz[axis] = fuzz;
    982 	dev->absflat[axis] = flat;
    983 
    984 	dev->absbit[LONG(axis)] |= BIT(axis);
    985 }
    986 
    987 extern struct class_simple *input_class;
    988 
    989 #ifdef CONFIG_INPUT_FBUI
    990 /* FBUI additions by Zachary T Smith, fbui@comcast.net */
    991 extern void fbui_input_enable(void);
    992 extern void fbui_input_disable(void);
    993 typedef void FBUIInputEventHandler (u32 , struct input_event *);
    994 extern void fbui_input_register_handler (FBUIInputEventHandler*, u32 param);
    995 #endif
    996 
    997 
    998 #endif
    999 #endif

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.