📄 main.c
字号:
if(edit_0_state)
{
if(!numbers_input_state)
{
edit_0_state=0;
edit_1_state=0;
edit_2_state=1;
j=1;n=10;//默认选择第一个标点符号,总数为10
biaodian_process0: biaodian_process(page,hanzi_buf,bd_bj,bd_qj);//标点符号输入处理
goto display_process3;
}
}
goto wait_for_input;
//-------------------------------------------------------------------------
//数字键处理
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
//-------------------------------------------------------------------------
//if() //笔画输入时
//......
//goto display_process3;
if(english_input_state)//英文输入处理
{
if(edit_0_state)
{
english_letters(c,hanzi_buf);
n=6;
if(c=='7'||c=='9')n=8;
j=1;
edit_0_state=0;
edit_1_state=0;//英文输入下不存在这个状态
edit_2_state=1;
goto display_process3;//状态栏汉字,标点符号及英文显示
}
}
if(chinese_input_state)//中文编辑0状态或中文编辑1状态处理
{
if(edit_0_state)
{
edit_0_state=0;
edit_1_state=1;//编辑0状态清除编辑1状态置位
}
*numbers_p++ = c;
*numbers_p ='\0';
//暂存数字键输入 末尾加'\0' 以备下次发送
}
//--------------------------------------------
display_process0: m=lcd_num2pinyin(numbers, pinyin_buf);//数字串取拼音
if((m&0x80)==0x80)//无效数字被液晶丢弃时,对输入缓存的处理
{
*(--numbers_p)='\0';
m=m&0x7f;
}
display_process1: pinyin_display(i,m,pinyin_buf);//拼音串显示
//--------------------------------------------
display_process2: n=lcd_pinyin2hz(page, pinyin_buf[i],hanzi_buf);//拼音串取汉字
//--------------------------------------------
display_process3: if(edit_1_state)
j=0;
if(edit_2_state)
if(j>n)
j=1;//如果翻页后汉字总数n小于10个
hanzi_display(j,hanzi_buf);//状态栏汉字,标点符号及英文显示
goto wait_for_input;
//-------------------------------------------
//功能键处理
case 'e':
//前移
if(edit_1_state)
{
page = 1;//防止拼音选择时页码过多取到空白汉字的情况
if(i==0||i>=m)i=m-1;
else if(i>0&&i<m)i--;//拼音选择UP
goto display_process1;
}
if(edit_2_state)
{
if(j==1)j=n;
else if(j>1)j--;//汉字,英文,标点符号 前移选择
goto display_process3;
}
if(edit_0_state)
{
if(save_p==save_buf)
goto wait_for_input;
if(save_p==(save_buf+1))
{
if(*(--save_p)!='\0')
edit_3_state=1;//插入字符状态
goto wait_for_input0;
}
if(save_p>(save_buf+1))
{
if((*(save_p-1)>0x80)&&(*(save_p-2)>0x80))
save_p-=2;//若为汉字,光标移动2个字节
else if(*(save_p-1)<0x80)
save_p--;//半角字符,光标移动1个字节
edit_3_state=1;//插入字符状态
}
wait_for_input0: virtual_screen=which_screen(save_p,save_buf);
}
goto wait_for_input;
//-------------------------------------------
case 'd':
//后移
if(edit_1_state)
{
if(i>=(m-1))i=0;
else if(i<(m-1))i++;//拼音选择DOWN
page = 1;//防止拼音选择时页码过多取到空白汉字的情况
goto display_process1;
}
if(edit_2_state)
{
if(j>=n)j=1;
else if(j<n)j++;//汉字,英文,标点符号 后移选择
goto display_process3;
}
if(edit_0_state)//光标后移
{
if(*save_p=='\0')
*(++save_p)=0x20;//光标后移,赋值为空格
else
{
if((*(save_p)>0x80)&&(*(save_p+1)>0x80))
save_p+=2;
else if(*save_p<0x80)
save_p++;
if(*save_p=='\0')
edit_3_state=0;
}
virtual_screen=which_screen(save_p,save_buf);
}
goto wait_for_input;
//-------------------------------------------
case 's':
//前页
if(edit_0_state)
{
if(virtual_screen>0)
virtual_screen--;
goto wait_for_input;
}
if(edit_4_state)
if(page>1)
{
page--;//翻页选择汉字、标点符号
goto biaodian_process0;
}
if(edit_1_state||edit_2_state)
if(chinese_input_state)
if(page>1)
{ page--;//翻页选择汉字、标点符号
goto display_process2;//状态栏汉字获取、显示
}
goto wait_for_input;
//-------------------------------------------
case 'f':
//后页
if(edit_0_state)
{
if(virtual_screen<2)
virtual_screen++;
goto wait_for_input;
}
if(edit_4_state)
{
if((hanzi_buf[18]=='\0')||(page>=10))page=1;//翻页到头返回
else page++;
goto biaodian_process0;
}
if(edit_1_state||edit_2_state)
{
if(chinese_input_state)
{
if((hanzi_buf[18]=='\0')||(page>=10))
page=1;//所有翻页限制//翻页到头返回
else if((page>=1)&&(page<10))
page++;//翻页选择汉字+
goto display_process2;
}
}
goto wait_for_input;
//-------------------------------------------
case 0x0d:
//确定键 输入处理
if(edit_0_state)//进行输入法切换
{
lcd_cursor(0,3);
lcd_string(0,"1.英文 2.数字 3.中文");
lcd_cursor(0,4);
lcd_string(0,"4.退出 5.全角 6.半角");
c=getchar();
if(c=='4'||c=='f')goto option;
if(c=='5')edit_5_state=1;
if(c=='6')edit_5_state=0;
if(c=='1'||c=='e')//英文输入状态
{
chinese_input_state = 0;
english_input_state = 1;
numbers_input_state = 0;
}
else if(c=='2'||c=='d')//数字输入状态
{
chinese_input_state = 0;
english_input_state = 0;
numbers_input_state = 1;
}
else if(c=='3'||c=='s')//中文输入状态
{
chinese_input_state = 1;
english_input_state = 0;
numbers_input_state = 0;
}
lcd_cursor(0,3);
lcd_clear_bytes(40);//消去状态栏显示
goto wait_for_input;
}
if(edit_1_state)//选择汉字
{
edit_1_state=0;
edit_2_state=1;//汉字被选择的状态
j=1;//默认第一个汉字反黑,表示被选择
goto display_process3;
}
enter_input_proceess1: if(edit_2_state)//取选择汉字到save_buf,并在编辑区显示
{
save_p=edit_save_send0(j,save_p,hanzi_buf,save_buf);//汉字保存在编辑区
edit_0_state_start: for(c=0;c<6;c++)
numbers[c]='\0';
edit_0_state_start1: lcd_cursor(0,3);
lcd_clear_bytes(40);//消去状态栏显示
edit_0_state=1;
edit_1_state=0;
edit_2_state=0;
edit_4_state=0;
numbers_p = numbers;
i=0;j= 0;page=1;
virtual_screen=which_screen(save_p,save_buf);
}
goto wait_for_input;
//-------------------------------------------
case 0x08:
//退格键输入处理undo;
if(edit_0_state)//退格时save_p变化引起screen的变化
{
if(save_p==save_buf)goto wait_for_input;
if((*(save_p-1)>0x80)&&(*(save_p-2)>0x80)&&(save_p>(save_buf+1)))
{
if(edit_3_state)
save_p=move_string(2,save_p);
else
{
*(--save_p)='\0';
*(--save_p)='\0';//退格定要删除
}
}
else if((*(save_p-1)<0x80)&&(save_p>save_buf))
{
if(edit_3_state)
save_p=move_string(1,save_p);
else
*(--save_p)='\0';//退格定要删除
}
virtual_screen=which_screen(save_p,save_buf);
goto wait_for_input;
}
if(edit_1_state)//字母被选择的状态
{
if(numbers_p<(numbers+2)||numbers_p>(numbers+6))//剩下最后一个拼音的时候
goto edit_0_state_start;
if(numbers_p>(numbers+1))
{
*(--numbers_p)='\0';
goto display_process0;
}
}
if(edit_2_state)//汉字被选择的状态
{
if(edit_4_state||english_input_state)
goto edit_0_state_start1;
edit_1_state=1;//字母被选择的状态
edit_2_state=0;
j=0;//取消反黑显示
goto display_process3;
}
goto wait_for_input;
//-------------------------------------------
default:
//lcd_cursor(0,0);
//lcd_string(0,"无效输入!\nswitch(c) {default:}");
goto edit_end_process;
}
edit_end_process:
goto edit_option;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -