📄 keypad.c
字号:
#include "board.h"
#include "global.h"
#include "misc.h"
#include "keypaddef.h"
#include "ir.h"
#include "power.h"
#include "Gm_rwreg.h"
#include "debug.h"
#include "keypad.h"
//#include ""
#if DebugIRCode
extern BYTE xdata IRDebugCode0;
extern BYTE xdata IRDebugCode1;
extern BYTE xdata IRDebugData;
#endif
#if TEST_IR_KEY
extern BYTE IR_Data_Backup;
#endif
BYTE KeypadButton = BTN_Nothing;
BYTE Key_GetKeypadStatus(void)
{
return hwKeyPort;
}
void Key_ScanKeypad(void)
{
BYTE keypadStatus,keypadStatus2;
keypadStatus=(Key_GetKeypadStatus()^KeypadMask)&KeypadMask;
if(keypadStatus)//remove jitter
{
ForceDelay1ms(20);
keypadStatus2=(Key_GetKeypadStatus()^KeypadMask)&KeypadMask;
if(keypadStatus!=keypadStatus2)
keypadStatus = 0;
Clr_IRKeyReceiveFlag();
}
else
{
keypadStatus = Get_IR_Key();
//printData("IR-Key=0x%x", keypadStatus);
//Tom added it to solve the ir value is not zero when there is no input
//so the ir value can't be defined as zero
//if (keypadStatus == KEY_NOTHING)
// keypadStatus = 0;
//end
#if TEST_IR_KEY
printData("IR_Data_Backup=0x%x", IR_Data_Backup);
#endif
//if(keypadStatus)
if (keypadStatus != KEY_NOTHING)
{
printData("IR-Key=0x%x", keypadStatus);
Set_IRKeyReceiveFlag();
}
else
Clr_IRKeyReceiveFlag();
}
//if (keypadStatus)
if (keypadStatus != KEY_NOTHING)
{
if (keypadStatus==KEY_PLUS)
{
gm_sendByte(Key_VolumeUp|CMD_HEAD_KEY);
}
else if (keypadStatus==KEY_MINUS)
{
gm_sendByte(Key_VolumeDown|CMD_HEAD_KEY);
}
else if (keypadStatus==KEY_MENUENTER)
{
//if (KeypadButton==BTN_MenuEnter|| KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_MenuEnter;
gm_sendByte(Key_MenuEnter|CMD_HEAD_KEY);
//}
}
else if (keypadStatus==KEY_SOURCESWITCH)
{
//if (KeypadButton==BTN_SourceSwitch|| KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
//KeypadButton=BTN_SourceSwitch;
gm_sendByte(Key_SourceKey|CMD_HEAD_KEY);
//}
}
else if (keypadStatus==KEY_POWER)
{
if (KeypadButton == BTN_Power || KeypadButton == BTN_Repeat)
KeypadButton = BTN_Repeat;
else
{
#if 1
if (gm_StandbyHi())
//if (!PowerOnFlag)
{
// printMsg("standby high, standby high");
Clr_gm_Standby();
Set_DoPowerOnFlag();
Set_PowerOnStatus();
ForceDelay1ms(1);
// cmd_Power_Handler = POWER_ON_SYSTEM;
}
else
{
Clr_DoPowerOnFlag();
}
#endif
KeypadButton=BTN_Power;
gm_sendByte(Key_PowerKey|CMD_HEAD_KEY);
#if 0
if (!PowerOnFlag)
{
//Set_gm_Standby();
Set_PowerOnFlag();
ForceDelay1ms(1);
cmd_Power_Handler = POWER_ON_SYSTEM;
}
#endif
}
}
else if (keypadStatus==KEY_UP)
{
//if (KeypadButton == BTN_Up||KeypadButton == BTN_Repeat)
// KeypadButton = BTN_Repeat;
//else
//{
// KeypadButton = BTN_Up;
gm_sendByte(Key_ChannelUp|CMD_HEAD_KEY);
//}
}
else if (keypadStatus==KEY_DOWN)
{
//if (KeypadButton == BTN_Down||KeypadButton == BTN_Repeat)
// KeypadButton = BTN_Repeat;
//else
//{
// KeypadButton = BTN_Down;
gm_sendByte(Key_ChannelDown|CMD_HEAD_KEY);
//}
}
else if (keypadStatus == KEY_ENTERKEY)
{
//if (KeypadButton == BTN_EnterKey || KeypadButton == BTN_Repeat)
// KeypadButton = BTN_Repeat;
//else
//{
// KeypadButton=BTN_EnterKey;
gm_sendByte(Key_EnterKey|CMD_HEAD_KEY);
//}
}
//IR KEY----------------
else if (keypadStatus == KEY_IR_0)
{
//if (KeypadButton==BTN_IR_0 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_0;
gm_sendByte(Key_IR_Zero);
//}
}
else if (keypadStatus == KEY_IR_1)
{
//if (KeypadButton==BTN_IR_1 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_1;
gm_sendByte(Key_IR_One);
//}
}
else if (keypadStatus == KEY_IR_2)
{
//if (KeypadButton==BTN_IR_2 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_2;
gm_sendByte(Key_IR_Two);
//}
}
else if (keypadStatus == KEY_IR_3)
{
//if (KeypadButton==BTN_IR_3 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_3;
gm_sendByte(Key_IR_Three);
//}
}
else if (keypadStatus == KEY_IR_4)
{
//if (KeypadButton==BTN_IR_4 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_4;
gm_sendByte(Key_IR_Four);
//}
}
else if (keypadStatus == KEY_IR_5)
{
//if (KeypadButton==BTN_IR_5 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_5;
gm_sendByte(Key_IR_Five);
//}
}
else if (keypadStatus == KEY_IR_6)
{
//if (KeypadButton==BTN_IR_6 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_6;
gm_sendByte(Key_IR_Six);
//}
}
else if (keypadStatus == KEY_IR_7)
{
//if (KeypadButton==BTN_IR_7 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_7;
gm_sendByte(Key_IR_Seven);
//}
}
else if (keypadStatus == KEY_IR_8)
{
//if (KeypadButton==BTN_IR_8 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_8;
gm_sendByte(Key_IR_Eight);
//}
}
else if (keypadStatus == KEY_IR_9)
{
//if (KeypadButton==BTN_IR_9 || KeypadButton==BTN_Repeat)
// KeypadButton=BTN_Repeat;
//else
//{
// KeypadButton=BTN_IR_9;
gm_sendByte(Key_IR_Nine);
//}
}
else if (keypadStatus==KEY_IR_VOLUMEUP)
{
gm_sendByte(Key_VolumeUp|CMD_HEAD_IR);
}
else if (keypadStatus==KEY_IR_VOLUMEDOWN)
{
gm_sendByte(Key_VolumeDown|CMD_HEAD_IR);
}
else if (keypadStatus==KEY_IR_CHANNELUP)
{
gm_sendByte(Key_ChannelUp|CMD_HEAD_IR);
}
else if (keypadStatus==KEY_IR_CHANNELDOWN)
{
gm_sendByte(Key_ChannelDown|CMD_HEAD_IR);
}
else if (keypadStatus == KEY_IR_UP)
{
// if (KeypadButton == BTN_IR_Up ||KeypadButton == BTN_Repeat)
// KeypadButton = BTN_Repeat;
// else
// {
// KeypadButton = BTN_IR_Up;
gm_sendByte(Key_Up|CMD_HEAD_IR);
// }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -