~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/input/notifier.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php