Lines Matching +full:input +full:- +full:value
1 // SPDX-License-Identifier: GPL-2.0-only
13 #include <linux/input.h>
14 #include <linux/input/sparse-keymap.h>
28 for (key = dev->keycode; key->type != KE_END; key++) { in sparse_keymap_get_key_index()
29 if (key->type == KE_KEY) { in sparse_keymap_get_key_index()
45 for (key = dev->keycode; key->type != KE_END; key++) in sparse_keymap_entry_by_index()
46 if (key->type == KE_KEY) in sparse_keymap_entry_by_index()
54 * sparse_keymap_entry_from_scancode - perform sparse keymap lookup
55 * @dev: Input device using sparse keymap
59 * input device using sparse keymap.
66 for (key = dev->keycode; key->type != KE_END; key++) in sparse_keymap_entry_from_scancode()
67 if (code == key->code) in sparse_keymap_entry_from_scancode()
75 * sparse_keymap_entry_from_keycode - perform sparse keymap lookup
76 * @dev: Input device using sparse keymap
80 * input device using sparse keymap.
87 for (key = dev->keycode; key->type != KE_END; key++) in sparse_keymap_entry_from_keycode()
88 if (key->type == KE_KEY && keycode == key->keycode) in sparse_keymap_entry_from_keycode()
101 if (ke->flags & INPUT_KEYMAP_BY_INDEX) in sparse_keymap_locate()
102 key = sparse_keymap_entry_by_index(dev, ke->index); in sparse_keymap_locate()
116 if (dev->keycode) { in sparse_keymap_getkeycode()
118 if (key && key->type == KE_KEY) { in sparse_keymap_getkeycode()
119 ke->keycode = key->keycode; in sparse_keymap_getkeycode()
120 if (!(ke->flags & INPUT_KEYMAP_BY_INDEX)) in sparse_keymap_getkeycode()
121 ke->index = in sparse_keymap_getkeycode()
123 ke->len = sizeof(key->code); in sparse_keymap_getkeycode()
124 memcpy(ke->scancode, &key->code, sizeof(key->code)); in sparse_keymap_getkeycode()
129 return -EINVAL; in sparse_keymap_getkeycode()
138 if (dev->keycode) { in sparse_keymap_setkeycode()
140 if (key && key->type == KE_KEY) { in sparse_keymap_setkeycode()
141 *old_keycode = key->keycode; in sparse_keymap_setkeycode()
142 key->keycode = ke->keycode; in sparse_keymap_setkeycode()
143 set_bit(ke->keycode, dev->keybit); in sparse_keymap_setkeycode()
145 clear_bit(*old_keycode, dev->keybit); in sparse_keymap_setkeycode()
150 return -EINVAL; in sparse_keymap_setkeycode()
154 * sparse_keymap_setup - set up sparse keymap for an input device
155 * @dev: Input device
162 * keymap after which sets up input device event bits appropriately.
176 for (e = keymap; e->type != KE_END; e++) in sparse_keymap_setup()
179 map = devm_kmemdup(&dev->dev, keymap, map_size * sizeof(*map), in sparse_keymap_setup()
182 return -ENOMEM; in sparse_keymap_setup()
193 switch (entry->type) { in sparse_keymap_setup()
195 __set_bit(EV_KEY, dev->evbit); in sparse_keymap_setup()
196 __set_bit(entry->keycode, dev->keybit); in sparse_keymap_setup()
201 __set_bit(EV_SW, dev->evbit); in sparse_keymap_setup()
202 __set_bit(entry->sw.code, dev->swbit); in sparse_keymap_setup()
207 if (test_bit(EV_KEY, dev->evbit)) { in sparse_keymap_setup()
208 __set_bit(KEY_UNKNOWN, dev->keybit); in sparse_keymap_setup()
209 __set_bit(EV_MSC, dev->evbit); in sparse_keymap_setup()
210 __set_bit(MSC_SCAN, dev->mscbit); in sparse_keymap_setup()
213 dev->keycode = map; in sparse_keymap_setup()
214 dev->keycodemax = map_size; in sparse_keymap_setup()
215 dev->getkeycode = sparse_keymap_getkeycode; in sparse_keymap_setup()
216 dev->setkeycode = sparse_keymap_setkeycode; in sparse_keymap_setup()
223 * sparse_keymap_report_entry - report event corresponding to given key entry
224 * @dev: Input device for which event should be reported
226 * @value: Value that should be reported (ignored by %KE_SW entries)
231 * This function is used to report input event described by given
235 unsigned int value, bool autorelease) in sparse_keymap_report_entry() argument
237 switch (ke->type) { in sparse_keymap_report_entry()
239 input_event(dev, EV_MSC, MSC_SCAN, ke->code); in sparse_keymap_report_entry()
240 input_report_key(dev, ke->keycode, value); in sparse_keymap_report_entry()
242 if (value && autorelease) { in sparse_keymap_report_entry()
243 input_report_key(dev, ke->keycode, 0); in sparse_keymap_report_entry()
249 value = ke->sw.value; in sparse_keymap_report_entry()
253 input_report_switch(dev, ke->sw.code, value); in sparse_keymap_report_entry()
261 * sparse_keymap_report_event - report event corresponding to given scancode
262 * @dev: Input device using sparse keymap
264 * @value: Value that should be reported (ignored by %KE_SW entries)
269 * This function is used to perform lookup in an input device using sparse
274 unsigned int value, bool autorelease) in sparse_keymap_report_event() argument
281 sparse_keymap_report_entry(dev, ke, value, autorelease); in sparse_keymap_report_event()
289 sparse_keymap_report_entry(dev, &unknown_ke, value, true); in sparse_keymap_report_event()