📄 实用的源码.c
字号:
} //清完一个后,且换行,有空位,清掉该标志
} //当需要换行时
lcdx=x;lcdy=y;
xszfhz('_',0); //显示光标
} //删除的是字母
goto bzpyinputyw; //返回重新输入
case 20:
return inputlen; //当按确认键返回时,返回输入数量
default:
qdcx();
goto bzpyinputyw;
} //键值处理
bzpyinputyw1: //正确显示字母后,通过提供信息选择
if((keyi==1)||(keyi==7)||(keyi==9)){
lcdx=24;lcdy=96;
xsstr(pystry[keyi],0,5); //显示5个可选字母
lcdx=24+fxi;lcdy=96;
xsstr(pystry[keyi]+fxi,1,1); //将所选字母返显
lcdy=96;
lcdx=16; //和显示特殊字符首址一样
xsnkb(8); //若提示信息前有其它,清掉
} //有5个字母可选,
else if(keyi==0){ //特殊符号提示
lcdx=16;lcdy=96;
xsstr(pyfhy,0,13); //显示特殊符号
lcdx=16+fxi;lcdy=96;
xsstr(pyfhy+fxi,1,1); //将所选的特殊符号反显
} //特殊符号提示
else { //四个字符的显示
lcdx=25;lcdy=96;
xsstr(pystry[keyi],0,4); //显示四个字母的提示
lcdx=25+fxi;lcdy=96;
xsstr(pystry[keyi]+fxi,1,1); //反显所选字母
lcdy=96;
lcdx=16; //和显示特殊字符首址一样
xsnkb(9); //若前面有信息,将之清掉
} //四个字符的显示
bzpyinputyw2: //选择字母无效,反回来重新选择
key=rbkey();
switch(key){//选择提示的字母
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
if((keyi==1)||(keyi==7)||(keyi==9)){
if((key>0)&&(key<6)) break; //当选择12345时,正常
} //如果为5个显示字母
else if(keyi>0) { //不是第一种情况,且大于0,即是正常四个字母显示
if((key>0)&&(key<5)) break;
} //正常的四个字母显示
else { //当为0时,即为特殊字符
if(key>0) break; //特殊字符是,1到9都有效,
}//当为0时,即为特殊字符
qdcx();
goto bzpyinputyw2; //不满足以上条件时,即为无效数字,长响,返回
case 16:
if(bzpy<2) bzpy++;
else bzpy=0; //如果小于2,则加1,否则为0,返回到数字输入
lcdx=2;lcdy=96;
xsnkb(0); //将后面的部分全部显示空格
goto bzpyinput1; //重新显示中文或英文
case 17: //取消键,清掉当前字母提示,返回秤新输入
lcdx=2;lcdy=96;
xsnkb(0);
goto bzpyinputyw; //返回去重新开始英文输入
case 18: //左方向键
if(fxi>0) fxi--;
else qdcx(); //如果到头,则不动
goto bzpyinputyw1; //回去重新选择
case 19: //右方向键
if((keyi==1)||(keyi==7)||(keyi==9)){
if(fxi<4) fxi++; //5字母提示,01234
else fxi=0;
} //如果为5个显示字母
else if(keyi>0) { //不是第一种情况,且大于0,即是正常四个字母显示
if(fxi<3) fxi++; //当为四个字母显示时,0 123
else fxi=0;
} //正常的四个字母显示
else { //当为0时,即为特殊字符
if(fxi<12) fxi++; //0123456789 10 11 12
else fxi=0;
}//当为0时,即为特殊字符
goto bzpyinputyw1; //回去重新显,并显法标标位置
case 20: //确认键,直接进入下一列模拟数字选择,修改KEY
key=fxi+1; //和数字键选择相当
break;
default:
qdcx();
goto bzpyinputyw1; //重新选择字母
} //选择提示的字母
bzpyinputywz: //正确选择字母后,作上屏显示结果结果在KEYI和key中
if(inputlen>len-1){ //如果已经输入够数,再按数字键,不予处理
qdcx();
lcdx=2;lcdy=96;
xsnkb(0); //将原来显示的提供信息清掉,进入下一个字母的显示
goto bzpyinputyw;
} //如果已经输入够数,再按数字键,不予处理
lcdx=x;lcdy=y;
key--;
if(keyi>0){//正常的数字键,不是特殊符号
pbuf[inputlen]=*(pystry[keyi]+key);
xsstr(pystry[keyi]+key,0,1); //在指定位置显示
} //正常的数字键,不是特殊符号
else { //特殊的数字符号
pbuf[inputlen]=*(pyfhy+key);
xsstr(pyfhy+key,0,1); //显示特殊符号
} //特殊的数字符号
bzpyinputywz1: //用在+-*/.号的直接处理
x=lcdx;y=lcdy; //重新取回输入的汉字
xszfhz('_',0); //显示光标
inputlen++; //记数自动加1
lcdx=2;lcdy=96;
xsnkb(0); //将原来显示的提供信息清掉,进入下一个字母的显示
goto bzpyinputyw; //进入下一个字母的选择
}//为英输入法
else {//当为2时,为拼音输入,如果以后增加,则改成else if
bzpyinputpy: //拼音输入跳转位
key=rbkey();
bzpyinputpyd: //动态显示汉字时,再输入字母
switch(key){ //拼音输入键处理
case 0: //特殊符号,直接进入汉字选择状态,和汉字一样处理
pch=pyfh; //显示符号将首指针找到,相相于拼音输入找到
pyi=1; //保证按取消键时,清掉
fxi=0; //方向键初始化为0
fyi=0; //分页键初始化为0
goto bzpyhz2; //直接进入汉字选择状态
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
keyi=key; //保存字母序列
fxi=0; //初始化方向标志为0
break;
case 16:
if(bzpy<2) bzpy++;
else bzpy=0; //如果小于2,则加1,否则为0,返回到数字输入
goto bzpyinput1; //重新显示中英文方式
case 17: //取消键,每按一次,当前位置的输入将删除
lcdx=x;lcdy=y;
xszfhz(' ',0); //显示一个空格,将原来的光标清掉
if(inputlen<1) return 0; //如果一个字母也没有输入,取消键退出
inputlen--; //总长度自动减1
if(pbuf[inputlen]>0xa0){
pbuf[inputlen]=0x20; //给一个空格
inputlen--;
pbuf[inputlen]=0x20; //给一个空格
if(x>1) x-=2;
else {
y-=16;
x=28;
key=1;
key=key<<(y/16); //借用KEY暂存位比较值 因后面没有用KEY值
if(linestate&key){
x--; //当有空格时,X值再减1
linestate=linestate^key; //异或,清掉该位
} //清完一个后,且换行,有空位,清掉该标志
} //当换行时
lcdx=x;lcdy=y;
xszfhz('_',0); //显示光标
xszfhz(' ',0);
} //即要删除的是汉字
else {
pbuf[inputlen]=0x20; //给一个空格
if(x>0) x--;
else {
y-=16;
x=29;
key=1;
key=key<<(y/16); //借用KEY暂存位比较值 因后面没有用KEY值
if(linestate&key){
x--; //当有空格时,X值再减1
linestate=linestate^key; //异或,清掉该位
} //清完一个后,且换行,有空位,清掉该标志
} //当需要换行时
lcdx=x;lcdy=y;
xszfhz('_',0); //显示光标
} //删除的是字母
goto bzpyinputpy; //返回重新输入
case 20: //确认键处理,当输入拼音时,完成,当没有时,作编辑完成
if(pyi>0) goto bzpyhz1; //字母输入完毕,开始查找汉字
else{
return inputlen; //返回输入长度
} //完成汉字输入,对输入汉字进行处理
default:
qdcx();
goto bzpyinputpy; //当不是有效键时,长响,重新输入
} //拼音输入键处理
//输入字母键,下面为选择字母
bzpyinputpy1: //拼音输入字母选择
lcdx=9;lcdy=96;
xsnkb(16); //字母选择前清掉
lcdx=25;lcdy=96;
xsstr(pystrp[keyi],0,4); //显示字母提供
lcdy=96;
if((keyi==7)||(keyi==9)){
lcdx=fxi+25;
xsstr(pystrp[keyi]+fxi,1,1);
} //当为四个字母地,
else {
lcdx=fxi+26; //三个字母,向后一个位置
xsstr(pystrp[keyi]+fxi+1,1,1);
}//当为三个字母显示时
key=rbkey(); //有字母提供,按键选择
switch(key){//选择字母
case 1:
case 2:
case 3:
case 4:
bzpyinputpy2: //通过确认键选择的,转到此处处理
if((keyi==7)||(keyi==9)) key--; //当显示四个字母时,从0开始取地址,
else if(key==4) {
qdcx();
goto bzpyinputpy1; //重新选择数字键
} //当显示三个字母时,输入4无效,应长响
pybuf[pyi]=pystrp[keyi][key]; //取出输入的字母
pyi++; //下一次取字,就放在下一个位置
lcdx=2;lcdy=96;
xsstr(pybuf,0,6); //显示输入字母
lcdx=14;lcdy=96;
xsnkb(0); //将后面显示的清掉
goto bzpyhz1; //每输入一个字母,均进行一次比较,显示
case 16:
if(bzpy<2) bzpy++;
else bzpy=0; //如果小于2,则加1,否则为0,返回到数字输入
lcdx=2;lcdy=96;xsnkb(0); //跳回之前将显示的提示清掉
goto bzpyinput1; //重新显示中英文方式
case 17: //当按取消键时,取消本次输入
if(pyi<1){
lcdx=14;lcdy=96;xsnkb(0); //清掉显示的字母提示
goto bzpyinputpy; //清掉显示的字母,返回重新输入,
} //当按取消键时,一个字母也没有输入,则清掉,返回去重新显示
else goto bzpyhz1; //重新进入汉字提示状态
case 18: //向左方向键
if(fxi>0) fxi--;
else qdcx();
goto bzpyinputpy1; //回去重新选择字母
case 19: //向右方向键
if((keyi==7)||(keyi==9)){
if(fxi<3) fxi++; //实际显示的位置还是0123
else fxi=0; //如果转一圈,则为1
}//如果为四个字母显示
else {
if(fxi<2) fxi++; //实际显示的位置还是012
else fxi=0;
} //三个字母显示
goto bzpyinputpy1; //回去重新选择字母
case 20: //确认键,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -