mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
Update lv_kb.c
Changed keyboard mapping to set a map copy for each keyboard shift state.
This commit is contained in:
parent
d9f80ecf1a
commit
90b8b3eb76
@ -32,40 +32,40 @@ static lv_res_t lv_kb_signal(lv_obj_t * kb, lv_signal_t sign, void * param);
|
||||
**********************/
|
||||
static lv_signal_cb_t ancestor_signal;
|
||||
/* clang-format off */
|
||||
static const char * kb_map_lc[] = {"1#", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "Bksp", "\n",
|
||||
static const char * const default_kb_map_lc[] = {"1#", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "Bksp", "\n",
|
||||
"ABC", "a", "s", "d", "f", "g", "h", "j", "k", "l", "Enter", "\n",
|
||||
"_", "-", "z", "x", "c", "v", "b", "n", "m", ".", ",", ":", "\n",
|
||||
LV_SYMBOL_CLOSE, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, ""};
|
||||
|
||||
static const lv_btnm_ctrl_t kb_ctrl_lc_map[] = {
|
||||
static const lv_btnm_ctrl_t default_kb_ctrl_lc_map[] = {
|
||||
LV_KB_CTRL_BTN_FLAGS | 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7,
|
||||
LV_KB_CTRL_BTN_FLAGS | 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
LV_KB_CTRL_BTN_FLAGS | 2, 2, 6, 2, LV_KB_CTRL_BTN_FLAGS | 2};
|
||||
|
||||
static const char * kb_map_uc[] = {"1#", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "Bksp", "\n",
|
||||
static const char * const default_kb_map_uc[] = {"1#", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "Bksp", "\n",
|
||||
"abc", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Enter", "\n",
|
||||
"_", "-", "Z", "X", "C", "V", "B", "N", "M", ".", ",", ":", "\n",
|
||||
LV_SYMBOL_CLOSE, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, ""};
|
||||
|
||||
static const lv_btnm_ctrl_t kb_ctrl_uc_map[] = {
|
||||
static const lv_btnm_ctrl_t default_kb_ctrl_uc_map[] = {
|
||||
LV_KB_CTRL_BTN_FLAGS | 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7,
|
||||
LV_KB_CTRL_BTN_FLAGS | 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
LV_KB_CTRL_BTN_FLAGS | 2, 2, 6, 2, LV_KB_CTRL_BTN_FLAGS | 2};
|
||||
|
||||
static const char * kb_map_spec[] = {"0", "1", "2", "3", "4" ,"5", "6", "7", "8", "9", "Bksp", "\n",
|
||||
static const char * const default_kb_map_spec[] = {"0", "1", "2", "3", "4" ,"5", "6", "7", "8", "9", "Bksp", "\n",
|
||||
"abc", "+", "-", "/", "*", "=", "%", "!", "?", "#", "<", ">", "\n",
|
||||
"\\", "@", "$", "(", ")", "{", "}", "[", "]", ";", "\"", "'", "\n",
|
||||
LV_SYMBOL_CLOSE, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, ""};
|
||||
|
||||
static const lv_btnm_ctrl_t kb_ctrl_spec_map[] = {
|
||||
static const lv_btnm_ctrl_t default_kb_ctrl_spec_map[] = {
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, LV_KB_CTRL_BTN_FLAGS | 2,
|
||||
LV_KB_CTRL_BTN_FLAGS | 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
LV_KB_CTRL_BTN_FLAGS | 2, 2, 6, 2, LV_KB_CTRL_BTN_FLAGS | 2};
|
||||
|
||||
static const char * kb_map_num[] = {"1", "2", "3", LV_SYMBOL_CLOSE, "\n",
|
||||
static const char * const kb_map_num[] = {"1", "2", "3", LV_SYMBOL_CLOSE, "\n",
|
||||
"4", "5", "6", LV_SYMBOL_OK, "\n",
|
||||
"7", "8", "9", "Bksp", "\n",
|
||||
"+/-", "0", ".", LV_SYMBOL_LEFT, LV_SYMBOL_RIGHT, ""};
|
||||
@ -77,6 +77,9 @@ static const lv_btnm_ctrl_t kb_ctrl_num_map[] = {
|
||||
1, 1, 1, 1, 1};
|
||||
/* clang-format on */
|
||||
|
||||
static const char * * kb_map[3] = { (const char * *)default_kb_map_lc, (const char * *)default_kb_map_uc, (const char * *)default_kb_map_spec };
|
||||
static const lv_btnm_ctrl_t * kb_ctrl[3] = { default_kb_ctrl_lc_map, default_kb_ctrl_uc_map, default_kb_ctrl_spec_map };
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
@ -126,8 +129,8 @@ lv_obj_t * lv_kb_create(lv_obj_t * par, const lv_obj_t * copy)
|
||||
|
||||
lv_obj_align(new_kb, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
|
||||
lv_obj_set_event_cb(new_kb, lv_kb_def_event_cb);
|
||||
lv_btnm_set_map(new_kb, kb_map_lc);
|
||||
lv_btnm_set_ctrl_map(new_kb, kb_ctrl_lc_map);
|
||||
lv_btnm_set_map(new_kb, kb_map[LC_KB_SHIFT_LOWER]);
|
||||
lv_btnm_set_ctrl_map(new_kb, kb_ctrl[LC_KB_SHIFT_LOWER]);
|
||||
|
||||
/*Set the default styles*/
|
||||
lv_theme_t * th = lv_theme_get_current();
|
||||
@ -200,10 +203,10 @@ void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode)
|
||||
|
||||
ext->mode = mode;
|
||||
if(mode == LV_KB_MODE_TEXT) {
|
||||
lv_btnm_set_map(kb, kb_map_lc);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl_lc_map);
|
||||
} else if(mode == LV_KB_MODE_NUM) {
|
||||
lv_btnm_set_map(kb, kb_map_num);
|
||||
lv_btnm_set_map(kb, kb_map[LC_KB_SHIFT_LOWER]);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl[LC_KB_SHIFT_LOWER]);
|
||||
} else if(mode == LV_KB_MODE_NUM) {
|
||||
lv_btnm_set_map(kb, (const char * *)kb_map_num);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl_num_map);
|
||||
}
|
||||
}
|
||||
@ -250,6 +253,18 @@ void lv_kb_set_style(lv_obj_t * kb, lv_kb_style_t type, const lv_style_t * style
|
||||
}
|
||||
}
|
||||
|
||||
void lv_kb_set_map(lv_obj_t * kb, lv_kb_shift_t shift, const char * map[])
|
||||
{
|
||||
kb_map[shift] = map;
|
||||
lv_btnm_set_map(kb, map);
|
||||
}
|
||||
|
||||
void lv_kb_set_ctrl_map(lv_obj_t * kb, lv_kb_shift_t shift, const lv_btnm_ctrl_t ctrl_map[])
|
||||
{
|
||||
kb_ctrl[shift] = ctrl_map;
|
||||
lv_btnm_set_ctrl_map(kb, ctrl_map);
|
||||
}
|
||||
|
||||
/*=====================
|
||||
* Getter functions
|
||||
*====================*/
|
||||
@ -336,16 +351,16 @@ void lv_kb_def_event_cb(lv_obj_t * kb, lv_event_t event)
|
||||
|
||||
/*Do the corresponding action according to the text of the button*/
|
||||
if(strcmp(txt, "abc") == 0) {
|
||||
lv_btnm_set_map(kb, kb_map_lc);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl_lc_map);
|
||||
lv_btnm_set_map(kb, kb_map[LC_KB_SHIFT_LOWER]);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl[LC_KB_SHIFT_LOWER]);
|
||||
return;
|
||||
} else if(strcmp(txt, "ABC") == 0) {
|
||||
lv_btnm_set_map(kb, kb_map_uc);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl_uc_map);
|
||||
lv_btnm_set_map(kb, kb_map[LC_KB_SHIFT_UPPER]);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl[LC_KB_SHIFT_UPPER]);
|
||||
return;
|
||||
} else if(strcmp(txt, "1#") == 0) {
|
||||
lv_btnm_set_map(kb, kb_map_spec);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl_spec_map);
|
||||
lv_btnm_set_map(kb, kb_map[LC_KB_SHIFT_SYMBOL]);
|
||||
lv_btnm_set_ctrl_map(kb, kb_ctrl[LC_KB_SHIFT_SYMBOL]);
|
||||
return;
|
||||
} else if(strcmp(txt, LV_SYMBOL_CLOSE) == 0) {
|
||||
if(kb->event_cb != lv_kb_def_event_cb) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user