home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.2 / LINUX-1.2 / LINUX-1 / linux / drivers / char / kbd_kern.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-15  |  3.3 KB  |  122 lines

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