About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / input / notifier.txt




Custom Search

Based on kernel version 3.16. Page generated on 2014-08-06 21:40 EST.

1	Keyboard notifier
2	
3	One can use register_keyboard_notifier to get called back on keyboard
4	events (see kbd_keycode() function for details).  The passed structure is
5	keyboard_notifier_param:
6	
7	- 'vc' always provide the VC for which the keyboard event applies;
8	- 'down' is 1 for a key press event, 0 for a key release;
9	- 'shift' is the current modifier state, mask bit indexes are KG_*;
10	- 'value' depends on the type of event.
11	
12	- KBD_KEYCODE events are always sent before other events, value is the keycode.
13	- KBD_UNBOUND_KEYCODE events are sent if the keycode is not bound to a keysym.
14	  value is the keycode.
15	- KBD_UNICODE events are sent if the keycode -> keysym translation produced a
16	  unicode character. value is the unicode value.
17	- KBD_KEYSYM events are sent if the keycode -> keysym translation produced a
18	  non-unicode character. value is the keysym.
19	- KBD_POST_KEYSYM events are sent after the treatment of non-unicode keysyms.
20	  That permits one to inspect the resulting LEDs for instance.
21	
22	For each kind of event but the last, the callback may return NOTIFY_STOP in
23	order to "eat" the event: the notify loop is stopped and the keyboard event is
24	dropped.
25	
26	In a rough C snippet, we have:
27	
28	kbd_keycode(keycode) {
29		...
30		params.value = keycode;
31		if (notifier_call_chain(KBD_KEYCODE,&params) == NOTIFY_STOP)
32		    || !bound) {
33			notifier_call_chain(KBD_UNBOUND_KEYCODE,&params);
34			return;
35		}
36	
37		if (unicode) {
38			param.value = unicode;
39			if (notifier_call_chain(KBD_UNICODE,&params) == NOTIFY_STOP)
40				return;
41			emit unicode;
42			return;
43		}
44	
45		params.value = keysym;
46		if (notifier_call_chain(KBD_KEYSYM,&params) == NOTIFY_STOP)
47			return;
48		apply keysym;
49		notifier_call_chain(KBD_POST_KEYSYM,&params);
50	}
51	
52	NOTE: This notifier is usually called from interrupt context.
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.