89 lines
2.3 KiB
C
89 lines
2.3 KiB
C
#ifndef MYWIN_INPUT_H__
|
||
#define MYWIN_INPUT_H__
|
||
|
||
// 定义最大输入字符数
|
||
#define INPUT_WORDS_MAXNUM 256
|
||
|
||
// 定义输入法状态
|
||
#define INPUT_MODE_PINYIN 0
|
||
#define INPUT_MODE_BIG 1
|
||
#define INPUT_MODE_MINI 2
|
||
#define INPUT_MODE_NUM 3
|
||
#define INPUT_MODE_SYMBOL 4
|
||
|
||
typedef struct {
|
||
int x;
|
||
int y;
|
||
int x_size;
|
||
int y_size;
|
||
int press;
|
||
char txt[10];
|
||
} INPUT_ButtonStruct;
|
||
|
||
typedef struct {
|
||
WIN_WindowStruct win;
|
||
int pinyin_y; // 拼音的显示坐标
|
||
int button_ysize; // 按键Y轴方向的尺寸
|
||
int exit; // 把此项设为1,输入法返回
|
||
int press_x; // 屏幕按下时的坐标
|
||
int press_y;
|
||
int press_down_index; // 处于按下状态的键值索引
|
||
int press_down_index_word; // 处于按下状态的候选字索引
|
||
int word_page; // 候选字翻页
|
||
int num_symbol_page; // 数字字符翻页
|
||
uint8_t *word_const; // 候选字待选数组
|
||
int inputMode; // 输入法状态,0,拼音,1,大写,2,小写,3,数字,4,符号
|
||
char inputPinyin[10]; // 输入的拼音
|
||
char candidateWord[3]; // 候选字;
|
||
INPUT_ButtonStruct word[10]; // 候选字按键
|
||
char inputWords[INPUT_WORDS_MAXNUM]; // 输入的字符
|
||
INPUT_ButtonStruct button[37];
|
||
} WIN_InputStruct;
|
||
|
||
// 在堆中创建一个输入法
|
||
WIN_InputStruct *WIN_CreatInput(WIN_WindowStruct *base,
|
||
void (*msgLoop)(struct _WIN_WindowStruct *win,
|
||
WIN_MsgStruct *msg),
|
||
int x, int y, int x_size, int y_size);
|
||
|
||
// 键盘切换至字母大写
|
||
void INPUT_SetToAscBig(WIN_InputStruct *input);
|
||
|
||
// 键盘切换至字母小写
|
||
void INPUT_SetToAscMini(WIN_InputStruct *input);
|
||
|
||
// 键盘切换至数字
|
||
void INPUT_SetToNum(WIN_InputStruct *input);
|
||
|
||
// 按键按下
|
||
void INPUT_SetPressDown(WIN_InputStruct *input);
|
||
|
||
// 按键抬起
|
||
void INPUT_SetPressUp(WIN_InputStruct *input);
|
||
|
||
// 添加拼音
|
||
void INPUT_PinYinAppend(WIN_InputStruct *input);
|
||
|
||
// 拼音截短
|
||
void INPUT_PinYinCut(WIN_InputStruct *input);
|
||
|
||
// 输入字符截短
|
||
void INPUT_WordCut(WIN_InputStruct *input);
|
||
|
||
// 追加输入字符
|
||
void INPUT_WordAppend(WIN_InputStruct *input);
|
||
|
||
// 查询候选字符
|
||
void INPUT_FindWord(WIN_InputStruct *input);
|
||
|
||
// 默认绘制函数
|
||
void INPUT_DefaultPaint(WIN_InputStruct *input);
|
||
|
||
// 默认消息处理函数
|
||
void INPUT_DefaultMsgLoop(WIN_InputStruct *input, WIN_MsgStruct *msg);
|
||
|
||
// 使用键盘输入一些数据
|
||
int INPUT_KeyBoard(WIN_WindowStruct *win, char *txt, int len);
|
||
|
||
#endif
|