⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uisw_kbd.h

📁 嵌入工linux开发的源码
💻 H
字号:
/*********************************************************************/
//	文 件 名:	uiSw_Kbd.h
//	程序说明:	键盘管理和键盘控件
//	程序设计:	党德华
//				2001.10.26		设计完成		说明文档:R004-S211-0001
//		宋军霞	2002.02.02		增加键盘复位功能
//		宋军霞	2002.06.07		更正键盘控件结构中候选字存储区不对齐的问题
//	程序审查:	宋军霞
//				2002.01.22		审查完成		说明文档:R004-S211-0001
//	项目编号:	R004-S211
//	版	  本:	V1.0
//	版    权:	Reality Plus Technology (ShenZhen) Co.,Ltd.
/*********************************************************************/
#ifndef _GUI_SWKBD_H
#define _GUI_SWKBD_H

#include <pr2k.h>
#include <typedefine.h>
#include <uiControl.h>

// 特殊按键
#define KEY_BACKSPACE	0x0008	// 退格键
#define KEY_SPACE		0x0020	// 空格键
#define KEY_TAB			0x0009	// 制表键
#define KEY_ENTER		0x000D	// 回车键
#define KEY_DELETE		0x0006	// 删除键

/* ============================================================================ */
//	系统键盘管理
/* ============================================================================ */
// 键盘输入信息的添加方式
#define INPUT_MODE_ADD			0	// 添加到光标所在位置
#define INPUT_MODE_REPLACE_1	1	// 替换光标前的第一个字符
#define INPUT_MODE_REPLACE_2	2	// 替换光标前的第二个字符

//各个键盘处理的回调函数
typedef void (*PF_KBD_ACTION)(HNDL handle,WORD message,WORD x,WORD y);
typedef void (*PF_KBD_START)(HNDL handle);
typedef void (*PF_KBD_END)(HNDL handle);
typedef void (*PF_KBD_SHOW)(HNDL handle,int region,WORD *buffer);

// 键盘信息数据结构
#define SWKBD_MAX_NAME_SIZE         16		// 键盘名称最大字符数
#define GUI_KBDINFO_CHECK_FLAG		8221	// 键盘有效检查标志
typedef struct tagKbd_Info
{
	BYTE            bClass;							// 键盘类型,如中、英等
	char            szName[SWKBD_MAX_NAME_SIZE+1];	// 键盘名称,如“拼音”、“五笔”等
	short			checkFlag;						// 键盘有效性检查标志
	BYTE			*paBmp;							// 键盘图片数据指针
	PF_KBD_ACTION   actionFun;						// 回调函数:消息响应
	PF_KBD_START	startFun;
	PF_KBD_END		endFun;
	PF_KBD_SHOW		showFun;
}TKbd_Info;

// 引用外部的全局变量
extern const WORD gGUI_MAX_KBD;			// 最大可安装键盘数,在uiUser_Kbd.cpp中定义
extern TKbd_Info *gpKbd_Info;			// 键盘信息,在uiSw_Kbd.cpp中定义

// 初始化键盘信息
DLL_EXP(STATUS) guiKbd_Init(void);

// 增加一个新键盘
DLL_EXP(STATUS) guiKbd_Add(TKbd_Info *pKbd_Info);

// 获取下一个有效键盘的编号
DLL_EXP(STATUS) guiKbd_GetNext(WORD oldType, WORD *newType);

// 获取与当前键盘类型相同的下一个有效键盘的编号
DLL_EXP(STATUS) guiKbd_GetNextInType(WORD oldType, WORD *newType);

//获取键盘的大小
DLL_EXP(STATUS) guiKbd_GetSize(WORD type, WORD *width, WORD *height);	

//获取键盘名称
DLL_EXP(STATUS) guiKbd_GetName(WORD type,char *name);

//获取已安装的键盘数
DLL_EXP(WORD)	guiKbd_GetNum(void);

// 将键盘上的输入信息发送到GUI系统
DLL_EXP(void)   guiKbd_SendMsg(HNDL handle,short sendCode,BYTE mode);

// 获取某一类键盘中的一个有效键盘的编号
DLL_EXP(STATUS) guiKbd_GetType(BYTE bClass, WORD *type);

// 获取键盘的类型
DLL_EXP(STATUS) guiKbd_GetClass(WORD type, BYTE *bClass);

// 检查键盘编号的合法性
DLL_EXP(STATUS) guiKbd_CheckType(WORD type);

// 获取键盘位置指针
DLL_EXP(STATUS) guiKbd_GetBmp(WORD type,int *paBmp);

/* ============================================================================ */
//	键盘控件
/* ============================================================================ */
// 键盘控件数据结构
#define MAX_INPUT_STR_NUM           7		// 中文输入法中的最大输入字符数
#define HWR_MAXCHAR_NUM          	20		// 手写识别中的最大候选字数
typedef struct tagGuiSw_Kbd					// 108 Bytes
{
	TGuiControl    base;                   			//基本属性
	 					
	char           InputStr[MAX_INPUT_STR_NUM+1];   //保存输入的字符串
	DWORD          Offset;                          //重码字开始位置
	WORD           TotalNum;                        //重码字个数
	WORD           StartPos;                 		//显示区中字符在重码字中的相对位置
	int            SelPos;                			//扩展属性,可作为一个变量使用

	WORD           HWR_Buf1_Num;                    //手写1区域候选字个数
	WORD           HWR_Buf2_Num;                    //手写2区域候选字个数
	WORD           HWR_Buf3_Num;                    //手写3区域候选字个数
	char           HWR_Buf1[HWR_MAXCHAR_NUM+2];    	//手写1区域候选字
	char           HWR_Buf2[HWR_MAXCHAR_NUM+2];    	//手写2区域候选字
	char           HWR_Buf3[HWR_MAXCHAR_NUM+2];    	//手写3区域候选字
	char           First_Stroke1;
	char           First_Stroke2;
	char           First_Stroke3;
}TGuiSw_Kbd;

typedef struct tagSwKbd_Coor
{
	WORD		left;	// 座标
	WORD		top;
	WORD        right;
	WORD        bottom;
	WORD 	    code;	//代码
}TSwKbd_Coor;
#define KEY_KBD_END	0x0ffff		// 键盘座标和代码信息结束码

// 创建一个键盘控件
DLL_EXP(HNDL)   guiSwKbd_Create(WORD left, WORD top, WORD Type);

// 切换到下一个有效键盘
DLL_EXP(STATUS) guiSwKbd_SwitchToNext(HNDL handle);

// 切换到与当前键盘类型相同的下一个有效键盘
DLL_EXP(STATUS) guiSwKbd_SwitchToNextInType(HNDL handle);

// 切换到另一类型的键盘
DLL_EXP(STATUS) guiSwKbd_SwitchClass(HNDL handle, BYTE bClass);

// 设定当前键盘为指定的键盘
DLL_EXP(STATUS) guiSwKbd_SetType(HNDL handle, WORD type);

// 获取键盘当前的键盘类型和编号
DLL_EXP(STATUS) guiSwKbd_GetType(HNDL handle, BYTE *bClass ,WORD *type);

// 搜索笔点的键盘位置
DLL_EXP(int) guiSwKbd_SearchPos(TSwKbd_Coor const *tSwKbd_Coor, WORD x, WORD y);

// 复位窗口中的键盘
DLL_EXP(void) guiSwKbd_Reset(HNDL handle);

/* ============================================================================ */
//	用户键盘管理
/* ============================================================================ */
// 用户键盘分类,类型码必须为BYTE类型
#define KBDCLASS_ENGLISH		0
#define KBDCLASS_CHINESE		1
#define KBDCLASS_SYMBOL			2
#define KBDCLASS_HAND			3
#define KBDCLASS_NUMERIC		4
#define KBDCLASS_CHT     		5

// 用户键盘常数,常数的数值必须与键盘加入的序号相对应
#define KBD_HAND         	    0   // 手写
#define KBD_ENGLISH             1   // 英文小写
#define KBD_ENGLISH_CAP         2   // 英文大写
#define KBD_CHINESE_PY			3   // 中文拼音
#define KBD_CHINESE_WB			4   // 中文五笔 
#define KBD_CHINESE_MAKEWORD	5   // 简体造字
#define KBD_CHT_ZY				6   // 符号
#define KBD_CHT_CJ				7   // 符号
#define KBD_CHT_MAKEWORD	    8   // 繁体造字    
#define KBD_SYMBOL				9   // 符号
//#define KBD_NUMERIC			8	// 数字

// 定义用户键盘中的几个特殊功能键
#define KEY_CHINESE				0x0300	// 切换(到)中文键盘
#define KEY_ENGLISH				0x0301	// 切换(到)英文键盘
#define KEY_SYMBOL				0x0302	// 切换(到)符号键盘
#define KEY_HAND				0x0303	// 切换(到)手写键盘
#define KEY_IMECODE				0x0304	// 拼音或五笔编码输入区
#define KEY_CANDIDATE			0x0305	// 候选区
#define KEY_CANDIDATE2			0x0306	// 第2个候选区
#define KEY_LEFT				0x0307	// 左箭头
#define KEY_RIGHT				0x0308	// 右箭头
#define KEY_CAPSLOCK			0x0309	// 大写/小写或拼音/五笔切换
#define KEY_HANDREGION			0x030A	// 手写区
#define KEY_NUMERIC				0x030B	// 切换(到)数字键盘
//#define KEY_MAKEWORD			0x030C	// 造字键盘切换(到)
#define KEY_SWITCHMKWORD		0x030D	// 造字键盘切换(到)

#define  CJ_KEY_BACKSPACE       0x0400
#define  CJ_KEY_DELETE          0x0401
#define  CJ_KEY_ENTER           0x0402
#define  CJ_KEY_SPACE           0x0403


// 用户键盘初始化,本函数为GUI系统的回调函数,用户不可以删除它,但可以根据规则来修改它的内容
STATUS guiKbd_UserInit(void);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -