📄 key.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 + -