?? key.c
字號(hào):
#include "fx2.h"
#include "fx2regs.h"
#include "io.h"
#include "key.h"
/*********************宏定義***************************/
#define OKey_Macro_MaxKeyNum 9 /*最大鍵碼數(shù)*/
#define OKey_Macro_ClearTrembleLength 100 /*消顫隊(duì)列長(zhǎng)度*/
#define OKey_Macro_NoKey 0xFF
BYTE OKey_RD_OldKey ;
BYTE OKey_RD_CountKey ;
WORD OKey_RD_Counter ;
BYTE OKey_Value;
struct OKey_RD_KeyTable_Struct
{
BYTE ScanCode;
BYTE KeyEventID;
};
code struct OKey_RD_KeyTable_Struct OKey_RD_KeyTable [OKey_Macro_MaxKeyNum+1] = /*鍵碼表 OKey_Macro_MaxKeyNum + 1 */
{
{Macro_ScanS1, 1}, {Macro_ScanS2, 2},
{Macro_ScanS3, 3}, {Macro_ScanS4, 4},
{Macro_ScanS5, 5}, {Macro_ScanS6, 6},
{Macro_ScanS7, 7}, {Macro_ScanS8, 8},
{Macro_ScanUnhand,0x7F}, {Macro_ScanNoKey, 0xFF}
};
BYTE OKey_MD_TransKey (BYTE in_key)
{
BYTE i ;
i = 0;
while ((in_key != OKey_RD_KeyTable[i].ScanCode) && (i < OKey_Macro_MaxKeyNum))
i ++ ;
return (OKey_RD_KeyTable[i].KeyEventID) ;
}
/*********************** 公有函數(shù) **********************/
/*************************************************/
/* Name: OKey_RP_Scan */
/* Descrip: 鍵盤掃描 */
/* Input: 無(wú) */
/* Output: 無(wú) */
/*************************************************/
BYTE OKey_RP_Scan()
{
BYTE temp_code ,temp_scan;
temp_code = *KEY; /* 讀鍵盤 */
if (temp_code == Macro_ScanUnhand) /*沒(méi)有鍵按下*/
{
if (OKey_RD_OldKey == Macro_ScanUnhand) /* 上次也沒(méi)按下 */
{
return (OKey_Macro_NoKey); /*無(wú)鍵*/
}
}
else /* 本次有鍵按下 */
{
if (OKey_RD_OldKey != Macro_ScanUnhand) /* 上次沒(méi)按下 */
{
return (OKey_Macro_NoKey); /*無(wú)鍵*/
}
}
if (temp_code == OKey_RD_CountKey)
{
OKey_RD_Counter ++ ;
if (OKey_RD_Counter >= OKey_Macro_ClearTrembleLength)
{
OKey_RD_Counter = 0 ;
temp_scan = OKey_MD_TransKey(temp_code);
if (temp_scan != Macro_ScanNoKey)
{
if (OKey_RD_CountKey == OKey_RD_OldKey)
return (OKey_Macro_NoKey);
else
{
OKey_RD_OldKey = OKey_RD_CountKey;
return (temp_scan) ;
}
}
else
return (OKey_Macro_NoKey);
}
else
return (OKey_Macro_NoKey);
}
else
{
OKey_RD_Counter = 0;
OKey_RD_CountKey = temp_code;
return (OKey_Macro_NoKey);
}
}
/*************************************************/
/* Name: OKey_RP_Init */
/* Descrip: 初始化 */
/* Input: 無(wú) */
/* Output: 無(wú) */
/*************************************************/
void OKey_RP_Init()
{
OKey_RD_OldKey = OKey_Macro_NoKey;
OKey_RD_CountKey = OKey_Macro_NoKey;
OKey_RD_Counter = 0;
OKey_Value = 0xFF;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -