C语言中键盘扫描码如何使用?
2008-11-14 16:21
就是利用bioskey()得到的值。
参数为0时,bioskey()的返回值如果低八位非0,表示按下了普通键;如果低八位为0,表示按下了功能键。
参数为1时,检测有没有键被按下,如果返回值为0,表示没有键按下,相反有键按下。
参数为2时,表示获取变换键的状态,哪些是变换键呢?变换键包括双态键和控制键,双态键就是num lock、scroll lock、insert和caps lock,控制键就是左右shift、ctrl和alt,返回值的低八位反映了这些变换键的状态:
0x01 右边shift
0x02 左边shift
0x04 ctrl键
0x08 alt键
0x10 scroll lock打开
0x20 num lock打开
0x40 caps lock打开
0x80 insert打开
其实bioskey直接调用bios的int 16h键盘I/O中断,直接就是int 16h的完整翻版。
键盘扫描码大全
对程序进行键盘控制时,往往要用到一些键的扫描码,以前每次用时都得先扫下试试,实在麻烦,今天又搞了个小程序,用
到了扫描码,索性整了个测试程序,把所有键的扫描码全存入一个文件啦,以便以后编程时使用.在此跟大家分享一下,虽
然得来非常容易,但至少可以免得大家都像我以前那样用时再查
扫描码 键
0x011b ESC
0x3b00 F1
0x3c00 F2
0x3d00 F3
0x3e00 F4
0x3f00 F5
0x4000 F6
0x4100 F7
0x4200 F8
0x4300 F9
0x4400 F10
主键盘区:
0x2960 ~
0x0231 1
0x0332 2
0x0433 3
0x0534 4
0x0635 5
0x0736 6
0x0837 7
0x0938 8
0x0a39 9
0x0b30 0
0x0c2d -
0x0d3d =
0x2b5c \
0x0e08 退格键
0x0f09 Tab
0x1071 q
0x1177 w
0x1265 e
0x1372 r
0x1474 t
0x1579 y
0x1675 u
0x1769 i
0x186f o
0x1970 p
0x1a5b [
0x1b5d ]
0x1e61 a
0x1f73 s
0x2064 d
0x2166 f
0x2267 g
0x2368 h
0x246a j
0x256b k
0x266c l
0x273b ;
0x2827 '
0x1c0d 回车
0x2c7a z
0x2d78 x
0x2e63 c
0x2f76 v
0x3062 b
0x316e n
0x326d m
0x332c ,
0x342e .
0x352f /
0x3920 空格键
右边数字键盘:
0x5200 Insert
0x4700 Home
0x4900 Page UP
0x5300 Delete
0x4f00 End
0x5100 PageDown
0x4800 上箭头
0x4b00 左箭头
0x5000 下箭头
0x4d00 右箭头
0x352f /
0x372a *
0x4a2d - (注意,这是数字键盘的)
0x4737 7
0x4838 8
0x4939 9
0x4b34 4
0x4c35 5
0x4d36 6
0x4e2b +
0x4f31 1
0x5032 2
0x5133 3
0x5230 0
0x532e Del
Ctrl+字母: 在字母扫描码的基础上减去0x0060
alt+字母: 在字母的基础上,把最后两位变成00
shift+字母: 在字母的基础上减去0x0020
比如: a----0x1e61 Ctrl+a----0x1e01 Alt+a-----0x1e00
b----0x3062 Ctrl+b----0x3002 Alt+b-----0x3000
另加: Ctrl+Enter: 0x1c0a
可以直接用一个程序查看的 很简单的
#include
#include
void main(void)
{
int key, modifiers;
while ((key=bioskey(0)) != 0 && key!=0x11b){
printf("0x%x \n",key);
}
}
*********************************************************************************************
上面列出的编码中,前面两位是“扫描码”,后面两位是ASCII码,合起来是所谓的“键盘码”
比如,小键盘的数字键扫描码和大键盘的数字键是不同的,而后两位是一样的,因为那个是它们共用的ASCII码
下面就是扫描码的列表
Keyboard Scan Codes (Numerical Order)
---------------+---------------+---------------+---------------+---------------
HEX DEC keys |HEX DEC keys |HEX DEC keys |HEX DEC keys |HEX DEC keys
---------------+---------------+---------------+---------------+---------------
|10 16 Q |20 32 D |30 48 B |40 64 F6
01 1 ESC |11 17 W |21 33 F |31 49 N |41 65 F7
02 2 1 |12 18 E |22 34 G |32 50 M |42 66 F8
03 3 2 |13 19 R |23 35 H |33 51 , |43 67 F9
04 4 3 |14 20 T |24 36 J |34 52 . |44 68 F10
05 5 4 |15 21 Y |25 37 K |35 53 / |45 69 Num
06 6 5 |16 22 U |26 38 L |36 54 R Shift|46 70 Scroll
07 7 6 |17 23 I |27 39 ; |37 55 PrtSc |47 71 Home
08 8 7 |18 24 O |28 40 ' |38 56 Alt |48 72 Up
09 9 8 |19 25 P |29 41 ` |39 57 Space |49 73 PgUp
0A 10 9 |1A 26 [ |2A 42 L Shift|3A 58 Caps |4A 74 -
0B 11 0 |1B 27 ] |2B 43 \ |3B 59 F1 |4B 75 Left
0C 12 - |1C 28 |2C 44 Z |3C 60 F2 |4C 76 Center
0D 13 = |1D 29 CTRL |2D 45 X |3D 61 F3 |4D 77 Right
0E 14 bs |1E 30 A |2E 46 C |3E 62 F4 |4E 78 +
0F 15 Tab |1F 31 S |2F 47 V |3F 63 F5 |4F 79 End
---------------+---------------+---------------+---------------+---------------
50 80 Down | | | |
51 81 PgDn | | | |
52 82 Ins | | | |
53 83 Del | | | |
---------------+---------------+---------------+---------------+---------------
Keyboard Scan Codes (Read from Port HEX 60 = DEC 96) (Keyboard Layout)
Top number ... DEC
Bottom number ... HEX
+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+-------+
|F1|F2|ESC| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BkS|Num Lok|Scr Lok|
| | | | | | | | | | | | | | | | | | |
|59|60| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |10 |11 |12 |13 |14 | 69 | 70 |
|3B|3C|01 |02 |03 |04 |05 |06 |07 |08 |09 |0A |0B |0C |0D |0E | 45 | 46 |
+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+-------+
|F3|F4|TAB| Q | W | E | R | T | Y | U | I | O | P | [ | ] | | 7 3 8 | 9 3 - |
| | | | | | | | | | | | | | | | | 3 | 3 |
|61|62|15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 | |71 372 |73 374 |
|3D|3E|0F |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B | |47 348 |49 34A |
+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+-------+
|F5|F6|CTR| A | S | D | F | G | H | J | K | L | ; | ' | ` |28 | 4 3 5 | 6 3 |
| | | | | | | | | | | | | | | | | 3 | 3 |
|63|64|29 |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |40 |41 | |75 376 |77 3 |
|3F|40|1D |1E |1F |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 | |4B 34C |4D 3 |
+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+-------+
|F7|F8|Shf| \ | Z | X | C | V | B | N | M | , | . | / |Shf|Prt| 1 3 2 | 3 3 + |
| | | | | | | | | | | | | | | | | 3 | 3 |
|65|66|42 |43 |44 |45 |46 |47 |48 |49 |50 |51 |52 |53 |54 |55 |78 380 |81 378 |
|41|42|2A |2B |2C |2D |2E |2F |30 |31 |32 |33 |34 |35 |36 |37 |4F 350 |51 34E |
+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+-------+
|F9|F0| A|t | | | | |pac| | | | |Cap|Lok| I|s 3 D|l 3 |
| | | | | | | | | | | | | | | | | 3 | 3 |
|67|68| 5| | | | | |57 | | | | | 5| | 8| 3 8| 3 |
|43|44| 3| | | | | |39 | | | | | 3| | 5| 3 5| 3 |
+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+-------+
Extended ASCII Special Key Codes (Numerical Order)
... composed of 2 bytes, the 2nd byte being 00 (00 signifies that the special codes are to be applied.)
HEX DEC keys
-------------------------------
03 3 CTRL-2; same as CHR$(0)
0F 15 Shift-tab
10 16 Alt-Q
11 17 Alt-W
12 18 Alt-E
13 19 Alt-R
14 20 Alt-T
15 21 Alt-Y
16 22 Alt-U
17 23 Alt-I
18 24 Alt-O
19 25 Alt-P
1E 30 Alt-A
1F 31 Alt-S
20 32 Alt-D
21 33 Alt-F
22 34 Alt-G
23 35 Alt-H
24 36 Alt-J
25 37 Alt-K
26 38 Alt-L
2C 44 Alt-Z
2D 45 Alt-X
2E 46 Alt-C
2F 47 Alt-V
30 48 Alt-B
31 49 Alt-N
32 50 Alt-M
3B 59 F1
3C 60 F2
3D 61 F3
3E 62 F4
3F 63 F5
40 64 F6
41 65 F7
42 66 F8
43 67 F9
44 68 F10
47 71 Home
48 72 Up
49 73 PgUp
4B 75 Left
4D 77 Right
4F 79 End
50 80 Down
51 81 PgDn
52 82 Ins
53 83 Del
54 84 Shift-F1
55 85 Shift-F2
56 86 Shift-F3
57 87 Shift-F4
58 88 Shift-F5
59 89 Shift-F6
5A 90 Shift-F7
5B 91 Shift-F8
5C 92 Shift-F9
5D 93 Shift-F10
5E 94 Ctrl-F1
5F 95 Ctrl-F2
60 96 Ctrl-F3
61 97 Ctrl-F4
62 98 Ctrl-F5
63 99 Ctrl-F6
64 100 Ctrl-F7
65 101 Ctrl-F8
66 102 Ctrl-F9
67 103 Ctrl-F10
68 104 Alt-F1
69 105 Alt-F2
6A 106 Alt-F3
6B 107 Alt-F4
6C 108 Alt-F5
6D 109 Alt-F6
6E 110 Alt-F7
6F 111 Alt-F8
70 112 Alt-F9
71 113 Alt-F10
72 114 Ctrl-PrtSc
73 115 Ctrl-Left
74 116 Ctrl-Right
75 117 Ctrl-End
76 118 Ctrl-PgDn
77 119 Ctrl-Home
78 120 Alt-1
79 121 Alt-2
7A 122 Alt-3
7B 123 Alt-4
7C 124 Alt-5
7D 125 Alt-6
7E 126 Alt-7
7F 127 Alt-8
80 128 Alt-9
81 129 Alt-0
82 130 Alt--
83 131 Alt-=
84 132 Ctrl-PgUp
85 133 Ctrl-Up
86 134 Ctrl--(num)
87 135 Ctrl-Center
88 136 Ctrl-+(num)
89 137 Ctrl-Down
8A 138 Ctrl-Ins
8B 139 Ctrl-Del
8C 140 Alt-Home
8D 141 Alt-Up
8E 142 Alt-PgUp
8F 143 Alt--(num)
90 144 Alt-Left
91 145 Alt-Center
92 146 Alt-Right
93 147 Alt-+(num)
94 148 Alt-End
95 149 Alt-Down
96 150 Alt-PgDn
97 151 Alt-Ins
98 152 Alt-Del
Extended ASCII Special Key Codes (Keyboard Layout)
------------------+-------------------+-------------------+--------------------
HEX DEC keys | HEX DEC keys | HEX DEC keys | HEX DEC keys
------------------+-------------------+-------------------+--------------------
03 3 nul | 0F 15 Shift-tab | 72 114 Ctrl-PrtSc|
------------------+-------------------+-------------------+--------------------
47 71 Home | | 77 119 Ctrl-Home | 8C 140 Alt-Home
48 72 Up | | 85 133 Ctrl-Up | 8D 141 Alt-Up
49 73 PgUp | | 84 132 Ctrl-PgUp | 8E 142 Alt-PgUp
4A 74 -(num) | | 86 134 Ctrl--(nu)| 8F 143 Alt--(num)
4B 75 Left | | 73 115 Ctrl-Left | 90 144 Alt-Left
4C 76 Center | | 87 135 Ctrl-Centr| 91 145 Alt-Center
4D 77 Right | | 74 116 Ctrl-Right| 92 146 Alt-Right
4E 78 +(num) | | 88 136 Ctrl-+(nu)| 93 147 Alt-+(num)
4F 79 End | | 75 117 Ctrl-End | 94 148 Alt-End
50 80 Down | | 89 137 Ctrl-Down | 95 149 Alt-Down
51 81 PgDn | | 76 118 Ctrl-PgDn | 96 150 Alt-PgDn
52 82 Ins | | 8A 138 Ctrl-Ins | 97 151 Alt-Ins
53 83 Del | | 8B 139 Ctrl-Del | 98 152 Alt-Del
------------------+-------------------+-------------------+--------------------
3B 59 F1 | 54 84 Shift-F1 | 5E 94 Ctrl-F1 | 68 104 Alt-F1
3C 60 F2 | 55 85 Shift-F2 | 5F 95 Ctrl-F2 | 69 105 Alt-F2
3D 61 F3 | 56 86 Shift-F3 | 60 96 Ctrl-F3 | 6A 106 Alt-F3
3E 62 F4 | 57 87 Shift-F4 | 61 97 Ctrl-F4 | 6B 107 Alt-F4
3F 63 F5 | 58 88 Shift-F5 | 62 98 Ctrl-F5 | 6C 108 Alt-F5
40 64 F6 | 59 89 Shift-F6 | 63 99 Ctrl-F6 | 6D 109 Alt-F6
41 65 F7 | 5A 90 Shift-F7 | 64 100 Ctrl-F7 | 6E 110 Alt-F7
42 66 F8 | 5B 91 Shift-F8 | 65 101 Ctrl-F8 | 6F 111 Alt-F8
43 67 F9 | 5C 92 Shift-F9 | 66 102 Ctrl-F9 | 70 112 Alt-F9
44 68 F10 | 5D 93 Shift-F10 | 67 103 Ctrl-F10 | 71 113 Alt-F10
------------------+-------------------+-------------------+--------------------
1E 30 Alt-A | 31 49 Alt-N | 78 120 Alt-1 |
30 48 Alt-B | 18 24 Alt-O | 79 121 Alt-2 |
2E 46 Alt-C | 19 25 Alt-P | 7A 122 Alt-3 |
20 32 Alt-D | 10 16 Alt-Q | 7B 123 Alt-4 |
12 18 Alt-E | 13 19 Alt-R | 7C 124 Alt-5 |
21 33 Alt-F | 1F 31 Alt-S | 7D 125 Alt-6 |
22 34 Alt-G | 14 20 Alt-T | 7E 126 Alt-7 |
23 35 Alt-H | 16 22 Alt-U | 7F 127 Alt-8 |
17 23 Alt-I | 2F 47 Alt-V | 80 128 Alt-9 |
24 36 Alt-J | 11 17 Alt-W | 81 129 Alt-0 |
25 37 Alt-K | 2D 45 Alt-X | 82 130 Alt-- |
26 38 Alt-L | 15 21 Alt-Y | 83 131 Alt-= |
32 50 Alt-M | 2C 44 Alt-Z | |
------------------+-------------------+-------------------+--------------------