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

📄 key.c

📁 MP3 KEY CODE IS NEW CODE
💻 C
字号:
#include "dec_extern.h"


UINT8 key_proc(void)
{
	data UINT8 key_val = 0x00;
	data UINT16 tmp_current_key = 0x0000;

//	key_val = ~P2;	//read ekey[7:0]
	key_val = ~(read_XDATA(GP2_DATA))& 0xFC;
	
	if((init_key_mask == 0) && (key_val == 0))
		init_key_mask = 1;

#ifdef HOLD_CHECK
	if(HOLD)
	{
		KEY.bc.bHOLD = 1;
	}
	else
	{
		KEY.bc.bHOLD = 0;
	}
#else
	KEY.bc.bHOLD = 0;
#endif

 	tmp_current_key |= key_val;

	#ifdef YIYUAN
	if(PLAY_KEY == 1){tmp_current_key |= MASK_PLAY;}
	#else
	if(PLAY_KEY == 0){tmp_current_key |= MASK_PLAY;}
	#endif

	if(KEY.bc.bHOLD)
	{
		if(tmp_current_key){
			current_key = KEY_NONE;
			KEY.bc.bPUSH = 1;
			return 1;	// something input!
		}
		else
			return 2;	// nothing!
	}

	if(init_key_mask==0) return 2;

	#if defined FIVE_KEY_VER
	tmp_current_key &= 0x01ef;//key_active;

	#elif defined GYT_VER
	tmp_current_key &= 0x0fff;//key_active;

	#else
	tmp_current_key &= 0x01ff;//key_active;
	#endif
		
	if(tmp_current_key != MASK_NONE)
	{
		if(tmp_current_key == previous_key)
		{
			if(btn_cnt>LONG_CNT)
			{
				// long key肺 牢侥, btn_cnt刘啊 绝澜, 咯矾锅 荐青.
				KEY.bc.bPUSH  = 1;
				current_key = tmp_current_key | MASK_LONG;
				//btn_cnt = LONG_CNT-2;	//蔼 炼沥栏肺 林扁 炼沥 啊瓷.
				switch(current_key)
				{
					//support LONG key 
					//long key肺结 窍唱狼 狼固甫 爱绰 key
					//shot key肺绰 促弗 狼固甫 爱栏哥 short老锭狼 悼累阑 窍瘤 臼绊
				    case KEY_LREC:
//						if(!KEY.bc.bREC){
//							KEY.bc.bREC = 1;
//						}
//						else{
//							KEY.bc.bPUSH = 0;
//						}
						break;
					case KEY_LMODE:
						break;
					case KEY_LFF: 
						#if defined FIVE_KEY_VER
			                     if(!vol_change){
			                            KEY.bc.bFF = 1;   
			                        }  
						else
			                           KEY.bc.bPUSH  = 0;
						#else
						KEY.bc.bFF = 1;
						#endif
						break;
					case KEY_LREW: 
						#if defined FIVE_KEY_VER
			                     if(!vol_change){
			                            KEY.bc.bREW = 1;   
			                        }  
						else
			                           KEY.bc.bPUSH  = 0;						
						#else
						KEY.bc.bREW = 1;
						#endif
						break;
	
					//long key肺结 窍唱狼 狼固甫 爱绰 key
					//shot key肺绰 促弗 狼固甫 爱栏哥 short老锭狼 悼累阑 窍绊 柯 惑怕.
					case KEY_LPLAY:	//about 3sec.
						break;
					default:
						KEY.bc.bPUSH  = 0;
						current_key = KEY_NONE;
						break;
				}
			}
			else if(btn_cnt> MID_CNT)
			{
				current_key = tmp_current_key | MASK_LONG;
				switch(current_key)
				{
					case KEY_LVOLUP:
					case KEY_LVOLDN:
						KEY.bc.bPUSH  = 1;
						btn_cnt = 0;
						break;

					#if defined FIVE_KEY_VER
					case KEY_LFF:
					case KEY_LREW:
                        			if(vol_change)
						{
						   	KEY.bc.bPUSH  = 1;
						   	btn_cnt = 0;
                        			}
                        			else
                           				btn_cnt++;                           
						break;
					#endif

					default: btn_cnt++; break;
				}
			}
			else if(btn_cnt > SHORT_CNT)
			{
				switch(tmp_current_key)
				{
					//long key => several short key
					//long栏肺 穿福搁 short阑 咯矾锅 荐青
					//short捞搁 茄锅 荐青
				 	//btn_cnt 檬扁拳肺 风橇 倒覆.
					case KEY_VOLDN:
					case KEY_VOLUP:
					default: btn_cnt++; break;
				}					
			}//end if(btn_cnt>SHORT_CNT)
			else
			{
				btn_cnt++;
			}
		}//end if(tmp_current_key == previous_key)
		else
		{
			btn_cnt = 0;
		}
	}//end if(tmp_current_key != MASK_NONE)
	else
	{

		KEY.bc.bREC = 0;

		KEY.bc.bREW = 0;

		KEY.bc.bFF = 0;

		if(btn_cnt > LONG_CNT)
		{
			if(previous_key == KEY_PLAY){
				KEY.bc.bPUSH  = 1;
				current_key = KEY_PLAY;
			}
			else{
				current_key = KEY_NONE;
			}
		}
		else
		{
			if(btn_cnt > SHORT_CNT)
			{		
				current_key = previous_key;
				switch(current_key)
				{
					//support LONG key 
					//long key肺结 窍唱狼 狼固甫 爱绰 key
					//shot key肺绰 促弗 狼固甫 爱栏哥 long鳖瘤 柳青篮 救登绊
					//key 喘覆捞 肛冕 惑怕. -> short key 贸府啊 酒流 救等 惑怕扼 咯扁辑 柳青

					case KEY_MODE:
					case KEY_FF: 
					case KEY_REW: 
//					case KEY_STOP:
					#ifdef G5_BOARD
        			case KEY_PLAY:
					#endif
							KEY.bc.bPUSH  = 1;
						break;

					#ifndef G5_BOARD
					case KEY_PLAY:
						if(sub_mode_in_play != DEC_MENU){
							KEY.bc.bPUSH  = 1;
						}else{
							KEY.bc.bPUSH  = 0;
							current_key = KEY_NONE;
						}	
						break;
					#endif

					case KEY_VOLDN:
					case KEY_VOLUP:
//					case KEY_EXT:
					case KEY_REC:

					#if defined FIVE_KEY_VER
                    			case KEY_ESC:
					#endif
//						if(sub_mode_in_play == DEC_MENU)
//						{
							KEY.bc.bPUSH = 1; 
//						}else{
//							KEY.bc.bPUSH  = 0;
//							current_key = KEY_NONE;
//						}						
					  	break;
					

					default:
						KEY.bc.bPUSH  = 0;
						current_key = KEY_NONE;
						break;
				}
			}
			else
			{
				if(KEY.bc.bPUSH == 0) current_key = KEY_NONE;
			}
		}
		use_short_key = 0;
		btn_cnt = 0;
	}//end else of if(tmp_current_key != MASK_NONE)
		
	previous_key = tmp_current_key;

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -