LCOV - code coverage report
Current view: top level - include/linux - kbd_kern.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 5 25 20.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _KBD_KERN_H
       3             : #define _KBD_KERN_H
       4             : 
       5             : #include <linux/tty.h>
       6             : #include <linux/interrupt.h>
       7             : #include <linux/keyboard.h>
       8             : 
       9             : extern char *func_table[MAX_NR_FUNC];
      10             : 
      11             : /*
      12             :  * kbd->xxx contains the VC-local things (flag settings etc..)
      13             :  *
      14             :  * Note: externally visible are LED_SCR, LED_NUM, LED_CAP defined in kd.h
      15             :  *       The code in KDGETLED / KDSETLED depends on the internal and
      16             :  *       external order being the same.
      17             :  *
      18             :  * Note: lockstate is used as index in the array key_map.
      19             :  */
      20             : struct kbd_struct {
      21             : 
      22             :         unsigned char lockstate;
      23             : /* 8 modifiers - the names do not have any meaning at all;
      24             :    they can be associated to arbitrarily chosen keys */
      25             : #define VC_SHIFTLOCK    KG_SHIFT        /* shift lock mode */
      26             : #define VC_ALTGRLOCK    KG_ALTGR        /* altgr lock mode */
      27             : #define VC_CTRLLOCK     KG_CTRL         /* control lock mode */
      28             : #define VC_ALTLOCK      KG_ALT          /* alt lock mode */
      29             : #define VC_SHIFTLLOCK   KG_SHIFTL       /* shiftl lock mode */
      30             : #define VC_SHIFTRLOCK   KG_SHIFTR       /* shiftr lock mode */
      31             : #define VC_CTRLLLOCK    KG_CTRLL        /* ctrll lock mode */
      32             : #define VC_CTRLRLOCK    KG_CTRLR        /* ctrlr lock mode */
      33             :         unsigned char slockstate;       /* for `sticky' Shift, Ctrl, etc. */
      34             : 
      35             :         unsigned char ledmode:1;
      36             : #define LED_SHOW_FLAGS 0        /* traditional state */
      37             : #define LED_SHOW_IOCTL 1        /* only change leds upon ioctl */
      38             : 
      39             :         unsigned char ledflagstate:4;   /* flags, not lights */
      40             :         unsigned char default_ledflagstate:4;
      41             : #define VC_SCROLLOCK    0       /* scroll-lock mode */
      42             : #define VC_NUMLOCK      1       /* numeric lock mode */
      43             : #define VC_CAPSLOCK     2       /* capslock mode */
      44             : #define VC_KANALOCK     3       /* kanalock mode */
      45             : 
      46             :         unsigned char kbdmode:3;        /* one 3-bit value */
      47             : #define VC_XLATE        0       /* translate keycodes using keymap */
      48             : #define VC_MEDIUMRAW    1       /* medium raw (keycode) mode */
      49             : #define VC_RAW          2       /* raw (scancode) mode */
      50             : #define VC_UNICODE      3       /* Unicode mode */
      51             : #define VC_OFF          4       /* disabled mode */
      52             : 
      53             :         unsigned char modeflags:5;
      54             : #define VC_APPLIC       0       /* application key mode */
      55             : #define VC_CKMODE       1       /* cursor key mode */
      56             : #define VC_REPEAT       2       /* keyboard repeat */
      57             : #define VC_CRLF         3       /* 0 - enter sends CR, 1 - enter sends CRLF */
      58             : #define VC_META         4       /* 0 - meta, 1 - meta=prefix with ESC */
      59             : };
      60             : 
      61             : extern int kbd_init(void);
      62             : 
      63             : extern void setledstate(struct kbd_struct *kbd, unsigned int led);
      64             : 
      65             : extern int do_poke_blanked_console;
      66             : 
      67             : extern void (*kbd_ledfunc)(unsigned int led);
      68             : 
      69             : extern int set_console(int nr);
      70             : extern void schedule_console_callback(void);
      71             : 
      72           3 : static inline int vc_kbd_mode(struct kbd_struct * kbd, int flag)
      73             : {
      74           0 :         return ((kbd->modeflags >> flag) & 1);
      75             : }
      76             : 
      77           0 : static inline int vc_kbd_led(struct kbd_struct * kbd, int flag)
      78             : {
      79           0 :         return ((kbd->ledflagstate >> flag) & 1);
      80             : }
      81             : 
      82           6 : static inline void set_vc_kbd_mode(struct kbd_struct * kbd, int flag)
      83             : {
      84           6 :         kbd->modeflags |= 1 << flag;
      85           0 : }
      86             : 
      87           0 : static inline void set_vc_kbd_led(struct kbd_struct * kbd, int flag)
      88             : {
      89           0 :         kbd->ledflagstate |= 1 << flag;
      90           0 : }
      91             : 
      92           6 : static inline void clr_vc_kbd_mode(struct kbd_struct * kbd, int flag)
      93             : {
      94           6 :         kbd->modeflags &= ~(1 << flag);
      95           0 : }
      96             : 
      97           0 : static inline void clr_vc_kbd_led(struct kbd_struct * kbd, int flag)
      98             : {
      99           0 :         kbd->ledflagstate &= ~(1 << flag);
     100           0 : }
     101             : 
     102           0 : static inline void chg_vc_kbd_lock(struct kbd_struct * kbd, int flag)
     103             : {
     104           0 :         kbd->lockstate ^= 1 << flag;
     105           0 : }
     106             : 
     107           0 : static inline void chg_vc_kbd_slock(struct kbd_struct * kbd, int flag)
     108             : {
     109           0 :         kbd->slockstate ^= 1 << flag;
     110           0 : }
     111             : 
     112             : static inline void chg_vc_kbd_mode(struct kbd_struct * kbd, int flag)
     113             : {
     114             :         kbd->modeflags ^= 1 << flag;
     115             : }
     116             : 
     117           0 : static inline void chg_vc_kbd_led(struct kbd_struct * kbd, int flag)
     118             : {
     119           0 :         kbd->ledflagstate ^= 1 << flag;
     120           0 : }
     121             : 
     122             : #define U(x) ((x) ^ 0xf000)
     123             : 
     124             : #define BRL_UC_ROW 0x2800
     125             : 
     126             : /* keyboard.c */
     127             : 
     128             : struct console;
     129             : 
     130             : void vt_set_leds_compute_shiftstate(void);
     131             : 
     132             : /* defkeymap.c */
     133             : 
     134             : extern unsigned int keymap_count;
     135             : 
     136             : #endif

Generated by: LCOV version 1.14