⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c

📁 很难得的最好的rtd3523系列原厂源码LCD驱动开发
💻 C
📖 第 1 页 / 共 2 页
字号:
		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 + -