注:IDE暂不支持列表框控件。
1. 在公共页上放置1个键盘控件
并添加收到数据事件
编写事件处理方法如下,此处F1为上一个,F2为下一下,F12为确认键
void Frm06::wMKeyboard8_vch_cb(uint16_t code, LvEvent e) {
string s((char*)e.user_data);
char c = s.c_str()[0];
if(c==1){//F1键
INDEV::encoderPrev();
}
else if(c==2){//F2键
INDEV::encoderNext();
}
else if(c==12){//F12键
INDEV::encoderEnter();
}
}
注:
1. 此处是经转换处理的键码,与标准键码不一样。具体键码表附后。
2:不要用普通按键进行模拟,因为模拟器下同时启用了键盘驱动,可能会导致一次按键,执行两次(编码器执行一次,键盘执行一次)。
3:测试输入框时,要限定可接受字符,不然也会将Fn输入。
2. 添加编码器索引
在目标页面中放置一些控件用于编码器控制,其控制顺序可通过设置【编码器索引】属性进行排序。
注:若索引为0,则不受编码器控制。
3. 启用扩展输入设备
在控件面板中任意位置右键,进入高级设置,启用扩展输入设备。
4. 编译测试
操作:按F1, F2, F12控制界面操作
5. 注意事项
a. 遇到下拉框、滑动轴控件时,点击【F12】,再用【F1】【F2】进行选择后,再次点击【F12】退出修改模式。
b. 遇到弧形进度条、滑块时,点击【F12】,再用【F1】【F2】进行选择后,再次点击【F12】退出修改模式。
c. 遇到输入框时,点击【F12】二次,显示输入法软键盘,再用【F1】【F2】选择到字符,点击【确认】则输入相应字符,输入完成后,移到【√】按钮【F12】退出修改模式。注:编码器暂不支持中文输入
d. 当调用内置对话框时,最好设置一下对话框关闭后要得到焦点的控件,如
wMButton1->saveEncoderFocus();//在提示框前调用
pm->getMessageBox("测试")->show();
e. 通过代码打开窗口时(通过内置对应事件处理为“在当前窗口上弹出新窗口”,已经在内部处理,不必加入下面代码),如
ENCODER::saveGroup();//保存一下编码器操作控件组
wMMButton131->saveEncoderFocus();//保存一下焦点控件
pm->open("Frm14", stt::constant::PageMode::MODAL, NULL);//弹出窗口
f. 同理,通过代码关闭窗口时(通过内置对应事件处理为“关闭当前窗口”,已经在内部处理,不必加入下面代码),如
ENCODER::restoreGroup();//恢复编码器操作的控件组
ENCODER::restoreFocus();//恢复焦点控件
pm->close("Frm14");//关闭窗口
6. 键码表(不考虑按下shift)
0 |
无 |
1~12 |
F1~F12 |
13~22 |
0~9 |
23~48 |
A~Z或a~z |
49 |
空格 |
50 |
+ |
51 |
- |
52 |
* |
53 |
/ |
54 |
= |
55 |
. |
56 |
~ |
57 |
[ |
58 |
] |
59 |
\ |
60 |
; |
61 |
' |
62 |
, |
63 |
ESC |