This source file includes following definitions.
- input_get_device
- input_put_device
- input_get_drvdata
- input_set_drvdata
- input_report_key
- input_report_rel
- input_report_abs
- input_report_ff_status
- input_report_switch
- input_sync
- input_mt_sync
- input_set_events_per_packet
- INPUT_GENERATE_ABS_ACCESSORS
1
2
3
4
5 #ifndef _INPUT_H
6 #define _INPUT_H
7
8 #include <linux/time.h>
9 #include <linux/list.h>
10 #include <uapi/linux/input.h>
11
12 #define ABS_MT_FIRST ABS_MT_TOUCH_MAJOR
13 #define ABS_MT_LAST ABS_MT_TOOL_Y
14
15
16
17
18
19 #include <linux/device.h>
20 #include <linux/fs.h>
21 #include <linux/timer.h>
22 #include <linux/mod_devicetable.h>
23
24 struct input_dev_poller;
25
26
27
28
29
30
31
32 struct input_value {
33 __u16 type;
34 __u16 code;
35 __s32 value;
36 };
37
38 enum input_clock_type {
39 INPUT_CLK_REAL = 0,
40 INPUT_CLK_MONO,
41 INPUT_CLK_BOOT,
42 INPUT_CLK_MAX
43 };
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 struct input_dev {
132 const char *name;
133 const char *phys;
134 const char *uniq;
135 struct input_id id;
136
137 unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];
138
139 unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
140 unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];
141 unsigned long relbit[BITS_TO_LONGS(REL_CNT)];
142 unsigned long absbit[BITS_TO_LONGS(ABS_CNT)];
143 unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
144 unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
145 unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
146 unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
147 unsigned long swbit[BITS_TO_LONGS(SW_CNT)];
148
149 unsigned int hint_events_per_packet;
150
151 unsigned int keycodemax;
152 unsigned int keycodesize;
153 void *keycode;
154
155 int (*setkeycode)(struct input_dev *dev,
156 const struct input_keymap_entry *ke,
157 unsigned int *old_keycode);
158 int (*getkeycode)(struct input_dev *dev,
159 struct input_keymap_entry *ke);
160
161 struct ff_device *ff;
162
163 struct input_dev_poller *poller;
164
165 unsigned int repeat_key;
166 struct timer_list timer;
167
168 int rep[REP_CNT];
169
170 struct input_mt *mt;
171
172 struct input_absinfo *absinfo;
173
174 unsigned long key[BITS_TO_LONGS(KEY_CNT)];
175 unsigned long led[BITS_TO_LONGS(LED_CNT)];
176 unsigned long snd[BITS_TO_LONGS(SND_CNT)];
177 unsigned long sw[BITS_TO_LONGS(SW_CNT)];
178
179 int (*open)(struct input_dev *dev);
180 void (*close)(struct input_dev *dev);
181 int (*flush)(struct input_dev *dev, struct file *file);
182 int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
183
184 struct input_handle __rcu *grab;
185
186 spinlock_t event_lock;
187 struct mutex mutex;
188
189 unsigned int users;
190 bool going_away;
191
192 struct device dev;
193
194 struct list_head h_list;
195 struct list_head node;
196
197 unsigned int num_vals;
198 unsigned int max_vals;
199 struct input_value *vals;
200
201 bool devres_managed;
202
203 ktime_t timestamp[INPUT_CLK_MAX];
204 };
205 #define to_input_dev(d) container_of(d, struct input_dev, dev)
206
207
208
209
210
211 #if EV_MAX != INPUT_DEVICE_ID_EV_MAX
212 #error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
213 #endif
214
215 #if KEY_MIN_INTERESTING != INPUT_DEVICE_ID_KEY_MIN_INTERESTING
216 #error "KEY_MIN_INTERESTING and INPUT_DEVICE_ID_KEY_MIN_INTERESTING do not match"
217 #endif
218
219 #if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
220 #error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
221 #endif
222
223 #if REL_MAX != INPUT_DEVICE_ID_REL_MAX
224 #error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
225 #endif
226
227 #if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
228 #error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
229 #endif
230
231 #if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
232 #error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
233 #endif
234
235 #if LED_MAX != INPUT_DEVICE_ID_LED_MAX
236 #error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
237 #endif
238
239 #if SND_MAX != INPUT_DEVICE_ID_SND_MAX
240 #error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
241 #endif
242
243 #if FF_MAX != INPUT_DEVICE_ID_FF_MAX
244 #error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
245 #endif
246
247 #if SW_MAX != INPUT_DEVICE_ID_SW_MAX
248 #error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
249 #endif
250
251 #if INPUT_PROP_MAX != INPUT_DEVICE_ID_PROP_MAX
252 #error "INPUT_PROP_MAX and INPUT_DEVICE_ID_PROP_MAX do not match"
253 #endif
254
255 #define INPUT_DEVICE_ID_MATCH_DEVICE \
256 (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
257 #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
258 (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
259
260 struct input_handle;
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302 struct input_handler {
303
304 void *private;
305
306 void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
307 void (*events)(struct input_handle *handle,
308 const struct input_value *vals, unsigned int count);
309 bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
310 bool (*match)(struct input_handler *handler, struct input_dev *dev);
311 int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
312 void (*disconnect)(struct input_handle *handle);
313 void (*start)(struct input_handle *handle);
314
315 bool legacy_minors;
316 int minor;
317 const char *name;
318
319 const struct input_device_id *id_table;
320
321 struct list_head h_list;
322 struct list_head node;
323 };
324
325
326
327
328
329
330
331
332
333
334
335
336
337 struct input_handle {
338
339 void *private;
340
341 int open;
342 const char *name;
343
344 struct input_dev *dev;
345 struct input_handler *handler;
346
347 struct list_head d_node;
348 struct list_head h_node;
349 };
350
351 struct input_dev __must_check *input_allocate_device(void);
352 struct input_dev __must_check *devm_input_allocate_device(struct device *);
353 void input_free_device(struct input_dev *dev);
354
355 static inline struct input_dev *input_get_device(struct input_dev *dev)
356 {
357 return dev ? to_input_dev(get_device(&dev->dev)) : NULL;
358 }
359
360 static inline void input_put_device(struct input_dev *dev)
361 {
362 if (dev)
363 put_device(&dev->dev);
364 }
365
366 static inline void *input_get_drvdata(struct input_dev *dev)
367 {
368 return dev_get_drvdata(&dev->dev);
369 }
370
371 static inline void input_set_drvdata(struct input_dev *dev, void *data)
372 {
373 dev_set_drvdata(&dev->dev, data);
374 }
375
376 int __must_check input_register_device(struct input_dev *);
377 void input_unregister_device(struct input_dev *);
378
379 void input_reset_device(struct input_dev *);
380
381 int input_setup_polling(struct input_dev *dev,
382 void (*poll_fn)(struct input_dev *dev));
383 void input_set_poll_interval(struct input_dev *dev, unsigned int interval);
384 void input_set_min_poll_interval(struct input_dev *dev, unsigned int interval);
385 void input_set_max_poll_interval(struct input_dev *dev, unsigned int interval);
386
387 int __must_check input_register_handler(struct input_handler *);
388 void input_unregister_handler(struct input_handler *);
389
390 int __must_check input_get_new_minor(int legacy_base, unsigned int legacy_num,
391 bool allow_dynamic);
392 void input_free_minor(unsigned int minor);
393
394 int input_handler_for_each_handle(struct input_handler *, void *data,
395 int (*fn)(struct input_handle *, void *));
396
397 int input_register_handle(struct input_handle *);
398 void input_unregister_handle(struct input_handle *);
399
400 int input_grab_device(struct input_handle *);
401 void input_release_device(struct input_handle *);
402
403 int input_open_device(struct input_handle *);
404 void input_close_device(struct input_handle *);
405
406 int input_flush_device(struct input_handle *handle, struct file *file);
407
408 void input_set_timestamp(struct input_dev *dev, ktime_t timestamp);
409 ktime_t *input_get_timestamp(struct input_dev *dev);
410
411 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
412 void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value);
413
414 static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
415 {
416 input_event(dev, EV_KEY, code, !!value);
417 }
418
419 static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value)
420 {
421 input_event(dev, EV_REL, code, value);
422 }
423
424 static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
425 {
426 input_event(dev, EV_ABS, code, value);
427 }
428
429 static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value)
430 {
431 input_event(dev, EV_FF_STATUS, code, value);
432 }
433
434 static inline void input_report_switch(struct input_dev *dev, unsigned int code, int value)
435 {
436 input_event(dev, EV_SW, code, !!value);
437 }
438
439 static inline void input_sync(struct input_dev *dev)
440 {
441 input_event(dev, EV_SYN, SYN_REPORT, 0);
442 }
443
444 static inline void input_mt_sync(struct input_dev *dev)
445 {
446 input_event(dev, EV_SYN, SYN_MT_REPORT, 0);
447 }
448
449 void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code);
450
451
452
453
454
455
456
457
458
459
460
461 static inline void input_set_events_per_packet(struct input_dev *dev, int n_events)
462 {
463 dev->hint_events_per_packet = n_events;
464 }
465
466 void input_alloc_absinfo(struct input_dev *dev);
467 void input_set_abs_params(struct input_dev *dev, unsigned int axis,
468 int min, int max, int fuzz, int flat);
469
470 #define INPUT_GENERATE_ABS_ACCESSORS(_suffix, _item) \
471 static inline int input_abs_get_##_suffix(struct input_dev *dev, \
472 unsigned int axis) \
473 { \
474 return dev->absinfo ? dev->absinfo[axis]._item : 0; \
475 } \
476 \
477 static inline void input_abs_set_##_suffix(struct input_dev *dev, \
478 unsigned int axis, int val) \
479 { \
480 input_alloc_absinfo(dev); \
481 if (dev->absinfo) \
482 dev->absinfo[axis]._item = val; \
483 }
484
485 INPUT_GENERATE_ABS_ACCESSORS(val, value)
486 INPUT_GENERATE_ABS_ACCESSORS(min, minimum)
487 INPUT_GENERATE_ABS_ACCESSORS(max, maximum)
488 INPUT_GENERATE_ABS_ACCESSORS(fuzz, fuzz)
489 INPUT_GENERATE_ABS_ACCESSORS(flat, flat)
490 INPUT_GENERATE_ABS_ACCESSORS(res, resolution)
491
492 int input_scancode_to_scalar(const struct input_keymap_entry *ke,
493 unsigned int *scancode);
494
495 int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke);
496 int input_set_keycode(struct input_dev *dev,
497 const struct input_keymap_entry *ke);
498
499 bool input_match_device_id(const struct input_dev *dev,
500 const struct input_device_id *id);
501
502 void input_enable_softrepeat(struct input_dev *dev, int delay, int period);
503
504 extern struct class input_class;
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533 struct ff_device {
534 int (*upload)(struct input_dev *dev, struct ff_effect *effect,
535 struct ff_effect *old);
536 int (*erase)(struct input_dev *dev, int effect_id);
537
538 int (*playback)(struct input_dev *dev, int effect_id, int value);
539 void (*set_gain)(struct input_dev *dev, u16 gain);
540 void (*set_autocenter)(struct input_dev *dev, u16 magnitude);
541
542 void (*destroy)(struct ff_device *);
543
544 void *private;
545
546 unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
547
548 struct mutex mutex;
549
550 int max_effects;
551 struct ff_effect *effects;
552 struct file *effect_owners[];
553 };
554
555 int input_ff_create(struct input_dev *dev, unsigned int max_effects);
556 void input_ff_destroy(struct input_dev *dev);
557
558 int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
559
560 int input_ff_upload(struct input_dev *dev, struct ff_effect *effect, struct file *file);
561 int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file);
562 int input_ff_flush(struct input_dev *dev, struct file *file);
563
564 int input_ff_create_memless(struct input_dev *dev, void *data,
565 int (*play_effect)(struct input_dev *, void *, struct ff_effect *));
566
567 #endif