?? pinyinapp.c
字號:
/*
File: PinyinApp.c
Func: PinyinApp
Auth: Yingchen.Xie
Date: 2008-10-23
*/
#include "util/PinyinApp.h"
#include "util/plu.h"
#include "kernel/socket.h"
#if PINYIN
/* the English char that want to be displayed */
UINT8 InputEnglish = 0;
UINT8 InputMode = 0; // 0->Chinese 1->English 2->Number
/* display the current mode */
UINT8 DisMode[3] = {0};
/* key interrupt flag */
extern UINT8 key_int_flag;
/* key value */
extern UINT16 Vkey;
/* the buffer of the input letters */
UINT8 input_string[10] = {0};
/* letters index */
UINT8 input_index = 0;
/* the buffer of the Chinese characters which are stored in characters library */
UINT8 chinese_string[255] = {0};
UINT8 SelectNum[9] = {0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
/* roll row */
UINT8 roll_row = 0;
/* number index */
UINT8 num_index = 0;
/* the buffer of the Chinese characters which will be printing on the last row */
UINT8 print_string[6][19] = {0};
/* the buffer of the selected Chinese characters */
UINT8 need_string[21] = {0};
/* the selected Chinese characters index*/
UINT8 need_index = 0;
/* use to turnover the page */
UINT8 *page_str = chinese_string;
/* use to choose the different letters on the same key */
UINT8 F_value9 = 0;
UINT8 F_value8 = 0;
UINT8 F_value7 = 0;
UINT8 F_value6 = 0;
UINT8 F_value5 = 0;
UINT8 F_value4 = 0;
UINT8 F_value3 = 0;
UINT8 F_value2 = 0;
/* use to judge if press the shift key or not */
UINT8 F_shift = 0;
extern INT8 dispersion;
/**
* left key parse
*/
void key_left(UINT8 value)
{
UINT8 EBalanceBuf = 0x18, i = 0, disp_buf[33] = {0} ;
switch(value)
{
case 0x00:
trayAdjust = 1;
break;
case 0x02:
adjustFlag = 1;
break;
case 0x03:
Tgm_buf[0] = 0x18; //串口向Printer發命令
gm_SendData2();
break;
case 0x04:
TestPluAPP();
break;
case 0x05:
send(SOCKET_PRINTER, &EBalanceBuf, 1);
break;
case 0x06: //set time
SetTimeFlag = 1;
break;
case 0x07: //show time
TimeShowFlag = TimeShowFlag?0:1;
pcfLcd__Disp(0, 0x00, disp_buf, 33);
if(!TimeShowFlag)
{
showW(); //show weight
LcdDisPlu(1); //show plu
}
break;
}
}
/**
* copy string to output buffer
*/
void CopyString(UINT8 *str)
{
UINT8 len = strlen(str);
UINT8 n = 0;
memset(print_string[0],0,19);
memset(print_string[1],0,19);
memset(print_string[2],0,19);
memset(print_string[3],0,19);
memset(print_string[4],0,19);
memset(print_string[5],0,19);
for (n = 0; n < 6; n++)
{
memcpy(print_string[n], str, 18);
str += 18;
}
}
/**
* right key parse
*/
void key_right(UINT8 value)
{
static UINT8 CharPos = 0;
static UINT8 CharRow = 0;
switch (value)
{
case 0x19:
F_shift = (F_shift)?0:1;
break;
case 0x0D:
if(!F_shift)
{
if (InputMode == 0)
{
InputMode = 1;
strcpy(DisMode, "英");
}
else if(InputMode == 1)
{
InputMode = 2;
strcpy(DisMode, "數");
}
else if(InputMode == 2)
{
InputMode = 0;
strcpy(DisMode, "中");
}
}
else
{
if(InputMode == 1)
need_string[need_index++] = InputEnglish;
F_value9 = 0;
F_value7 = 0;
F_value6 = 0;
F_value5 = 0;
F_value4 = 0;
F_value8 = 0;
F_value2 = 0;
F_value3 = 0;
input_index = 0;
memset(input_string,0,10);
}
break;
case 0x21:
if (F_shift)
{
CharRow--; //up
if(CharRow < 0)
{
CharRow = 0;
}
}
break;
case 0x29:
if (F_shift)
{
CharRow++; //down
if(CharRow > 5)
{
CharRow = 0;
}
}
break;
case 0x30:
if (F_shift)
{
CharPos--; //left
if(CharPos < 0) CharPos = 0;
}
break;
case 0x31:
if (F_shift)
{
CharPos++; //right
break;
}
case 0x1a: //7
/* judge mode */
if (F_shift)
{
CharRow = 0;
/* spell mode */
switch (F_value7)
{
case 4: //重復按鍵時循環顯示字母
input_index--;
input_string[input_index] = 'p';
InputEnglish = 'p';
input_index++;
F_value7 = 0;
break;
case 0:
input_string[input_index] = 'p';
InputEnglish = 'p';
input_index++;
break;
case 1:
input_index--;
input_string[input_index] = 'q';
InputEnglish = 'q';
input_index++;
break;
case 2:
input_index--;
input_string[input_index] = 'r';
InputEnglish = 'r';
input_index++;
break;
case 3:
input_index--;
input_string[input_index] = 's';
InputEnglish = 's';
input_index++;
break;
default:
;
}
F_value7++;
}
else
{
if(InputMode == 0)
{
/* number mode */
num_index = 7;
/* input the Chinese character into the corresponding buffer by the value of the key press */
if(strlen(chinese_string) != 0)
{
need_string[need_index++] = print_string[CharRow][(num_index-1)*2];
need_string[need_index++] = print_string[CharRow][(num_index-1)*2+1];
}
/* at the end of a operation,reinitialize the corresponding buffers and flags */
memset(print_string,0,19);
memset(chinese_string,0,255);
memset(input_string,0,10);
CharRow = 0;
input_index = 0;
F_value7 = 0;
}
else if(InputMode == 2)
{
need_string[need_index++] = '7';
}
}
/* clean key flag*/
F_value8 = 0;
F_value9 = 0;
F_value6 = 0;
F_value5 = 0;
F_value4 = 0;
F_value3 = 0;
F_value2 = 0;
break;
case 0x1b: //8
if (F_shift)
{
CharRow = 0;
switch (F_value8)
{
case 3:
input_index--;
input_string[input_index] = 't';
InputEnglish = 't';
input_index++;
F_value8 = 0;
break;
case 0:
input_string[input_index] = 't';
InputEnglish = 't';
input_index++;
break;
case 1:
input_index--;
input_string[input_index] = 'u';
InputEnglish = 'u';
input_index++;
break;
case 2:
input_index--;
input_string[input_index] = 'v';
InputEnglish = 'v';
input_index++;
break;
default:
;
}
F_value8++;
}
else
{
if(InputMode == 0)
{
num_index = 8;
if(strlen(chinese_string) != 0)
{
need_string[need_index++] = print_string[CharRow][(num_index-1)*2];
need_string[need_index++] = print_string[CharRow][(num_index-1)*2+1];
}
memset(print_string,0,19);
memset(chinese_string,0,255);
memset(input_string,0,10);
CharRow = 0;
input_index = 0;
F_value8 = 0;
}
else if(InputMode == 2)
{
need_string[need_index++] = '8';
}
}
F_value7 = 0;
F_value9 = 0;
F_value6 = 0;
F_value5 = 0;
F_value4 = 0;
F_value3 = 0;
F_value2 = 0;
break;
case 0x1c: //9
if (F_shift)
{
CharRow = 0;
switch (F_value9)
{
case 4:
input_index--;
input_string[input_index] = 'w';
InputEnglish = 'w';
input_index++;
F_value9 = 0;
break;
case 0:
input_string[input_index] = 'w';
InputEnglish = 'w';
input_index++;
break;
case 1:
input_index--;
input_string[input_index] = 'x';
InputEnglish = 'x';
input_index++;
break;
case 2:
input_index--;
input_string[input_index] = 'y';
InputEnglish = 'y';
input_index++;
break;
case 3:
input_index--;
input_string[input_index] = 'z';
InputEnglish = 'z';
input_index++;
break;
default:
;
}
F_value9++;
}
else
{
if(InputMode == 0)
{
num_index = 9;
if(strlen(chinese_string) != 0)
{
need_string[need_index++] = print_string[CharRow][(num_index-1)*2];
need_string[need_index++] = print_string[CharRow][(num_index-1)*2+1];
}
memset(print_string,0,19);
memset(chinese_string,0,255);
memset(input_string,0,10);
CharRow = 0;
input_index = 0;
F_value9 = 0;
}
else if(InputMode == 2)
{
need_string[need_index++] = '9';
}
}
F_value8 = 0;
F_value7 = 0;
F_value6 = 0;
F_value5 = 0;
F_value4 = 0;
F_value3 = 0;
F_value2 = 0;
break;
case 0x22: //4
if (F_shift)
{
CharRow = 0;
switch (F_value4)
{
case 3:
input_index--;
input_string[input_index] = 'g';
InputEnglish = 'g';
input_index++;
F_value4 = 0;
break;
case 0:
input_string[input_index] = 'g';
InputEnglish = 'g';
input_index++;
break;
case 1:
input_index--;
input_string[input_index] = 'h';
InputEnglish = 'h';
input_index++;
break;
case 2:
input_index--;
input_string[input_index] = 'i';
InputEnglish = 'i';
input_index++;
break;
default:
;
}
F_value4++;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -