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