📄 keyscan.cpp
字号:
case 0x0118: //printf("+");
keyvalue=0x0118;
break;
case 0x0119: //printf("-");
keyvalue=0x0119;
break;
case 0x011a: //printf("->");
keyvalue=0x011a;
break;
case 0x011b: //printf("<-");
keyvalue=0x011b;
break;
case 0x0b30: //printf( "0" );
MulKeyFlg=0;
keyvalue=0x0b30;
break;
case 0x0231: //printf( "1" );
MulKeyFlg=0;
keyvalue=0x0231;
break;
case 0x0332: // printf( "2" );
if(Key2ScanTmrCnt<80)
{
Key2ScanTmrCnt=0;
Key2TimesCnt++;
}
else
{
Key2ScanTmrCnt=0;
Key2TimesCnt=1;
}
switch(Key2TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0332; break; //key:'2'
case 2: MulKeyFlg=1; keyvalue=0x0341; break; //key:'A'
case 3: MulKeyFlg=1; keyvalue=0x0342; break; //key:'B'
case 4: MulKeyFlg=1; keyvalue=0x0343; break; //key:'C'
default: MulKeyFlg=1; keyvalue=0x0332; Key2TimesCnt=1; break; //key:'2'
}
break;
case 0x0433: //printf( "3" );
if(Key3ScanTmrCnt<80)
{
Key3ScanTmrCnt=0;
Key3TimesCnt++;
}
else
{
Key3ScanTmrCnt=0;
Key3TimesCnt=1;
}
switch(Key3TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0433; break; //key:'3'
case 2: MulKeyFlg=1; keyvalue=0x0444; break; //key:'D'
case 3: MulKeyFlg=1; keyvalue=0x0445; break; //key:'E'
case 4: MulKeyFlg=1; keyvalue=0x0446; break; //key:'F'
default: MulKeyFlg=1; keyvalue=0x0433; Key3TimesCnt=1; break; //key:'3'
}
break;
case 0x0534: //printf( "4" ); break;
if(Key4ScanTmrCnt<80)
{
Key4ScanTmrCnt=0;
Key4TimesCnt++;
}
else
{
Key4ScanTmrCnt=0;
Key4TimesCnt=1;
}
switch(Key4TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0534; break; //key:'3'
case 2: MulKeyFlg=1; keyvalue=0x0547; break; //key:'G'
case 3: MulKeyFlg=1; keyvalue=0x0548; break; //key:'H'
case 4: MulKeyFlg=1; keyvalue=0x0549; break; //key:'I'
default: MulKeyFlg=1; keyvalue=0x0534; Key4TimesCnt=1; break; //key:'4'
}
break;
case 0x0635: //printf( "5" ); break;
if(Key5ScanTmrCnt<80)
{
Key5ScanTmrCnt=0;
Key5TimesCnt++;
}
else
{
Key5ScanTmrCnt=0;
Key5TimesCnt=1;
}
switch(Key5TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0635; break; //key:'5'
case 2: MulKeyFlg=1; keyvalue=0x064A; break; //key:'J'
case 3: MulKeyFlg=1; keyvalue=0x064B; break; //key:'K'
case 4: MulKeyFlg=1; keyvalue=0x064C; break; //key:'L'
default: MulKeyFlg=1; keyvalue=0x0635; Key5TimesCnt=1; break; //key:'5'
}
break;
case 0x0736: //printf( "6" ); break;
if(Key6ScanTmrCnt<80)
{
Key6ScanTmrCnt=0;
Key6TimesCnt++;
}
else
{
Key6ScanTmrCnt=0;
Key6TimesCnt=1;
}
switch(Key6TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0736; break; //key:'6'
case 2: MulKeyFlg=1; keyvalue=0x074D; break; //key:'M'
case 3: MulKeyFlg=1; keyvalue=0x074E; break; //key:'N'
case 4: MulKeyFlg=1; keyvalue=0x074F; break; //key:'O'
default: MulKeyFlg=1; keyvalue=0x0736; Key6TimesCnt=1; break; //key:'6'
}
break;
case 0x0837: //printf( "7" ); break;
if(Key7ScanTmrCnt<80)
{
Key7ScanTmrCnt=0;
Key7TimesCnt++;
}
else
{
Key7ScanTmrCnt=0;
Key7TimesCnt=1;
}
switch(Key7TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0837; break; //key:'7'
case 2: MulKeyFlg=1; keyvalue=0x0850; break; //key:'P'
case 3: MulKeyFlg=1; keyvalue=0x0851; break; //key:'Q'
case 4: MulKeyFlg=1; keyvalue=0x0852; break; //key:'R'
case 5: MulKeyFlg=1; keyvalue=0x0853; break; //key:'S'
default: MulKeyFlg=1; keyvalue=0x0837; Key7TimesCnt=1; break; //key:'7'
}
break;
case 0x0938: //printf( "8" ); break;
if(Key8ScanTmrCnt<80)
{
Key8ScanTmrCnt=0;
Key8TimesCnt++;
}
else
{
Key8ScanTmrCnt=0;
Key8TimesCnt=1;
}
switch(Key8TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0938; break; //key:'8'
case 2: MulKeyFlg=1; keyvalue=0x0954; break; //key:'T'
case 3: MulKeyFlg=1; keyvalue=0x0955; break; //key:'U'
case 4: MulKeyFlg=1; keyvalue=0x0956; break; //key:'V'
default: MulKeyFlg=1; keyvalue=0x0938; Key8TimesCnt=1; break; //key:'8'
}
break;
case 0x0a39: //printf( "9" ); break;
if(Key9ScanTmrCnt<80)
{
Key9ScanTmrCnt=0;
Key9TimesCnt++;
}
else
{
Key9ScanTmrCnt=0;
Key9TimesCnt=1;
}
switch(Key9TimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0a39; break; //key:'9'
case 2: MulKeyFlg=1; keyvalue=0x0a57; break; //key:'W'
case 3: MulKeyFlg=1; keyvalue=0x0a58; break; //key:'X'
case 4: MulKeyFlg=1; keyvalue=0x0a59; break; //key:'Y'
case 5: MulKeyFlg=1; keyvalue=0x0a5a; break; //key:'Z'
default: MulKeyFlg=1; keyvalue=0x0a39; Key9TimesCnt=1; break; //key:'9'
}
break;
case 0x0b23: //printf("#"); break;
if(KeyWellSymbolScanTmrCnt<80)
{
KeyWellSymbolScanTmrCnt=0;
KeyWellSymbolTimesCnt++;
}
else
{
KeyWellSymbolScanTmrCnt=0;
KeyWellSymbolTimesCnt=1;
}
switch(KeyWellSymbolTimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0b23; break; //key:'#'
case 2: MulKeyFlg=1; keyvalue=0x0b20; break; //key:' '
default: MulKeyFlg=1; keyvalue=0x0b23; KeyWellSymbolTimesCnt=1; break; //key:'#'
}
break;
case 0x0c2a: //printf("*"); break;
if(KeyStarSymbolScanTmrCnt<80)
{
KeyStarSymbolScanTmrCnt=0;
KeyStarSymbolTimesCnt++;
}
else
{
KeyStarSymbolScanTmrCnt=0;
KeyStarSymbolTimesCnt=1;
}
switch(KeyStarSymbolTimesCnt)
{
case 1: MulKeyFlg=0; keyvalue=0x0c2a; break; //key:'*'
case 2: MulKeyFlg=1; keyvalue=0x0c2e; break; //key:'.'
default: MulKeyFlg=1; keyvalue=0x0c2a; KeyStarSymbolTimesCnt=1; break; //key:'*'
}
break;
}
}
//CursorBlink( ); //光标闪烁函数
return keyvalue;
}
//Cursor:=0,点亮;=1, 熄灭;
/*int Cursor=0;
void CursorBlink( )
{
int i;
i = Cursor;
if(CursorTmrCnt>50)
{
switch(i)
{
case 0:
printf("_\b");
CursorTmrCnt=0;
Cursor=1;
break;
case 1:
printf(" ");
printf("\b");
CursorTmrCnt=0;
Cursor=0;
break;
}
}
}*/
int LoadBuffer( unsigned int ScanWord )
{
unsigned Temp;
unsigned far* BufferItem;
unsigned ReturnValue = 0;
struct BIOSRAM* LowRam;
LowRam = (struct BIOSRAM*)(0x00400000l);
// If a serial port may also be the console input device, then
// disable interrupts during buffer load time
disable();
/* increment the temporary tail pointer */
Temp = LowRam->KbBufferTail; Temp += 2;
/* check for wrap-around and reset to start if needed */
if (Temp == LowRam->KbBufferEnd) Temp = LowRam->KbBufferStart;
/* if overwrite will not happen, then store the scan word */
if (Temp != LowRam->KbBufferHead)
{
*(BufferItem = (unsigned int*)MK_FP(0x40,LowRam->KbBufferTail)) = ScanWord;
/* now update the tail */
LowRam->KbBufferTail = Temp;
ReturnValue = 1;
}
// If a serial port was also enabled for the console input device,
// we had previously disabled interrupts during buffer load time
enable();
return ReturnValue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -