📄 ps2.c
字号:
else if ((ps2KeyCnt == 2) &&
((ps2KeyBuf[0] == 0xE0) || (ps2KeyBuf[0] == 0xE1)) &&
(makeOrBreak == 0))
{
key = ps2KeyBuf[0] * 0x100 + ps2KeyBuf[1];
// if (key == feedKeyCode) // 走纸键.
// {
// keyFeedFlag = 1;
// }
if (makeOrBreak == 1) // 弹起时取键值.
{
if (lastKey == key)
{
lastKey = 0;
}
key = 0;
}
}
else if ((ps2KeyCnt == 2) && (ps2KeyBuf[0] == 0xF0))
{
key = ps2KeyBuf[1];
// if (key == feedKeyCode)
// {
// keyFeedFlag = 0;
// }
if (makeOrBreak == 0) // 弹起时清标志.
{
if (lastKey == key)
{
lastKey = 0;
}
key = 0;
}
}
else if ((ps2KeyCnt == 3) &&
((ps2KeyBuf[0] == 0xE0) || (ps2KeyBuf[0] == 0xE1)) &&
(ps2KeyBuf[1] == 0xF0))
{
key = ps2KeyBuf[0] * 0x100 + ps2KeyBuf[2];
// if (key == feedKeyCode)
// {
// keyFeedFlag = 0;
// }
if (makeOrBreak == 0) // 弹起时清标志.
{
if (lastKey == key)
{
lastKey = 0;
}
key = 0;
}
}
else
{
key = 0;
}
keyFeedFlag = 0;
if ((key != 0) && (key != lastKey)) // 屏蔽连发键.
{
lastKey = key;
if ((key == CRTL_KEY) || (key == ALT_KEY) || (key == SHIFT_KEY))
{
combKey = key * 0x100; // 组合键处理.
}
else
{
if (combKey != 0)
{
if (key < 0x100)
{
key += combKey; // POS键盘组合键.
}
}
for (i=0; i<MAX_FEED_KEY; i++) // 走纸键处理.
{
if (key == feedKeyCode[i])
{
keyFeedFlag = 1;
break;
}
}
// 第二次解析按键: 加入组合键解析.
if (PS2_TransScanCode(&scanCode, &key) == OK)
{
PS2_InsKey(scanCode);
}
combKey = 0;
}
}
}
ps2KeyCnt = 0;
break;
}
return OK;
}
///////////////////////////////////////////////////////////////////////////////
// Descript: Translate PS2 keyboard Scancode to WD1 keyCode.
// In Param: const word *key --- POS键盘送回的键值.
// Out Param: byte *scanCode --- 返回的扫描码.
// Return: OK / NG
///////////////////////////////////////////////////////////////////////////////
byte PS2_TransScanCode(byte *scanCode, const word *key)
{
byte i;
for (i=0; i<MAX_EXTEND_KEY; i++)
{
if (defScanCode[i] == *key)
{
*scanCode = 0x80 + i; // 返回扫描码.
return OK;
}
}
return NG;
}
///////////////////////////////////////////////////////////////////////////////
// Descript: 从一个串口(当前POS键盘串口)获取POS键盘扫描码,然后通过另一个串口送至PC. (调试用)
// In Param: void
// Out Param: void
// Return: void
///////////////////////////////////////////////////////////////////////////////
void PS2_GetKBScanCode(void)
{
port0Func = 1; // 中断中不检测POS键盘输入.
PS2_Init(PORT0); // 串口1默认连接POS键盘.
while (1)
{
byte scanCode;
if (Uart_ReadByte(PORT0, &scanCode) == OK) // 将POS键盘的所有输入全部转发.
{
Uart_WriteByte(PORT1, scanCode);
}
if (Key_Poll_Chk()) // 任意键退出.
{
break;
}
}
// 在WD1-PK & WD1-SW 等版本中,串口0默认不接键盘输入,故无需此步.
// 但仍需要恢复原来的串口设置.
// PS2_SetPortFunc(0); // 恢复中断检测POS键盘输入.
}
/*
Key number Set 1 Set 2 Set 3
1 29 0E 0E T
2 02 16 16 T
3 03 1E 1E T
4 04 26 26 T
5 05 25 25 T
6 06 2E 2E T
7 07 36 36 T
8 08 3D 3D T
9 09 3E 3E T
10 0A 46 46 T
11 0B 45 45 T
12 0C 4E 4E T
13 0D 55 55 T
15 0E 66 66 T
16 0F 0D 0D T
17 10 15 15 T
18 11 1D 1D T
19 12 24 24 T
20 13 2D 2D T
21 14 2C 2C T
22 15 35 35 T
23 16 3C 3C T
24 17 43 43 T
25 18 44 44 T
26 19 4D 4D T
27 1A 54 54 T
28 1B 5B 5B T
29 2B 5D 5C T
30 3A 58 14 MB
31 1E 1C 1C T
32 1F 1B 1B T
33 20 23 23 T
34 21 2B 2B T
35 22 34 34 T
36 23 33 33 T
37 24 3B 3B T
38 25 42 42 T
39 26 4B 4B T
40 27 4C 4C T
41 28 52 52 T
42 2B 5D 53 T
43 1C 5A 5A T
44 2A 12 12 MB
45 56 61 13 T
Key number Set 1 Set 2 Set 3
46 2C 1A 1A T
47 2D 22 22 T
48 2E 21 21 T
49 2F 2A 2A T
50 30 32 32 T
51 31 31 31 T
52 32 3A 3A T
53 33 41 41 T
54 34 49 49 T
55 35 4A 4A T
57 36 59 59 MB
58 1D 14 11 MB
59 E0 5B E0 1F 8B MB
60 38 11 19 MB
61 39 29 29 T
62 E0/38 E0/11 39 M
63 E0 5C E0 27 8C MB
64 E0/1D E0/14 58 M
65 E0 5D E0 2F 8D MB
75 see app. 1 67 M
76 see app. 1 64 T
79 see app. 1 61 T
80 see app. 1 6E M
81 see app. 1 65 M
83 see app. 1 63 T
84 see app. 1 60 T
85 see app. 1 6F M
86 see app. 1 6D M
89 see app. 1 6A T
90 45 77 76 M
91 47 6C 6C M
92 4B 6B 6B M
93 4F 69 69 M
95 see app. 1 77 M
96 48 75 75 M
97 4C 73 73 M
98 50 72 72 M
99 52 70 70 M
100 37 7C 7E M
101 49 7D 7D M
102 4D 74 74 M
103 51 7A 7A M
104 53 71 71 M
105 4A 7B 84 M
106 4E 79 7C T
108 E0/1C E0/5A 79 M
110 01 76 08 M
112 3B 05 07 M
113 3C 06 0F M
114 3D 04 17 M
115 3E 0C 1F M
116 3F 03 27 M
117 40 0B 2F M
118 41 83 37 M
119 42 0A 3F M
120 43 01 47 M
121 44 09 4F M
122 57 78 56 M
123 58 07 5E M
124 see app. 1 57 M
125 46 7E 5F M
126 see app. 1 62 M
*/
/* 默认键盘.
1C F0 1C 32 F0 32 21 F0 21 23 F0 23 24 F0 24 2B F0 2B 34 F0 34 33 F0 33 05 F0 05 06 F0 06 E0 70 E0 F0 70 E0 6C E0 F0 6C E0 7D E0 F0 7D 11 16 F0 16 F0 11 E0 75 E0 F0 75 E0 6B E0 F0 6B 43 F0 43 3B F0 3B 42 F0 42 4B F0 4B 3A F0 3A 31 F0 31 44 F0 44 4D F0 4D 04 F0 04 0C F0 0C E0 71 E0 F0 71 E0 69 E0 F0 69 E0 7A E0 F0 7A 11 1E F0 1E F0 11 E0 72 E0 F0 72 E0 74 E0 F0 74 15 F0 15 2D F0 2D 1B F0 1B 2C F0 2C 3C F0 3C 2A F0 2A 1D F0 1D 22 F0 22 03 F0 03 0B F0 0B 14 05 F0 05 F0 14 11 01 F0 01 F0 11 11 09 F0 09 F0 11 11 25 F0 25 F0 11 11 2E F0 2E F0 11 7B F0 7B 35 F0 35 1A F0 1A 29 F0 29 12 16 F0 16 F0 12 12 1E F0 1E F0 12 12 26 F0 26 F0 12 12 26 F0 26 F0 12 12 25 F0 25 F0 12 12 2E F0 2E F0 12 83 F0 83 0A F0 0A 14 06 F0 06 F0 14 66 F0 66 6C F0 6C 75 F0 75 7D F0 7D E0 4A E0 F0 4A E0 4A E0 F0 4A 14 01 F0 01 F0 14 12 3D F0 3D F0 12 12 4C F0 4C F0 12 12 46 F0 46 F0 12 12 45 F0 45 F0 12 5D F0 5D 12 4A F0 4A F0 12 4C F0 4C 01 F0 01 09 F0 09 14 04 F0 04 F0 14 76 F0 76 6B F0 6B 73 F0 73 74 F0 74 79 F0 79 12 49 F0 49 F0 12 41 F0 41 12 4E F0 4E F0 12 0D F0 0D 11 36 F0 36 F0 11 11 3D F0 3D F0 11 11 3E F0 3E F0 11 11 46 F0 46 F0 11 78 F0 78 07 F0 07 14 0C F0 0C F0 14 7C F0 7C 69 F0 69 72 F0 72 7A F0 7A 5A F0 5A 11 05 F0 05 F0 11 11 06 F0 06 F0 11 11 04 F0 04 F0 11 11 0C F0 0C F0 11 11 03 F0 03 F0 11 11 0B F0 0B F0 11 11 83 F0 83 F0 11 11 0A F0 0A F0 11 11 0A F0 0A F0 11 14 83 F0 83 F0 14 14 0B F0 0B F0 14 14 03 F0 03 F0 14 11 45 F0 45 F0 11 70 F0 70 70 F0 70 70 F0 70 F0 70 71 F0 71 5A F0 5A 5A F0 5A
*/
/*
0x80,
0x81,
0x82,
0x83,
0x84,
0x85,
0x86,
0x87,
0x88,
0x89,
0x8a,
0x8b,
0x8c,
0x8d,
0x8e,
0x8f,
0x90,
0x91,
0x92,
0x93,
0x94,
0x95,
0x96,
0x97,
0x98,
0x99,
0x9a,
0x9b,
0x9c,
0x9d,
0x9e,
0x9f,
0xa0,
0xa1,
0xa2,
0xa3,
0xa4,
0xa5,
0xa6,
0xa7,
0xa8,
0xa9,
0xaa,
0xab,
0xac,
0xad,
0xae,
0xaf,
0xb0,
0xb1,
0xb2,
0xb3,
0xb4,
0xb5,
0xb6,
0xb7,
0xb8,
0xb9,
0xba,
0xbb,
0xbc,
0xbd,
0xbe,
0xbf,
0xc0,
0xc1,
0xc2,
0xc3,
0xc4,
0xc5,
0xc6,
0xc7,
0xc8,
0xc9,
0xca,
0xcb,
0xcc,
0xcd,
0xce,
0xcf,
0xd0,
0xd1,
0xd2,
0xd3,
0xd4,
0xd5,
0xd6,
0xd7,
0xd8,
0xd9,
0xda,
0xdb,
0xdc,
0xdd,
0xde,
0xdf,
0xe0,
0xe1,
0xe2,
0xe3,
0xe4,
0xe5,
0xe6,
0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -