菜单

修改系统键盘布局

下载
 

 

//1.定义宏:对应系统默认键盘上的一些控制键

#define SYMBOL_BACKSPACE "\xEF\x95\x9A" //退格

#define SYMBOL_CLOSE "\xEF\x80\x8D" //关闭

#define SYMBOL_OK "\xEF\x80\x8C" //确认

//其他本例中未用到的特殊键

#define SYMBOL_NEWLINE "\xEF\xA2\xA2"//换行

#define SYMBOL_HOME "\xEF\x80\x95" //HOME

#define SYMBOL_RIGHT "\xEF\x81\x94" //向右

#define SYMBOL_LEFT "\xEF\x81\x93" //向左

#define SYMBOL_KEYBOARD "\xEF\x84\x9C" //输入法选择

 

//2.定义新的键盘布局

static const char* keymap[] = {

"1","2","3",SYMBOL_BACKSPACE,"\n"//这几个键默认处理即可

, "4","5","6",SYMBOL_NEWLINE,"\n"//这几个键默认处理即可

, "7","8","9","space","\n"//space要特殊处理,输入时要换成" "

, "-","0","#FF0000 Cancel","#00FF00 OK",""//"#FF0000 Cancel"取消输入,"#00FF00 OK"确认输入 

};

 

//3.定义新的键盘按键属性

/**定义键盘按钮属性表

* 0x1 - 0x7 表示控件宽度(如本行四个按钮的宽度分别为:1,2,3,1,故总宽为7。那么第1个按钮宽度为总宽的1/7,第2个为2/7,第3个为3/7,第4个为1/7)

* 0x8 表示隐藏

* 0x10 按住时不重复输入

* 0x20 禁用

* 0x40 为开关按钮(点一下进入按下状态、再点一下进入弹起状态)

* 0x80 当前为按下状态

* 0x100 点击时发出值变化事件(默认为按下时发出值变化事件)

* 0x200 显示提示气泡

* 0x1000 文字重着色,如文字设为红色"#FF0000 Cancel"

* */

static uint16_t ctrlmap[] = {

1,1,1,1|0x0080

,1,1,1,1|0x0080

,1,1,1,1|0x0080

,1|0x0080,1,1|0x0080|0x1000,1|0x0080|0x1000

};

//效果图

//4.定义键盘处理函数

static bool func_customerkey(const char* txt) {

if(strcmp(txt,"space")==0) {

cout<<"todo yourself handler"<<endl;

return true;//返回true,则不再做内置功能(往文本框增加按键值)

}

return false;//返回false,则会调用默认的往文本框中增加内容

}

 

//5.加载时配置键盘布局及样式

void Frm19::onLoad() {

//关闭单行模式,即启用多行模式

wMText3->setOneLine(false);

//为文件框添加长按事件

wMText3->addEventCB(myfunc, stt::constant::Event::LONG_PRESSED, wMText3);//将文本框控件自身作为参数传入回调函数

//5.1.设为布局修改模式

wMText3->setImeMode(8);

//5.2.设置键盘按钮表

STTTextArea::setCustomKey(keymap);

//5.3.设置键盘按钮属性表

STTTextArea::setCustomKeyCtrl(ctrlmap);

//5.4.设置自定义键盘处理函数

STTTextArea::setCustomKeyHandler(func_customerkey);

//5.5.设置特殊键

STTTextArea::setCustomSpecialKey("space"," ",0);//"space"键转换为" "

STTTextArea::setCustomSpecialKey("#FF0000 Cancel",SYMBOL_CLOSE,1);//"#FF0000 Cancel"键转换为SYMBOL_CLOSE

 STTTextArea::setCustomSpecialKey("#00FF00 OK",SYMBOL_OK,2);//"#00FF00 OK"键转换为SYMBOL_OK

}

示例工程:git clone https://gitee.com/clawclaw/sttkeyboard.git

 

 

最近修改: 2025-07-09Powered by