feat(keyboard): add user-defined modes (#2651)

As discussed in https://forum.lvgl.io/t/localized-keyboard-layouts/6734,
this adds further `..._USER_N` keyboard modes that can be used to
implemented more keyboard layouts for locales that need more than 4
layers.
This commit is contained in:
Johannes Marbach
2021-10-11 14:46:07 +02:00
committed by GitHub
parent 3b6a05e253
commit 7658f98e86
4 changed files with 17 additions and 3 deletions

View File

@@ -40,6 +40,7 @@
- feat(btnmatrix/keyboard): add option to show popovers on button press - feat(btnmatrix/keyboard): add option to show popovers on button press
- fix(types) LV_FORMAT_ATTRIBUTE now works with gnu version greater than 4.4 - fix(types) LV_FORMAT_ATTRIBUTE now works with gnu version greater than 4.4
- feat(event) add add LV_EVENT_CHILD_CREATED/DELETED - feat(event) add add LV_EVENT_CHILD_CREATED/DELETED
- feat(keyboard): add user-defined modes
## v8.0.2 (16.07.2021) ## v8.0.2 (16.07.2021)
- fix(theme) improve button focus of keyboard - fix(theme) improve button focus of keyboard

View File

@@ -22,7 +22,8 @@ The Keyboards have the following modes:
- `LV_KEYBOARD_MODE_TEXT_LOWER` Display lower case letters - `LV_KEYBOARD_MODE_TEXT_LOWER` Display lower case letters
- `LV_KEYBOARD_MODE_TEXT_UPPER` Display upper case letters - `LV_KEYBOARD_MODE_TEXT_UPPER` Display upper case letters
- `LV_KEYBOARD_MODE_TEXT_SPECIAL` Display special characters - `LV_KEYBOARD_MODE_TEXT_SPECIAL` Display special characters
- `LV_KEYBOARD_MODE_NUMBER` Display numbers, +/- sign, and decimal dot. - `LV_KEYBOARD_MODE_NUMBER` Display numbers, +/- sign, and decimal dot
- `LV_KEYBOARD_MODE_USER_1` through `LV_KEYBOARD_MODE_USER_4` User-defined modes.
The `TEXT` modes' layout contains buttons to change mode. The `TEXT` modes' layout contains buttons to change mode.

View File

@@ -98,18 +98,26 @@ static const lv_btnmatrix_ctrl_t default_kb_ctrl_num_map[] = {
1, 1, 1, 1, 1 1, 1, 1, 1, 1
}; };
static const char * * kb_map[5] = { static const char * * kb_map[9] = {
(const char * *)default_kb_map_lc, (const char * *)default_kb_map_lc,
(const char * *)default_kb_map_uc, (const char * *)default_kb_map_uc,
(const char * *)default_kb_map_spec, (const char * *)default_kb_map_spec,
(const char * *)default_kb_map_num, (const char * *)default_kb_map_num,
(const char * *)default_kb_map_lc,
(const char * *)default_kb_map_lc,
(const char * *)default_kb_map_lc,
(const char * *)default_kb_map_lc,
(const char * *)NULL, (const char * *)NULL,
}; };
static const lv_btnmatrix_ctrl_t * kb_ctrl[5] = { static const lv_btnmatrix_ctrl_t * kb_ctrl[9] = {
default_kb_ctrl_lc_map, default_kb_ctrl_lc_map,
default_kb_ctrl_uc_map, default_kb_ctrl_uc_map,
default_kb_ctrl_spec_map, default_kb_ctrl_spec_map,
default_kb_ctrl_num_map, default_kb_ctrl_num_map,
default_kb_ctrl_lc_map,
default_kb_ctrl_lc_map,
default_kb_ctrl_lc_map,
default_kb_ctrl_lc_map,
NULL, NULL,
}; };

View File

@@ -41,6 +41,10 @@ enum {
LV_KEYBOARD_MODE_TEXT_UPPER, LV_KEYBOARD_MODE_TEXT_UPPER,
LV_KEYBOARD_MODE_SPECIAL, LV_KEYBOARD_MODE_SPECIAL,
LV_KEYBOARD_MODE_NUMBER, LV_KEYBOARD_MODE_NUMBER,
LV_KEYBOARD_MODE_USER_1,
LV_KEYBOARD_MODE_USER_2,
LV_KEYBOARD_MODE_USER_3,
LV_KEYBOARD_MODE_USER_4,
}; };
typedef uint8_t lv_keyboard_mode_t; typedef uint8_t lv_keyboard_mode_t;