Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
input.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1999-2002 Vojtech Pavlik
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License version 2 as published by
6  * the Free Software Foundation.
7  */
8 #ifndef _INPUT_H
9 #define _INPUT_H
10 
11 #include <linux/time.h>
12 #include <linux/list.h>
13 #include <uapi/linux/input.h>
14 /* Implementation details, userspace should not care about these */
15 #define ABS_MT_FIRST ABS_MT_TOUCH_MAJOR
16 #define ABS_MT_LAST ABS_MT_TOOL_Y
17 
18 /*
19  * In-kernel definitions.
20  */
21 
22 #include <linux/device.h>
23 #include <linux/fs.h>
24 #include <linux/timer.h>
25 #include <linux/mod_devicetable.h>
26 
33 struct input_value {
34  __u16 type;
35  __u16 code;
36  __s32 value;
37 };
38 
116 struct input_dev {
117  const char *name;
118  const char *phys;
119  const char *uniq;
120  struct input_id id;
121 
122  unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];
123 
124  unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
125  unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];
126  unsigned long relbit[BITS_TO_LONGS(REL_CNT)];
127  unsigned long absbit[BITS_TO_LONGS(ABS_CNT)];
128  unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
129  unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
130  unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
131  unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
132  unsigned long swbit[BITS_TO_LONGS(SW_CNT)];
133 
134  unsigned int hint_events_per_packet;
135 
136  unsigned int keycodemax;
137  unsigned int keycodesize;
138  void *keycode;
139 
140  int (*setkeycode)(struct input_dev *dev,
141  const struct input_keymap_entry *ke,
142  unsigned int *old_keycode);
143  int (*getkeycode)(struct input_dev *dev,
144  struct input_keymap_entry *ke);
145 
146  struct ff_device *ff;
147 
148  unsigned int repeat_key;
149  struct timer_list timer;
150 
151  int rep[REP_CNT];
152 
153  struct input_mt *mt;
154 
155  struct input_absinfo *absinfo;
156 
157  unsigned long key[BITS_TO_LONGS(KEY_CNT)];
158  unsigned long led[BITS_TO_LONGS(LED_CNT)];
159  unsigned long snd[BITS_TO_LONGS(SND_CNT)];
160  unsigned long sw[BITS_TO_LONGS(SW_CNT)];
161 
162  int (*open)(struct input_dev *dev);
163  void (*close)(struct input_dev *dev);
164  int (*flush)(struct input_dev *dev, struct file *file);
165  int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
166 
167  struct input_handle __rcu *grab;
168 
169  spinlock_t event_lock;
170  struct mutex mutex;
171 
172  unsigned int users;
173  bool going_away;
174 
175  struct device dev;
176 
177  struct list_head h_list;
178  struct list_head node;
179 
180  unsigned int num_vals;
181  unsigned int max_vals;
182  struct input_value *vals;
183 };
184 #define to_input_dev(d) container_of(d, struct input_dev, dev)
185 
186 /*
187  * Verify that we are in sync with input_device_id mod_devicetable.h #defines
188  */
189 
190 #if EV_MAX != INPUT_DEVICE_ID_EV_MAX
191 #error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
192 #endif
193 
194 #if KEY_MIN_INTERESTING != INPUT_DEVICE_ID_KEY_MIN_INTERESTING
195 #error "KEY_MIN_INTERESTING and INPUT_DEVICE_ID_KEY_MIN_INTERESTING do not match"
196 #endif
197 
198 #if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
199 #error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
200 #endif
201 
202 #if REL_MAX != INPUT_DEVICE_ID_REL_MAX
203 #error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
204 #endif
205 
206 #if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
207 #error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
208 #endif
209 
210 #if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
211 #error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
212 #endif
213 
214 #if LED_MAX != INPUT_DEVICE_ID_LED_MAX
215 #error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
216 #endif
217 
218 #if SND_MAX != INPUT_DEVICE_ID_SND_MAX
219 #error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
220 #endif
221 
222 #if FF_MAX != INPUT_DEVICE_ID_FF_MAX
223 #error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
224 #endif
225 
226 #if SW_MAX != INPUT_DEVICE_ID_SW_MAX
227 #error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
228 #endif
229 
230 #define INPUT_DEVICE_ID_MATCH_DEVICE \
231  (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
232 #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
233  (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
234 
235 struct input_handle;
236 
277 struct input_handler {
278 
279  void *private;
280 
281  void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
282  void (*events)(struct input_handle *handle,
283  const struct input_value *vals, unsigned int count);
284  bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
285  bool (*match)(struct input_handler *handler, struct input_dev *dev);
286  int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
287  void (*disconnect)(struct input_handle *handle);
288  void (*start)(struct input_handle *handle);
289 
290  bool legacy_minors;
291  int minor;
292  const char *name;
293 
294  const struct input_device_id *id_table;
295 
296  struct list_head h_list;
297  struct list_head node;
298 };
299 
312 struct input_handle {
313 
314  void *private;
315 
316  int open;
317  const char *name;
318 
319  struct input_dev *dev;
320  struct input_handler *handler;
321 
322  struct list_head d_node;
323  struct list_head h_node;
324 };
325 
326 struct input_dev *input_allocate_device(void);
327 void input_free_device(struct input_dev *dev);
328 
329 static inline struct input_dev *input_get_device(struct input_dev *dev)
330 {
331  return dev ? to_input_dev(get_device(&dev->dev)) : NULL;
332 }
333 
334 static inline void input_put_device(struct input_dev *dev)
335 {
336  if (dev)
337  put_device(&dev->dev);
338 }
339 
340 static inline void *input_get_drvdata(struct input_dev *dev)
341 {
342  return dev_get_drvdata(&dev->dev);
343 }
344 
345 static inline void input_set_drvdata(struct input_dev *dev, void *data)
346 {
347  dev_set_drvdata(&dev->dev, data);
348 }
349 
350 int __must_check input_register_device(struct input_dev *);
351 void input_unregister_device(struct input_dev *);
352 
353 void input_reset_device(struct input_dev *);
354 
355 int __must_check input_register_handler(struct input_handler *);
356 void input_unregister_handler(struct input_handler *);
357 
358 int __must_check input_get_new_minor(int legacy_base, unsigned int legacy_num,
359  bool allow_dynamic);
360 void input_free_minor(unsigned int minor);
361 
362 int input_handler_for_each_handle(struct input_handler *, void *data,
363  int (*fn)(struct input_handle *, void *));
364 
365 int input_register_handle(struct input_handle *);
366 void input_unregister_handle(struct input_handle *);
367 
368 int input_grab_device(struct input_handle *);
369 void input_release_device(struct input_handle *);
370 
371 int input_open_device(struct input_handle *);
372 void input_close_device(struct input_handle *);
373 
374 int input_flush_device(struct input_handle *handle, struct file *file);
375 
376 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
377 void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value);
378 
379 static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
380 {
381  input_event(dev, EV_KEY, code, !!value);
382 }
383 
384 static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value)
385 {
386  input_event(dev, EV_REL, code, value);
387 }
388 
389 static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
390 {
391  input_event(dev, EV_ABS, code, value);
392 }
393 
394 static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value)
395 {
396  input_event(dev, EV_FF_STATUS, code, value);
397 }
398 
399 static inline void input_report_switch(struct input_dev *dev, unsigned int code, int value)
400 {
401  input_event(dev, EV_SW, code, !!value);
402 }
403 
404 static inline void input_sync(struct input_dev *dev)
405 {
406  input_event(dev, EV_SYN, SYN_REPORT, 0);
407 }
408 
409 static inline void input_mt_sync(struct input_dev *dev)
410 {
411  input_event(dev, EV_SYN, SYN_MT_REPORT, 0);
412 }
413 
414 void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code);
415 
426 static inline void input_set_events_per_packet(struct input_dev *dev, int n_events)
427 {
428  dev->hint_events_per_packet = n_events;
429 }
430 
431 void input_alloc_absinfo(struct input_dev *dev);
432 void input_set_abs_params(struct input_dev *dev, unsigned int axis,
433  int min, int max, int fuzz, int flat);
434 
435 #define INPUT_GENERATE_ABS_ACCESSORS(_suffix, _item) \
436 static inline int input_abs_get_##_suffix(struct input_dev *dev, \
437  unsigned int axis) \
438 { \
439  return dev->absinfo ? dev->absinfo[axis]._item : 0; \
440 } \
441  \
442 static inline void input_abs_set_##_suffix(struct input_dev *dev, \
443  unsigned int axis, int val) \
444 { \
445  input_alloc_absinfo(dev); \
446  if (dev->absinfo) \
447  dev->absinfo[axis]._item = val; \
448 }
449 
451 INPUT_GENERATE_ABS_ACCESSORS(min, minimum)
452 INPUT_GENERATE_ABS_ACCESSORS(max, maximum)
453 INPUT_GENERATE_ABS_ACCESSORS(fuzz, fuzz)
454 INPUT_GENERATE_ABS_ACCESSORS(flat, flat)
455 INPUT_GENERATE_ABS_ACCESSORS(res, resolution)
456 
457 int input_scancode_to_scalar(const struct input_keymap_entry *ke,
458  unsigned int *scancode);
459 
460 int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke);
461 int input_set_keycode(struct input_dev *dev,
463 
464 extern struct class input_class;
465 
493 struct ff_device {
494  int (*upload)(struct input_dev *dev, struct ff_effect *effect,
495  struct ff_effect *old);
496  int (*erase)(struct input_dev *dev, int effect_id);
497 
498  int (*playback)(struct input_dev *dev, int effect_id, int value);
499  void (*set_gain)(struct input_dev *dev, u16 gain);
500  void (*set_autocenter)(struct input_dev *dev, u16 magnitude);
501 
502  void (*destroy)(struct ff_device *);
503 
504  void *private;
505 
506  unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
507 
508  struct mutex mutex;
509 
510  int max_effects;
511  struct ff_effect *effects;
512  struct file *effect_owners[];
513 };
514 
515 int input_ff_create(struct input_dev *dev, unsigned int max_effects);
516 void input_ff_destroy(struct input_dev *dev);
517 
518 int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
519 
520 int input_ff_upload(struct input_dev *dev, struct ff_effect *effect, struct file *file);
521 int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file);
522 
523 int input_ff_create_memless(struct input_dev *dev, void *data,
524  int (*play_effect)(struct input_dev *, void *, struct ff_effect *));
525 
526 #endif