?? key.c
字號:
/*******************************************************************************
KEY.C
Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#include <DEFINE.H>
#define CHANNEL0 0x01
#define CHANNEL1 0x02
/*==============================================================================
==============================================================================*/
unsigned char Key_Scan(unsigned char channel) {
unsigned char Previous=0x00, Now=0xff;
ADC=0x80|channel;
do{
Previous=ADC;
DelayX1ms(3);
Now=ADC;
}while(Previous!=Now);
return Now&0x3f;
}
/*==============================================================================
==============================================================================*/
void Get_Key(void) {
unsigned KeyValue;
bkey_code_now=0;
//kkkkkkkkkkkkkkkkkkkkkkk Keyboard Detect kkkkkkkkkkkkkkkkkkkkkkkkk//
KeyValue=Key_Scan(CHANNEL0);
if(KeyValue<4)
bsw6=1;
if((KeyValue<24)&&(KeyValue>16))
bsw5=1;
if((KeyValue<36)&&(KeyValue>28))
bsw4=1;
KeyValue=Key_Scan(CHANNEL1);
if(KeyValue<4)
bsw3=1;
if((KeyValue<24)&&(KeyValue>16))
bsw2=1;
if((KeyValue<36)&&(KeyValue>28))
bsw1=1;
bsw7=(!SOFT_POWER);
//---------------key fast detection------------//
if(bkey_code_now==bkey_code_repeat) {//same key pressed
if((bkey_code_now==KEY_VOL_MINUS)||(bkey_code_now==KEY_VOL_PLUS)) {
if(!bkeyfast) {
KeyRepeat++;
if(KeyRepeat>80) {
bkeyfast=1;
}
}
}
}
else {
bkey_code_repeat=bkey_code_now;
KeyRepeat=bkeyfast=0;
}
//---------------all key released---------------//
if(bkey_code_now==0) {
bkey_code_pre=bkey_code_now=bkey_code_repeat=KeyPadTimer=0;
}
//---------------at least one key pressed-------//
else {
Timer0Counter=Timer0Second=0;//clear osd off timer
if(bkey_code_now==bkey_code_pre) {//same key pressed
bkey_code_now=0;
}
else {//different key pressed
bkey_code_pre=bkey_code_now;
KeyPadTimer=0;
}
}
//rrrrrrrrrrrrrrrrrrrrrrrr Remote Detect rrrrrrrrrrrrrrrrrrrrrrrrrr//
if(Remote_Code.ir_rdy==1) {
RemoteMapping();
Remote_Code.ir_rdy=0;
EX0=1;
}
}
/*==============================================================================
==============================================================================*/
void RemoteMapping(void) {
if((Remote_Code.ir_sys==REMOTE_SYS1)||(Remote_Code.ir_sys==REMOTE_SYS2)) {
SysNow=Remote_Code.ir_sys;
if(SysPre!=SysNow) {//different remote pressed
SysPre=SysNow;
Remote=Remote_Code.ir_cmd;
switch(Remote) {
case(REMOTE_STDBY):
bkey_code_now=KEY_POWER;
break;
case(REMOTE_MENU):
if((Page==0)||(Page==100))
bkey_code_now=KEY_MENU;
break;
case(REMOTE_SELECT):
if(!((Page==0)||(Page==100)||(bhotosd)))
bkey_code_now=KEY_MENU;
break;
case(REMOTE_UP):
if(!((Page==0)||(Page==100)))//disable remote 4-directions
bkey_code_now=KEY_CH_PLUS;
break;
case(REMOTE_DOWN):
if(!((Page==0)||(Page==100)))//disable remote 4-directions
bkey_code_now=KEY_CH_MINUS;
break;
case(REMOTE_LEFT):
if(badjust)
bkey_code_now=KEY_VOL_MINUS;
break;
case(REMOTE_RIGHT):
if(badjust)
bkey_code_now=KEY_VOL_PLUS;
break;
case(REMOTE_OPT4):
bkey_code_now=KEY_SOURCE;
break;
case(REMOTE_EXIT):
Page=Item=0;
OSD_Show(0,0,0,0,0);
break;
default:
bkey_code_now=KEY_NULL;
break;
}
}
else {//same remote pressed
//SysPre=SysNow;
Remote=Remote_Code.ir_cmd;
if((Remote==REMOTE_VOLUP)||(Remote==REMOTE_VOLDN)||
(((Remote==REMOTE_LEFT)||(Remote==REMOTE_RIGHT))&&badjust)) {
SysPre=REMOTE_NULL;
}
else {
Remote=REMOTE_NULL;
}
}
}
else {
SysPre=SysNow;
Remote=REMOTE_NULL;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -