0001
0002 #ifndef _KBD_KERN_H
0003 #define _KBD_KERN_H
0004
0005 #include <linux/tty.h>
0006 #include <linux/interrupt.h>
0007 #include <linux/keyboard.h>
0008
0009 extern char *func_table[MAX_NR_FUNC];
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 struct kbd_struct {
0021
0022 unsigned char lockstate;
0023
0024
0025 #define VC_SHIFTLOCK KG_SHIFT
0026 #define VC_ALTGRLOCK KG_ALTGR
0027 #define VC_CTRLLOCK KG_CTRL
0028 #define VC_ALTLOCK KG_ALT
0029 #define VC_SHIFTLLOCK KG_SHIFTL
0030 #define VC_SHIFTRLOCK KG_SHIFTR
0031 #define VC_CTRLLLOCK KG_CTRLL
0032 #define VC_CTRLRLOCK KG_CTRLR
0033 unsigned char slockstate;
0034
0035 unsigned char ledmode:1;
0036 #define LED_SHOW_FLAGS 0
0037 #define LED_SHOW_IOCTL 1
0038
0039 unsigned char ledflagstate:4;
0040 unsigned char default_ledflagstate:4;
0041 #define VC_SCROLLOCK 0
0042 #define VC_NUMLOCK 1
0043 #define VC_CAPSLOCK 2
0044 #define VC_KANALOCK 3
0045
0046 unsigned char kbdmode:3;
0047 #define VC_XLATE 0
0048 #define VC_MEDIUMRAW 1
0049 #define VC_RAW 2
0050 #define VC_UNICODE 3
0051 #define VC_OFF 4
0052
0053 unsigned char modeflags:5;
0054 #define VC_APPLIC 0
0055 #define VC_CKMODE 1
0056 #define VC_REPEAT 2
0057 #define VC_CRLF 3
0058 #define VC_META 4
0059 };
0060
0061 extern int kbd_init(void);
0062
0063 extern void setledstate(struct kbd_struct *kbd, unsigned int led);
0064
0065 extern int do_poke_blanked_console;
0066
0067 extern void (*kbd_ledfunc)(unsigned int led);
0068
0069 extern int set_console(int nr);
0070 extern void schedule_console_callback(void);
0071
0072 static inline int vc_kbd_mode(struct kbd_struct * kbd, int flag)
0073 {
0074 return ((kbd->modeflags >> flag) & 1);
0075 }
0076
0077 static inline int vc_kbd_led(struct kbd_struct * kbd, int flag)
0078 {
0079 return ((kbd->ledflagstate >> flag) & 1);
0080 }
0081
0082 static inline void set_vc_kbd_mode(struct kbd_struct * kbd, int flag)
0083 {
0084 kbd->modeflags |= 1 << flag;
0085 }
0086
0087 static inline void set_vc_kbd_led(struct kbd_struct * kbd, int flag)
0088 {
0089 kbd->ledflagstate |= 1 << flag;
0090 }
0091
0092 static inline void clr_vc_kbd_mode(struct kbd_struct * kbd, int flag)
0093 {
0094 kbd->modeflags &= ~(1 << flag);
0095 }
0096
0097 static inline void clr_vc_kbd_led(struct kbd_struct * kbd, int flag)
0098 {
0099 kbd->ledflagstate &= ~(1 << flag);
0100 }
0101
0102 static inline void chg_vc_kbd_lock(struct kbd_struct * kbd, int flag)
0103 {
0104 kbd->lockstate ^= 1 << flag;
0105 }
0106
0107 static inline void chg_vc_kbd_slock(struct kbd_struct * kbd, int flag)
0108 {
0109 kbd->slockstate ^= 1 << flag;
0110 }
0111
0112 static inline void chg_vc_kbd_mode(struct kbd_struct * kbd, int flag)
0113 {
0114 kbd->modeflags ^= 1 << flag;
0115 }
0116
0117 static inline void chg_vc_kbd_led(struct kbd_struct * kbd, int flag)
0118 {
0119 kbd->ledflagstate ^= 1 << flag;
0120 }
0121
0122 #define U(x) ((x) ^ 0xf000)
0123
0124 #define BRL_UC_ROW 0x2800
0125
0126
0127
0128 struct console;
0129
0130 void vt_set_leds_compute_shiftstate(void);
0131
0132
0133
0134 extern unsigned int keymap_count;
0135
0136 #endif