Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sparse-keymap.h
Go to the documentation of this file.
1 #ifndef _SPARSE_KEYMAP_H
2 #define _SPARSE_KEYMAP_H
3 
4 /*
5  * Copyright (c) 2009 Dmitry Torokhov
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 #define KE_END 0 /* Indicates end of keymap */
13 #define KE_KEY 1 /* Ordinary key/button */
14 #define KE_SW 2 /* Switch (predetermined value) */
15 #define KE_VSW 3 /* Switch (value supplied at runtime) */
16 #define KE_IGNORE 4 /* Known entry that should be ignored */
17 #define KE_LAST KE_IGNORE
18 
35 struct key_entry {
36  int type; /* See KE_* above */
37  u32 code;
38  union {
39  u16 keycode; /* For KE_KEY */
40  struct { /* For KE_SW, KE_VSW */
41  u8 code;
42  u8 value; /* For KE_SW, ignored by KE_VSW */
43  } sw;
44  };
45 };
46 
47 struct key_entry *sparse_keymap_entry_from_scancode(struct input_dev *dev,
48  unsigned int code);
49 struct key_entry *sparse_keymap_entry_from_keycode(struct input_dev *dev,
50  unsigned int code);
51 int sparse_keymap_setup(struct input_dev *dev,
52  const struct key_entry *keymap,
53  int (*setup)(struct input_dev *, struct key_entry *));
54 void sparse_keymap_free(struct input_dev *dev);
55 
56 void sparse_keymap_report_entry(struct input_dev *dev, const struct key_entry *ke,
57  unsigned int value, bool autorelease);
58 
59 bool sparse_keymap_report_event(struct input_dev *dev, unsigned int code,
60  unsigned int value, bool autorelease);
61 
62 #endif /* _SPARSE_KEYMAP_H */