Lines Matching +full:key +full:- +full:code
17 #include <linux/input/sparse-keymap.h>
28 struct key_entry *key; in sparse_keymap_get_key_index() local
31 for (key = dev->keycode; key->type != KE_END; key++) { in sparse_keymap_get_key_index()
32 if (key->type == KE_KEY) { in sparse_keymap_get_key_index()
33 if (key == k) in sparse_keymap_get_key_index()
45 struct key_entry *key; in sparse_keymap_entry_by_index() local
48 for (key = dev->keycode; key->type != KE_END; key++) in sparse_keymap_entry_by_index()
49 if (key->type == KE_KEY) in sparse_keymap_entry_by_index()
51 return key; in sparse_keymap_entry_by_index()
57 * sparse_keymap_entry_from_scancode - perform sparse keymap lookup
59 * @code: Scan code
65 unsigned int code) in sparse_keymap_entry_from_scancode() argument
67 struct key_entry *key; in sparse_keymap_entry_from_scancode() local
69 for (key = dev->keycode; key->type != KE_END; key++) in sparse_keymap_entry_from_scancode()
70 if (code == key->code) in sparse_keymap_entry_from_scancode()
71 return key; in sparse_keymap_entry_from_scancode()
78 * sparse_keymap_entry_from_keycode - perform sparse keymap lookup
80 * @keycode: Key code
88 struct key_entry *key; in sparse_keymap_entry_from_keycode() local
90 for (key = dev->keycode; key->type != KE_END; key++) in sparse_keymap_entry_from_keycode()
91 if (key->type == KE_KEY && keycode == key->keycode) in sparse_keymap_entry_from_keycode()
92 return key; in sparse_keymap_entry_from_keycode()
101 struct key_entry *key; in sparse_keymap_locate() local
104 if (ke->flags & INPUT_KEYMAP_BY_INDEX) in sparse_keymap_locate()
105 key = sparse_keymap_entry_by_index(dev, ke->index); in sparse_keymap_locate()
107 key = sparse_keymap_entry_from_scancode(dev, scancode); in sparse_keymap_locate()
109 key = NULL; in sparse_keymap_locate()
111 return key; in sparse_keymap_locate()
117 const struct key_entry *key; in sparse_keymap_getkeycode() local
119 if (dev->keycode) { in sparse_keymap_getkeycode()
120 key = sparse_keymap_locate(dev, ke); in sparse_keymap_getkeycode()
121 if (key && key->type == KE_KEY) { in sparse_keymap_getkeycode()
122 ke->keycode = key->keycode; in sparse_keymap_getkeycode()
123 if (!(ke->flags & INPUT_KEYMAP_BY_INDEX)) in sparse_keymap_getkeycode()
124 ke->index = in sparse_keymap_getkeycode()
125 sparse_keymap_get_key_index(dev, key); in sparse_keymap_getkeycode()
126 ke->len = sizeof(key->code); in sparse_keymap_getkeycode()
127 memcpy(ke->scancode, &key->code, sizeof(key->code)); in sparse_keymap_getkeycode()
132 return -EINVAL; in sparse_keymap_getkeycode()
139 struct key_entry *key; in sparse_keymap_setkeycode() local
141 if (dev->keycode) { in sparse_keymap_setkeycode()
142 key = sparse_keymap_locate(dev, ke); in sparse_keymap_setkeycode()
143 if (key && key->type == KE_KEY) { in sparse_keymap_setkeycode()
144 *old_keycode = key->keycode; in sparse_keymap_setkeycode()
145 key->keycode = ke->keycode; in sparse_keymap_setkeycode()
146 set_bit(ke->keycode, dev->keybit); in sparse_keymap_setkeycode()
148 clear_bit(*old_keycode, dev->keybit); in sparse_keymap_setkeycode()
153 return -EINVAL; in sparse_keymap_setkeycode()
157 * sparse_keymap_setup - set up sparse keymap for an input device
179 for (e = keymap; e->type != KE_END; e++) in sparse_keymap_setup()
182 map = devm_kmemdup(&dev->dev, keymap, map_size * sizeof(*map), in sparse_keymap_setup()
185 return -ENOMEM; in sparse_keymap_setup()
196 switch (entry->type) { in sparse_keymap_setup()
198 __set_bit(EV_KEY, dev->evbit); in sparse_keymap_setup()
199 __set_bit(entry->keycode, dev->keybit); in sparse_keymap_setup()
204 __set_bit(EV_SW, dev->evbit); in sparse_keymap_setup()
205 __set_bit(entry->sw.code, dev->swbit); in sparse_keymap_setup()
210 if (test_bit(EV_KEY, dev->evbit)) { in sparse_keymap_setup()
211 __set_bit(KEY_UNKNOWN, dev->keybit); in sparse_keymap_setup()
212 __set_bit(EV_MSC, dev->evbit); in sparse_keymap_setup()
213 __set_bit(MSC_SCAN, dev->mscbit); in sparse_keymap_setup()
216 dev->keycode = map; in sparse_keymap_setup()
217 dev->keycodemax = map_size; in sparse_keymap_setup()
218 dev->getkeycode = sparse_keymap_getkeycode; in sparse_keymap_setup()
219 dev->setkeycode = sparse_keymap_setkeycode; in sparse_keymap_setup()
226 * sparse_keymap_report_entry - report event corresponding to given key entry
228 * @ke: key entry describing event
240 switch (ke->type) { in sparse_keymap_report_entry()
242 input_event(dev, EV_MSC, MSC_SCAN, ke->code); in sparse_keymap_report_entry()
243 input_report_key(dev, ke->keycode, value); in sparse_keymap_report_entry()
246 input_report_key(dev, ke->keycode, 0); in sparse_keymap_report_entry()
252 value = ke->sw.value; in sparse_keymap_report_entry()
256 input_report_switch(dev, ke->sw.code, value); in sparse_keymap_report_entry()
264 * sparse_keymap_report_event - report event corresponding to given scancode
266 * @code: Scan code
276 bool sparse_keymap_report_event(struct input_dev *dev, unsigned int code, in sparse_keymap_report_event() argument
280 sparse_keymap_entry_from_scancode(dev, code); in sparse_keymap_report_event()
288 /* Report an unknown key event as a debugging aid */ in sparse_keymap_report_event()
290 unknown_ke.code = code; in sparse_keymap_report_event()