📄 输入状态栏.c
字号:
#include "CM240128.H"
#include "scankey.h"
#include "51py.h"
#include <string.h>
#include <ctype.h>
//-----------------------------------------------------------------------------------------------------------------
static unsigned char InLoc;
static xdata unsigned char InStr[25];
idata unsigned char StateVal;//0字母 1数字 2拼音
static xdata unsigned char OutBuf[5];
//-----------------------------------------------------------------------------------------------------------------
void InputStateOption(unsigned char val)
{
StateVal=val;
if(StateVal==0){Shift=0;/*0英文/1数值 切换*/InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("英文: ",30);}
if(StateVal==1){Shift=1;/*0英文/1数值 切换*/InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("数字: ",30);}
if(StateVal==2){Shift=0;/*0英文/1数值 切换*/InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音: ",30);}
}
//-----------------------------------------------------------------------------------------------------------------
unsigned char * InputStateInput(void)
{
unsigned char val,ln;
static unsigned char loc,pag;
static unsigned char *p;
val = ScanKey();
if(val==0)return(0);
if(val == 8)//sw键
{
StateVal++;if(StateVal>2)StateVal=0;
InputStateOption(StateVal);
return(0);
}
if(StateVal==0)//英文输入法
{
// if((val>'Z'||val<'A')&&(val!=15)&&(val!='\n')&&(val!=1)&&(val!=2)&&(val!=3)&&(val!=4))return(0);//输入字符非法
// if(val>'Z'||val<'A'){InStr[0] = val;InStr[1]=0;return(InStr);}
InStr[0] = val;
InStr[1]=0;
SetCurrLoc(5,112);DisplayStr(InStr,5);
return(InStr);
}
if(StateVal==1)//数字输入法
{
if((val>'9'||val<'0')&&(val!=15)&&(val!='\n')&&(val!=1)&&(val!=2)&&(val!=3)&&(val!=4)&&(val!=':')&&(val!=6))return(0);//输入字符非法
if(val==':')val='.';
InStr[0] = val;
InStr[1]=0;
SetCurrLoc(5,112);DisplayStr(InStr,5);
return(InStr);
}
if(StateVal==2)//拼音输入法
{
if(val>'Z'||val<'A')
{
if(strlen(InStr)==0){OutBuf[0] = val;OutBuf[1]=0;return(OutBuf);}
if(loc>9)return(0);
if(val==1)
{//向上
if(pag>0)pag--;else return(0);
loc=0;
SetCurrLoc(10,112);
DisplayFill(' ',20);
SetCurrLoc(10,112);
DisplayStr((p+(pag*10)),20);
SetCurrLoc((10+(loc*2)),112);
DisplayPYStr((p+(loc*2)+(pag*10)),2);
return(0);
}
if(val==2)
{//向右
if(loc>9)return(0);
loc++;if(loc>9)loc=9;
ln = strlen(p);
if(((loc*2)+(pag*10))>=ln)loc--;
SetCurrLoc(10,112);
DisplayFill(' ',20);
SetCurrLoc(10,112);
DisplayStr((p+(pag*10)),20);
SetCurrLoc((10+(loc*2)),112);
DisplayPYStr((p+(loc*2)+(pag*10)),2);
return(0);
}
if(val==3)
{//向下
pag++;
ln = strlen(p);
if(((pag*10)+1)>ln){pag--;return(0);}
loc=0;
SetCurrLoc(10,112);
DisplayFill(' ',20);
SetCurrLoc(10,112);
DisplayStr((p+(pag*10)),20);
SetCurrLoc((10+(loc*2)),112);
DisplayPYStr((p+(loc*2)+(pag*10)),2);
return(0);
}
if(val==4)
{//向左
if(loc>9)return(0);
if(loc>0)loc--;
SetCurrLoc(10,112);
DisplayFill(' ',20);
SetCurrLoc(10,112);
DisplayStr((p+(pag*10)),20);
SetCurrLoc((10+(loc*2)),112);
DisplayPYStr((p+(loc*2)+(pag*10)),2);
return(0);
}
if(val == 0x0a)
{//确认 回车
OutBuf[0]=*(p+(loc*2)+(pag*10));
OutBuf[1]=*(p+(loc*2)+(pag*10)+1);
OutBuf[2]=0;
InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音: ",30);
pag=0;loc=0xff;
return(OutBuf);
}
if(val == 0x0f)
{//取消 删除
InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音: ",30);
pag=0;loc=0xff;
return(0);
}
}
if(InLoc==5){InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音: ",30);}
InStr[InLoc++] = tolower(val);InStr[InLoc]=0;
SetCurrLoc(5,112);DisplayStr(InStr,5);
p = py_ime(InStr);
loc=0xff;
if(p!=0)
{
loc=0;pag=0;
SetCurrLoc(10,112);
DisplayFill(' ',20);
SetCurrLoc(10,112);
DisplayStr(p,20);
SetCurrLoc(10,112);
DisplayPYStr(p,2);
}
}
return(0);
}
//-----------------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -