Now focus change in my side is ok, but I have another problem, dont know how to send pressed numerical key to selected text area. here is my code
void ta_key_event(lv_event_t * e)
{
lv_obj_t * ta = lv_event_get_target(e);
uint8_t key = lv_indev_get_key(lv_indev_get_act()) - 160;
lv_textarea_add_char(ta, key);
if (ta == window_Login.textareaPassword)
printf("t1,%c\n",key);
else if (ta == window_Login.textareaNewPassword)
printf("t2,%c\n",key);
else if (ta == window_Login.textareaOldPassword)
printf("t3,%c\n",key);
}
extern lv_indev_t * keypad_indev;
void createWindowLogin(void)
{
mainWindowCreate(&window_Login.mainWindow);
window_Login.boxLogin = lv_obj_create(window_Login.mainWindow.screen);
lv_obj_set_size(window_Login.boxLogin, 267, 80);
lv_obj_set_pos(window_Login.boxLogin, 267, 110);
lv_obj_set_style_pad_left(window_Login.boxLogin, 0, LV_PART_MAIN);
lv_obj_set_style_pad_top(window_Login.boxLogin, 0, LV_PART_MAIN);
lv_obj_set_style_border_width(window_Login.boxLogin, 1, 0);
lv_obj_set_scrollbar_mode(window_Login.boxLogin, LV_SCROLLBAR_MODE_OFF);
window_Login.labelPassword = lv_label_create(window_Login.boxLogin);
lv_label_set_text(window_Login.labelPassword, "Password:");
lv_obj_set_pos(window_Login.labelPassword, 10, 30);
window_Login.textareaPassword = lv_textarea_create(window_Login.boxLogin);
lv_obj_set_pos(window_Login.textareaPassword, 100, 20);
lv_obj_set_size(window_Login.textareaPassword, 140, 40);
lv_textarea_set_one_line(window_Login.textareaPassword, true);
window_Login.boxChangePassword = lv_obj_create(window_Login.mainWindow.screen);
lv_obj_set_size(window_Login.boxChangePassword, 267, 150);
lv_obj_set_pos(window_Login.boxChangePassword, 267, 250);
lv_obj_set_style_pad_left(window_Login.boxChangePassword, 0, LV_PART_MAIN);
lv_obj_set_style_pad_top(window_Login.boxChangePassword, 0, LV_PART_MAIN);
lv_obj_set_style_border_width(window_Login.boxChangePassword, 1, 0);
lv_obj_set_scrollbar_mode(window_Login.boxChangePassword, LV_SCROLLBAR_MODE_OFF);
window_Login.labelNewPassword = lv_label_create(window_Login.boxChangePassword);
lv_label_set_text(window_Login.labelNewPassword, "New Password:");
lv_obj_set_pos(window_Login.labelNewPassword, 10, 35);
window_Login.labelOldPassword = lv_label_create(window_Login.boxChangePassword);
lv_label_set_text(window_Login.labelOldPassword, "Old Password:");
lv_obj_set_pos(window_Login.labelOldPassword, 10, 90);
window_Login.textareaNewPassword = lv_textarea_create(window_Login.boxChangePassword);
lv_obj_set_pos(window_Login.textareaNewPassword, 150, 25);
lv_obj_set_size(window_Login.textareaNewPassword, 100, 40);
lv_textarea_set_one_line(window_Login.textareaNewPassword, true);
window_Login.textareaOldPassword = lv_textarea_create(window_Login.boxChangePassword);
lv_obj_set_pos(window_Login.textareaOldPassword, 150, 80);
lv_obj_set_size(window_Login.textareaOldPassword, 100, 40);
lv_textarea_set_one_line(window_Login.textareaOldPassword, true);
setButtonLabels(&window_Login.mainWindow);
window_Login.labelBoxLogin = lv_label_create(window_Login.mainWindow.screen);
lv_obj_set_pos(window_Login.labelBoxLogin, 280, 100);
lv_label_set_text(window_Login.labelBoxLogin, "Log in");
lv_obj_set_style_bg_opa(window_Login.labelBoxLogin, LV_OPA_COVER, LV_PART_MAIN);
window_Login.labelBoxChangePassword = lv_label_create(window_Login.mainWindow.screen);
lv_obj_set_pos(window_Login.labelBoxChangePassword, 280, 240);
lv_label_set_text(window_Login.labelBoxChangePassword, "Change Password");
lv_obj_set_style_bg_opa(window_Login.labelBoxChangePassword, LV_OPA_COVER, LV_PART_MAIN);
lv_obj_add_state(window_Login.textareaPassword, LV_STATE_FOCUSED);
// Create a group and associate it with kb_indev
lv_group_t * g = lv_group_create();
// Now add Objects to the group which should be able to receive the Keyboard Input
lv_group_add_obj(g, window_Login.textareaPassword);
lv_group_add_obj(g, window_Login.textareaNewPassword);
lv_group_add_obj(g, window_Login.textareaOldPassword);
lv_indev_set_group(keypad_indev, g);
lv_obj_add_event_cb(window_Login.textareaPassword, ta_key_event, LV_EVENT_KEY, NULL);
lv_obj_add_event_cb(window_Login.textareaNewPassword, ta_key_event, LV_EVENT_KEY, NULL);
lv_obj_add_event_cb(window_Login.textareaOldPassword, ta_key_event, LV_EVENT_KEY, NULL);
activeWindow = &window_Login.mainWindow;
}
I can see that the selected textarea is correct, but lv_textarea_add_char(ta, key);
doesnt work. had I made a mistake? or is something missing?