📄 key.c
字号:
BYTE nKeys=0;
// x.hu, 20050906, add to prevent multi-key:
nKeys = (ucKeyState&_BIT0) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT1) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT2) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT3) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT4) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT5) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT6) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT7) ? (nKeys+1) : (nKeys);
if (nKeys>1)
return 0;
return ucKeyState;
}
//return ucKeyState;
// for IR
#if (_IRPOLLING)
ucKeyState = CIrKeyScan();
if (ucKeyState)
return ucKeyState;
#endif
return ucKeyState;
#elif ( _PCB_TYPE == _PCB_PV023BC1)
if(!bPOWER_KEY)
ucKeyState = ucKeyState | _POWER_KEY_MASK;
if(!bMENU_KEY)
ucKeyState = ucKeyState | _MENU_KEY_MASK;
if(!bLEFT_KEY)
ucKeyState = ucKeyState | _LEFT_KEY_MASK;
if(!bRIGHT_KEY)
ucKeyState = ucKeyState | _RIGHT_KEY_MASK;
#if 1//(_SOURCE_KEY_TYPE == _SOURCE_KEY_ONEKEY) // source switch one key from keypad
if (!bSource)
ucKeyState = ucKeyState | _SOURCE_KEY_MASK;
#endif
#if 0//(_SOURCE_KEY_TYPE == _SOURCE_KEY_MULTIKEY || _SOURCE_KEY_TYPE == _SOURCE_KEY_MIXKEY)
if(!bVIDEO1) // source switch multi-key from keypad, but one key from IR
ucKeyState = ucKeyState | _VIDEO1_KEY_MASK;
if(!bVIDEO2)
ucKeyState = ucKeyState | _VIDEO2_KEY_MASK;
#endif
if (ucKeyState)
{
BYTE nKeys=0;
// x.hu, 20050906, add to prevent multi-key:
nKeys = (ucKeyState&_BIT0) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT1) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT2) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT3) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT4) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT5) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT6) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT7) ? (nKeys+1) : (nKeys);
if (nKeys>1)
return 0;
return ucKeyState;
}
//return ucKeyState;
// for IR
#if (_IRPOLLING)
ucKeyState = CIrKeyScan();
if (ucKeyState)
return ucKeyState;
#endif
return ucKeyState;
#elif ( _PCB_TYPE == _PCB_JIALUHUA)
if(!bPOWER_KEY)
ucKeyState = ucKeyState | _POWER_KEY_MASK;
if(!bMENU_KEY)
ucKeyState = ucKeyState | _MENU_KEY_MASK;
if(!bLEFT_KEY)
ucKeyState = ucKeyState | _LEFT_KEY_MASK;
if(!bRIGHT_KEY)
ucKeyState = ucKeyState | _RIGHT_KEY_MASK;
if(!bEXIT)
ucKeyState =ucKeyState | _EXIT_KEY_MASK;//-----------------------------------------
#if 1//(_SOURCE_KEY_TYPE == _SOURCE_KEY_ONEKEY) // source switch one key from keypad
if (!bSource)
ucKeyState = ucKeyState | _SOURCE_KEY_MASK;
#endif
////////////////////////////////////////////////////////////////////////////////
#if 1 //(_SOURCE_KEY_TYPE == _SOURCE_KEY_MULTIKEY || _SOURCE_KEY_TYPE == _SOURCE_KEY_MIXKEY)
// if(!bVIDEO1) // source switch multi-key from keypad, but one key from IR
//ucKeyState = ucKeyState | _UP_KEY_MASK;//_VIDEO1_KEY_MASK;
if(!bVIDEO2)
ucKeyState = ucKeyState | _UP_KEY_MASK;//_VIDEO2_KEY_MASK;
#endif
///////////////////////////////////////////////////////////////////////////////
if (ucKeyState)
{
BYTE nKeys=0;
// x.hu, 20050906, add to prevent multi-key:
nKeys = (ucKeyState&_BIT0) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT1) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT2) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT3) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT4) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT5) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT6) ? (nKeys+1) : (nKeys);
nKeys = (ucKeyState&_BIT7) ? (nKeys+1) : (nKeys);
if (nKeys>1)
return 0;
return ucKeyState;
}
//return ucKeyState;
// for IR
#if (_IRPOLLING)
ucKeyState = CIrKeyScan();
if (ucKeyState)
return ucKeyState;
#endif
return ucKeyState;
#endif
}
//--------------------------------------------------
// Description : We can add some settings here while combo key with power key
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CKeyPowerKeyMix(void)
{
switch(ucKeyStateCurr)
{
case _POWER_RIGHT_KEY_MASK:
ucOsdEventMsg = _ENTER_FACTORY_MODE_MSG;
break;
case _POWER_MENU_KEY_MASK:
break;
case _POWER_LEFT_RIGHT_KEY_MASK:
break;
}
}
//--------------------------------------------------
// Description : Convert keypad status into key message, stores in ucKeyNotify
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CKeyMessageProc(void)
{
#if(_KEY_TYPE == _3_KEY_PAD)
switch(ucKeyStateCurr)
{
#if (_CUSTOM_TYPE == _CUSTOM_HAOZHEN)
case _MENU_KEY_MASK:
#if (_MENU_KEY_REPEAT_OPTION == _TRUE)
SET_KEYREPEATENABLE();
#else
CLR_KEYREPEATENABLE();
#endif
CKeyMessageConvert(_MENU_KEY_MASK, _MENU_KEY_MESSAGE);
break;
case _RIGHT_KEY_MASK:
// if set enable, COMMON OSD R/L item adjust is wrong.
// and Short Menu mode will set or clear by itself.
//SET_KEYREPEATENABLE();
CKeyMessageConvert(_RIGHT_KEY_MASK, 1);//_RIGHT_KEY_MESSAGE);
//20050810
//CTimerDelayXms(80);
break;
case _LEFT_KEY_MASK:
// if set enable, COMMON OSD R/L item adjust is wrong.
//SET_KEYREPEATENABLE();
CKeyMessageConvert(_LEFT_KEY_MASK, 2);//_LEFT_KEY_MESSAGE);
//20050810
//CTimerDelayXms(80);
break;
case _EXIT_KEY_MASK:
CLR_KEYREPEATENABLE();
CKeyMessageConvert(_EXIT_KEY_MASK,5);// _EXIT_KEY_MESSAGE);
break;
//video key not go into osd menu procedure
/*
case _VIDEO1_KEY_MASK:
CLR_KEYREPEATENABLE();
CKeyMessageConvert(_VIDEO1_KEY_MASK, _VIDEO1_KEY_MESSAGE);
break;
case _VIDEO2_KEY_MASK:
CLR_KEYREPEATENABLE();
CKeyMessageConvert(_VIDEO2_KEY_MASK, _VIDEO2_KEY_MESSAGE);
break;
*/
#if (_IRPOLLING)
case _IR_KEY_MASK:
CLR_KEYREPEATENABLE();
CKeyMessageConvert(_IR_KEY_MASK, ucIrKeyMessage);
///////////
//ucKeyMessage = ucIrKeyMessage;
//ucIrKeyMessage = 0;
break;
#endif
default:
CLR_KEYREPEATSTART();
CTimerCancelTimerEvent(CKeyRepeatEnableTimerEvent);
break;
#endif //end of #if (_CUSTOM_TYPE == _CUSTOM_HAOZHEN)
#if (_CUSTOM_TYPE == _CUSTOM_NONE)
case _MENU_KEY_MASK:
CKeyMessageConvert(_MENU_KEY_MASK, _SELECTED_MESSAGE);
break;
case _RIGHT_KEY_MASK:
if(bValueAdj)
CKeyMessageConvert(_RIGHT_KEY_MASK, _VALUE_UP_MESSAGE);
else
CKeyMessageConvert(_RIGHT_KEY_MASK, _ITEM_UP_MESSAGE);
break;
case _LEFT_KEY_MASK:
//CKeyMessageConvert(_LEFT_KEY_MASK, _VALUE_DOWN_MESSAGE);////////volume xyw
if(bValueAdj)
CKeyMessageConvert(_LEFT_KEY_MASK, _VALUE_DOWN_MESSAGE);
else
CKeyMessageConvert(_LEFT_KEY_MASK, _ITEM_DOWN_MESSAGE);
break;
case _EXIT_KEY_MASK:
//CLR_KEYREPEATENABLE();
//CKeyMessageConvert(_EXIT_KEY_MASK, _VALUE_UP_MESSAGE);//////////////volume xyw
CKeyMessageConvert(_EXIT_KEY_MASK,5);
break;
case _UP_KEY_MASK:
CKeyMessageConvert(_UP_KEY_MASK, _VALUE_UP_MESSAGE);//////////////volume xyw
break;
#if (_IRPOLLING)
case _IR_KEY_MASK:
CLR_KEYREPEATENABLE();
CKeyMessageConvert(_IR_KEY_MASK, ucIrKeyMessage);
///////////
//ucKeyMessage = ucIrKeyMessage;
//ucIrKeyMessage = 0;
break;
#endif
default:
CLR_KEYREPEATSTART();
CTimerCancelTimerEvent(CKeyRepeatEnableTimerEvent);
break;
#endif //end of #if (_CUSTOM_TYPE == _CUSTOM_NONE)
}
#elif (_KEY_TYPE == _5_KEY_PAD)
switch(ucKeyStateCurr)
{
case _MENU_KEY_MASK:
CKeyMessageConvert(_MENU_KEY_MASK, _SELECTED_MESSAGE);
break;
case _EXIT_KEY_MASK:
CKeyMessageConvert(_EXIT_KEY_MASK, _EXIT_MESSAGE);
break;
case _RIGHT_KEY_MASK:
if(bValueAdj)
CKeyMessageConvert(_RIGHT_KEY_MASK, _VALUE_UP_MESSAGE);
else
CKeyMessageConvert(_RIGHT_KEY_MASK, _ITEM_UP_MESSAGE);
break;
case _LEFT_KEY_MASK:
if(bValueAdj)
CKeyMessageConvert(_LEFT_KEY_MASK, _VALUE_DOWN_MESSAGE);
else
CKeyMessageConvert(_LEFT_KEY_MASK, _ITEM_DOWN_MESSAGE);
break;
default:
CLR_KEYREPEATSTART();
CTimerCancelTimerEvent(CKeyRepeatEnableTimerEvent);
break;
}
#elif (_KEY_TYPE == _7_KEY_PAD)
switch(ucKeyStateCurr)
{
case _MENU_KEY_MASK:
CKeyMessageConvert(_MENU_KEY_MASK, _SELECTED_MESSAGE);
break;
case _EXIT_KEY_MASK:
CKeyMessageConvert(_EXIT_KEY_MASK, _EXIT_MESSAGE);
break;
case _RIGHT_KEY_MASK:
CKeyMessageConvert(_RIGHT_KEY_MASK, _VALUE_UP_MESSAGE);
break;
case _LEFT_KEY_MASK:
CKeyMessageConvert(_LEFT_KEY_MASK, _VALUE_DOWN_MESSAGE);
break;
case _UP_KEY_MASK:
CKeyMessageConvert(_RIGHT_KEY_MASK, _ITEM_UP_MESSAGE);
break;
case _DOWN_KEY_MASK:
CKeyMessageConvert(_LEFT_KEY_MASK, _ITEM_DOWN_MESSAGE);
break;
#if (_IRPOLLING)
case _IR_KEY_MASK:
CLR_KEYREPEATENABLE();
CKeyMessageConvert(_IR_KEY_MASK, ucIrKeyMessage);
///////////
//ucKeyMessage = ucIrKeyMessage;
//ucIrKeyMessage = 0;
break;
#endif
default:
CLR_KEYREPEATSTART();
CTimerCancelTimerEvent(CKeyRepeatEnableTimerEvent);
break;
}
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -