荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: bstone (Live my life!), 信区: Linux
标 题: holly大虾的内核分析报告(一)
发信站: BBS 荔园晨风站 (Sat Jan 22 08:52:40 2000), 站内信件
发信人: stable (xixi), 信区: FreeBSD
标 题: holly大虾的内核分析报告(一)
发信站: BBS 水木清华站 (Fri Jan 21 21:42:16 2000)
These codes defined in <machine/console.h>
----------------------------------------------------------------------------
--
#define KDGKBMODE _IOR('K', 6, int)
#define KDSKBMODE _IO('K', 7 /*, int */)
Get / Set keyboard mode:
Param: int * / int keyboard mode
Value: K_RAW - return scancodes...
K_XLATE - return the ascii values converted via keymaps
K_CODE - return keycodes...
----------------------------------------------------------------------------
--
#define KDMKTONE _IO('K', 8 /*, int */)
Create sounds:
Param: int. the high 16bit is the time (ms),
the low 16bit is the hz
== 0 default time/hz
----------------------------------------------------------------------------
--
--
#define KDGETMODE _IOR('K', 9, int)
#define KDSETMODE _IO('K', 10 /*, int */)
Get/Set mode:
Param: int * mode / int mode
Value: KD_TEXT - Set console mode to Text mode and restore font
s
KD_TEXT0 == KD_TEXT
KD_TEXT1 - Set console mode to Text mode and not restore
font
KD_GRAPHICS - Set console to graphics mode
KD_PIXEL - Set console to pixel mode
Comments: KD_TEXTx must be called after actually text video modes s
etting ioctl() called. i.e SW_TEXT_xxxx, SW_VGA_xxx, etc.
KD_GRAPHICS must be called after actually graphics mode s
etting ioctl() called, i.e. SW_CG640x480, etc.
KD_PIXEL has the same limitation as KD_GRAPHICS
----------------------------------------------------------------------------
---
#define KDSBORDER _IO('K', 13 /*, int */)
Set border color to int
Param: int color (color is the normal definition: BRGBIRGB)
----------------------------------------------------------------------------
----------------------------------------------------------------------------
---
#define KDGKBSTATE _IOR('K', 19, int)
#define KDSKBSTATE _IO('K', 20 /*, int */)
Set keyboard lock state - the xxxx Lock key states
Param: int * / int
Value: only LOCK_MASK bitmask permitted
LOCK_MASK == (CLKED | NLKED | SLKED | ALKED)
CLKED : Caps Lock
NLKED : NumLock
SLKED : Scroll Lock
ALKED : AltGr - not in PC keyboard
----------------------------------------------------------------------------
---
#define KDENABIO _IO('K', 60)
#define KDDISABIO _IO('K', 61)
Enable Processor IO operations!
No Params. via Setting/Clear PSL_IOPL bit in MSW
----------------------------------------------------------------------------
---
#define KIOCSOUND _IO('K', 63 /*, int */)
Start / Stop tone
Param: int *
Param: int *
Value: != 0 start sound with hz
== 0 stop sound
----------------------------------------------------------------------------
---
#define KDGKBTYPE _IOR('K', 64, int)
Get Keyboard type:
Param: int *
Value: KB_84, KB_101, KB_OTHER
----------------------------------------------------------------------------
---
#define KDGETLED _IOR('K', 65, int)
#define KDSETLED _IO('K', 66 /*, int */)
Get / Set the LED State
Param: int * / int
Value: LED_MASK only
LED_MASK == (LED_CAP | LED_NUM | LED_SCR)
----------------------------------------------------------------------------
---
#define KDSETRAD _IO('K', 67 /*, int */) /* obsolete */
Old method to set repeat rates
Param: int
Value: high 3 bit: delay == 0 : 250ms, == 1: 500ms
Param: int *
Value: != 0 start sound with hz
== 0 stop sound
----------------------------------------------------------------------------
---
#define KDGKBTYPE _IOR('K', 64, int)
Get Keyboard type:
Param: int *
Value: KB_84, KB_101, KB_OTHER
----------------------------------------------------------------------------
---
#define KDGETLED _IOR('K', 65, int)
#define KDSETLED _IO('K', 66 /*, int */)
Get / Set the LED State
Param: int * / int
Value: LED_MASK only
LED_MASK == (LED_CAP | LED_NUM | LED_SCR)
----------------------------------------------------------------------------
---
#define KDSETRAD _IO('K', 67 /*, int */) /* obsolete */
Old method to set repeat rates
Param: int
Value: high 3 bit: delay == 0 : 250ms, == 1: 500ms
Param: int *
Value: != 0 start sound with hz
== 0 stop sound
----------------------------------------------------------------------------
---
#define KDGKBTYPE _IOR('K', 64, int)
Get Keyboard type:
Param: int *
Value: KB_84, KB_101, KB_OTHER
----------------------------------------------------------------------------
---
#define KDGETLED _IOR('K', 65, int)
#define KDSETLED _IO('K', 66 /*, int */)
Get / Set the LED State
Param: int * / int
Value: LED_MASK only
LED_MASK == (LED_CAP | LED_NUM | LED_SCR)
----------------------------------------------------------------------------
---
#define KDSETRAD _IO('K', 67 /*, int */) /* obsolete */
Old method to set repeat rates
Param: int
Value: high 3 bit: delay == 0 : 250ms, == 1: 500ms
character!
scrmap_t == char [256];
default is 0 - 0, 1 - 1,.. 255 - 255. without translations
----------------------------------------------------------------------------
---
#define GIO_KEYMAP _IOR('k', 6, keymap_t)
#define PIO_KEYMAP _IOW('k', 7, keymap_t)
Get / Set keyboard translation table... It's input translation table
keymap_t == struct keymap
struct keymap {
u_short n_keys;
struct keyent_t key[NUM_KEYS];
};
n_keys == number of keys in this map. The maximum number is NUM_KEYS
defined in console.h
key[] is the array for every key in keymap.
the keys ordered by their scancode, i.e. the 1st key in map has the
scancode 0, and so on....
struct keyent_t {
u_char map[NUM_STATES];
u_char spcl;
u_char flgs;
u_char flgs;
};
every key has NUM_STATES (8) states. The mapped value in state i is
stored in map[i].
The 8 States:
base: The normal state.
shift: shift pressed
cntrl: control pressed
cntrl shift: control+shift pressed
alt: alt pressed
alt shift: alt+shift pressed
alt control: alt+control pressed
alt control shift: alt+control+shift pressed
There is no symbol definition in console.h about these 8 states
The translated key value should be the value of map[state] normally.
The 8 bit of spcl fields represents the special case under every 8 st
ates. The order is from left to right, i.e. special bit value of state i is
(0x80 >>i)
if special bit is set, and the key value (i.e. map[i]) equals to the
one of values below:
NOP, LSH, RSH, CLK, NLK, SLK, BTAB, LALT, LCTR, NEXT, RCTR, RALT,
RALT, ALK, ASH, META, RBT, DBG, SUSP, SPSC. These values defined i
n this file below.
if special bit is set, and the key value (i.e. map[i]) equals to the
then it has the meaning of these symbol implicted.
Others, if special bit is set, and the key value is in the area betwe
en F_FN and L_FN (including), this represents a function key value. if speci
al bit is set and key value is in the area between F_SCR and L_SCR (includin
g), this represents a screen key value. if .... between F_ACC and L_ACC, thi
s represents a accent key value ( These Value defined below, too. from DGRA
to DCRA )
The flgs field indicated the Flag LOCK States....I don't know much ab
out what these LOCK states are till now...Anyone could tell me? Defined LOCK
States listed below:
#define FLAG_LOCK_O 0
#define FLAG_LOCK_C 1
#define FLAG_LOCK_N 2
#define FLAG_LOCK_B 3 // This doesn't occur in console.h but be
found in kbdcontrol.c
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: ox2.ios.ac.cn]
--
☆ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: bbs@192.168.28.28]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店