how to disable multiples keyboards

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

how to disable multiples keyboards

747 次查看
sana
Contributor II

Hi team,
currently i am building screens using lvgl gui guider 1.9.1 for our LCD display
In one of my screens i have used 12 texareas where i need to give user input fields hence multiple keybiards are being used how do i disable those i jus need one keyboard for all the textareas.
Basically user needs to give user inputs for multiple fields for this i am using textareas and clicking on tickmark of keyboard triggers a callback to set this is my use case.
Please provide me the solution ASAP.

Thanks and regards,
sahana

0 项奖励
回复
4 回复数

614 次查看
sana
Contributor II

Hi anything on this?
Can the team help me with the faster response.
Thanks and regards,

sahana

0 项奖励
回复

720 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi,

 

  • Create onelv_keyboard for the screen, hide it by default, and reuse it for every text area.
  • On text area focus/click, call lv_keyboard_set_textarea(kb, ta) and show the keyboard.
  • When the user presses OK (✓) on the keyboard, LVGL sends LV_EVENT_READY to the assigned text area—handle that event to commit the value and hide the keyboard.
  • In LVGL v8/v9, adding your own keyboard event handler does not remove the default handler, so you can add callbacks safely
#include "lvgl.h"

static lv_obj_t *kb;

static void ta_focus_cb(lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t *ta = lv_event_get_target(e);

    if(code == LV_EVENT_FOCUSED || code == LV_EVENT_CLICKED) {
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }
}

static void ta_done_cb(lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t *ta = lv_event_get_target(e);

    if(code == LV_EVENT_READY) {
        const char *val = lv_textarea_get_text(ta);
        /* your commit callback here with `val` */
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_keyboard_set_textarea(kb, NULL);
    } else if(code == LV_EVENT_CANCEL) {
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_keyboard_set_textarea(kb, NULL);
    }
}

void screen_init(lv_obj_t *parent)
{
    /* 1) Create one keyboard */
    kb = lv_keyboard_create(parent);
    lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    lv_obj_set_size(kb, LV_PCT(100), LV_PCT(40));
    lv_keyboard_set_cursor_manage(kb, true);

    /* 2) Create multiple text areas (example: 2; repeat for all 12) */
    lv_obj_t *ta1 = lv_textarea_create(parent);
    lv_obj_set_width(ta1, 200);
    lv_obj_set_pos(ta1, 10, 10);
    lv_obj_add_event_cb(ta1, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta1, ta_done_cb,  LV_EVENT_ALL, NULL);

    lv_obj_t *ta2 = lv_textarea_create(parent);
    lv_obj_set_width(ta2, 200);
    lv_obj_set_pos(ta2, 10, 60);
    lv_obj_add_event_cb(ta2, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta2, ta_done_cb,  LV_EVENT_ALL, NULL);

    /* ...repeat for ta3..ta12... */



Best Regards,
Zhiming

0 项奖励
回复

684 次查看
sana
Contributor II

Hi 
Thanks for the solution 
I am using lvgl guider 1.9.1 with v9.2.1 selected while creating project.

I did get an error saying there is no reference for 

lv_keyboard_set_cursor_manage

 I have tried my own custom code as you suggested to create input filed text areas but currently i can see overlapping of text area with the keyboard.
how can i overcome this basically i want my page to be scrollable so that user can see through other input check fields by scrolling which will also solve overlapping of keyboard problem i believe.

 

Attaching the screenshot and the code
Please provide me the solution asap

static lv_obj_t *kb;
lv_obj_t *ta_best_load_ratio_val_1;
lv_obj_t *ta_eco_cycle_period_val_1;
lv_obj_t *ta_eco_min_module_no_val_1;
lv_obj_t *ta_rect_save_stop_val_1;
lv_obj_t *ta_dry_time_val_1;
lv_obj_t *ta_best_load_ratio_val_2;
lv_obj_t *ta_eco_cycle_period_val_2;
lv_obj_t *ta_eco_min_module_no_val_2;
lv_obj_t *ta_dcdc_save_stop_val_2;
lv_obj_t *ta_dry_time_val_2;

LV_FONT_DECLARE(lv_font_NotoSans_Regular_18);

/* --- Callbacks --- */
static void ta_focus_cb(lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t *ta = lv_event_get_target(e);
   

    if(code == LV_EVENT_CLICKED) {
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
         lv_obj_scroll_to_view(ta, LV_ANIM_ON);
    }
}

static void ta_done_cb(lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t *ta = lv_event_get_target(e);

    if(code == LV_EVENT_READY) {
        const char *val = lv_textarea_get_text(ta);
        /* TODO: commit val to your app logic here */
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_keyboard_set_textarea(kb, NULL);
        printf("User entered: %s\n", val);
                fflush(stdout);
        lv_obj_scroll_to_y(lv_obj_get_parent(ta), 0, LV_ANIM_ON);
    } else if(code == LV_EVENT_CANCEL) {
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_keyboard_set_textarea(kb, NULL);
    }
}

static void kb_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * kb = lv_event_get_target(e);
   
    if(code == LV_EVENT_READY) {
        lv_obj_t * ta = lv_keyboard_get_textarea(kb);
        if(ta) {
            const char * txt = lv_textarea_get_text(ta);
            printf("Committed value: %s\n", txt);
            fflush(stdout);
            // reset bg to default
            lv_obj_set_style_bg_color(ta, lv_color_hex(0xD8D8D8), 0);
            lv_obj_clear_state(ta, LV_STATE_FOCUSED);
            
        }
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_keyboard_set_textarea(kb, NULL);
    }
    else if(code == LV_EVENT_CANCEL) {
        lv_obj_t * ta = lv_keyboard_get_textarea(kb);
        if(ta) {
            // reset bg to default
            lv_obj_set_style_bg_color(ta, lv_color_hex(0xD8D8D8), 0);
        }
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_keyboard_set_textarea(kb, NULL);
    }
}


static void textarea_event_cb(lv_event_t * e)
{
    lv_obj_t * ta = lv_event_get_target(e);
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_CLICKED) {
        // User clicked / focused → mark editable
        lv_obj_set_style_bg_color(ta, lv_color_hex(ECO_LABEL_EDIT), 0);
    }
    else if(code == LV_EVENT_DEFOCUSED ) {
        // Lost focus (like clicking outside) → reset
        lv_obj_set_style_bg_color(ta, lv_color_hex(ECO_LABEL_DEFAULT), 0);
    }
}

static void keyboard_event_cb(lv_event_t * e)
{
    lv_obj_t * kb = lv_event_get_target(e);
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_READY) {   // Tick / OK button pressed
        lv_obj_t * ta = lv_keyboard_get_textarea(kb);
        if(ta) {
            const char * txt = lv_textarea_get_text(ta);

            // Simple validation: check if user entered something
            if(txt && strlen(txt) > 0) {
                printf("User entered: %s", txt);
                fflush(stdout);
            } else {
                printf("No input provided!");
                fflush(stdout);
            }

            // Reset to default once input is taken
            lv_obj_set_style_bg_color(ta, lv_color_hex(ECO_LABEL_DEFAULT), 0);
        }
    }
}



void screen_init(lv_obj_t *parent)
{
 
   lv_obj_set_scroll_dir(guider_ui.ECO_page, LV_DIR_VER);
   lv_obj_set_scrollbar_mode(guider_ui.ECO_page, LV_SCROLLBAR_MODE_ON);

    /* 1) Create one keyboard */
    kb = lv_keyboard_create(parent);
    lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    lv_obj_set_size(kb, LV_PCT(100), LV_PCT(40));
    lv_obj_align(kb, LV_ALIGN_BOTTOM_MID, 0, 0);

    // lv_obj_add_event_cb(kb, kb_event_cb, LV_EVENT_ALL, NULL);

    
    ta_best_load_ratio_val_1 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_best_load_ratio_val_1, 279, 132);   
    lv_obj_set_size(ta_best_load_ratio_val_1, 104, 30);  
    lv_obj_set_style_bg_color(ta_best_load_ratio_val_1, lv_color_hex(0xE8E8E8), 0);
    lv_obj_set_style_text_font(ta_best_load_ratio_val_1, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_best_load_ratio_val_1, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_best_load_ratio_val_1, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_best_load_ratio_val_1, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_best_load_ratio_val_1, LV_OBJ_FLAG_SCROLLABLE);

  
    ta_eco_cycle_period_val_1 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_eco_cycle_period_val_1, 279, 169); 
    lv_obj_set_size(ta_eco_cycle_period_val_1, 104, 30);   
    lv_obj_set_style_bg_color(ta_eco_cycle_period_val_1, lv_color_hex(0xD8D8D8), 0);
    lv_obj_set_style_text_font(ta_eco_cycle_period_val_1, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_eco_cycle_period_val_1, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_cycle_period_val_1, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_cycle_period_val_1, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_eco_cycle_period_val_1, LV_OBJ_FLAG_SCROLLABLE);

    ta_eco_min_module_no_val_1 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_eco_min_module_no_val_1, 693, 95); 
    lv_obj_set_size(ta_eco_min_module_no_val_1, 104, 30);   
    lv_obj_set_style_bg_color(ta_eco_min_module_no_val_1, lv_color_hex(0xD8D8D8), 0);
    lv_obj_set_style_text_font(ta_eco_min_module_no_val_1, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_eco_min_module_no_val_1, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_min_module_no_val_1, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_min_module_no_val_1, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_eco_min_module_no_val_1, LV_OBJ_FLAG_SCROLLABLE);

    ta_rect_save_stop_val_1 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_rect_save_stop_val_1, 693, 132); 
    lv_obj_set_size(ta_rect_save_stop_val_1, 104, 30);   
    lv_obj_set_style_bg_color(ta_rect_save_stop_val_1, lv_color_hex(0xE8E8E8), 0);
    lv_obj_set_style_text_font(ta_rect_save_stop_val_1, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_rect_save_stop_val_1, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_rect_save_stop_val_1, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_rect_save_stop_val_1, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_rect_save_stop_val_1, LV_OBJ_FLAG_SCROLLABLE);

    ta_dry_time_val_1 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_dry_time_val_1, 693, 169); 
    lv_obj_set_size(ta_dry_time_val_1, 104, 30);   
    lv_obj_set_style_bg_color(ta_dry_time_val_1, lv_color_hex(0xD8D8D8), 0);
    lv_obj_set_style_text_font(ta_dry_time_val_1, &lv_font_NotoSans_Regular_18, 0); 
    lv_obj_add_event_cb(ta_dry_time_val_1, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_dry_time_val_1, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_dry_time_val_1, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_dry_time_val_1, LV_OBJ_FLAG_SCROLLABLE);

    ta_best_load_ratio_val_2 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_best_load_ratio_val_2, 279, 280);   
    lv_obj_set_size(ta_best_load_ratio_val_2, 104, 30);  
    lv_obj_set_style_bg_color(ta_best_load_ratio_val_2, lv_color_hex(0xE8E8E8), 0);
    lv_obj_set_style_text_font(ta_best_load_ratio_val_2, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_best_load_ratio_val_2, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_best_load_ratio_val_2, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_best_load_ratio_val_2, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_best_load_ratio_val_2, LV_OBJ_FLAG_SCROLLABLE);

  
    ta_eco_cycle_period_val_2 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_eco_cycle_period_val_2, 279, 317); 
    lv_obj_set_size(ta_eco_cycle_period_val_2, 104, 30);   
    lv_obj_set_style_bg_color(ta_eco_cycle_period_val_2, lv_color_hex(0xD8D8D8), 0);
    lv_obj_set_style_text_font(ta_eco_cycle_period_val_2, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_eco_cycle_period_val_2, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_cycle_period_val_2, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_cycle_period_val_2, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_eco_cycle_period_val_2, LV_OBJ_FLAG_SCROLLABLE);

    ta_eco_min_module_no_val_2 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_eco_min_module_no_val_2, 693, 243); 
    lv_obj_set_size(ta_eco_min_module_no_val_2, 104, 30);   
    lv_obj_set_style_bg_color(ta_eco_min_module_no_val_2, lv_color_hex(0xD8D8D8), 0);
    lv_obj_set_style_text_font(ta_eco_min_module_no_val_2, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_eco_min_module_no_val_2, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_min_module_no_val_2, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_eco_min_module_no_val_2, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_eco_min_module_no_val_2, LV_OBJ_FLAG_SCROLLABLE);

    ta_dcdc_save_stop_val_2 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_dcdc_save_stop_val_2, 693, 280); 
    lv_obj_set_size(ta_dcdc_save_stop_val_2, 104, 30);   
    lv_obj_set_style_bg_color(ta_dcdc_save_stop_val_2, lv_color_hex(0xE8E8E8), 0);
    lv_obj_set_style_text_font(ta_dcdc_save_stop_val_2, &lv_font_NotoSans_Regular_18, 0);
    lv_obj_add_event_cb(ta_dcdc_save_stop_val_2, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_dcdc_save_stop_val_2, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_dcdc_save_stop_val_2, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_dcdc_save_stop_val_2, LV_OBJ_FLAG_SCROLLABLE);

    ta_dry_time_val_2 = lv_textarea_create(parent);
    lv_obj_set_pos(ta_dry_time_val_2, 693, 317); 
    lv_obj_set_size(ta_dry_time_val_2, 104, 30);   
    lv_obj_set_style_bg_color(ta_dry_time_val_2, lv_color_hex(0xD8D8D8), 0);
    lv_obj_set_style_text_font(ta_dry_time_val_2, &lv_font_NotoSans_Regular_18, 0); 
    lv_obj_add_event_cb(ta_dry_time_val_2, ta_focus_cb, LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_dry_time_val_2, ta_done_cb,  LV_EVENT_ALL, NULL);
    lv_obj_add_event_cb(ta_dry_time_val_2, textarea_event_cb, LV_EVENT_ALL, NULL);
    // lv_obj_clear_flag(ta_dry_time_val_2, LV_OBJ_FLAG_SCROLLABLE);

    
    // lv_obj_add_event_cb(kb, keyboard_event_cb, LV_EVENT_ALL, NULL);

}


/* Initialize custom UI */
void custom_init(lv_ui *ui)
{
    init_screen_timeout();
    screen_init(ui->ECO_page); 
}

 

标记 (2)
0 项奖励
回复

478 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi,

Please refer the LVGL  manual to use scrolling feature.

https://docs.lvgl.io/master/details/common-widget-features/scrolling.html

Best Regards,
Zhiming

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2161150%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E5%A4%9A%E4%B8%AA%E9%94%AE%E7%9B%98%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2161150%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20team%2C%3CBR%20%2F%3E%E7%9B%AE%E5%89%8D%EF%BC%8C%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%20lvgl%20gui%20guider%201.9.1%20%E4%B8%BA%E6%88%91%E4%BB%AC%E7%9A%84%20LCD%20%E6%98%BE%E7%A4%BA%E5%B1%8F%E6%9E%84%E5%BB%BA%E5%B1%8F%E5%B9%95%3CBR%20%2F%3E%E5%9C%A8%E6%88%91%E7%9A%84%E4%B8%80%E4%B8%AA%E5%B1%8F%E5%B9%95%E4%B8%AD%EF%BC%8C%E6%88%91%E4%BD%BF%E7%94%A8%E4%BA%86%2012%20%E4%B8%AA%E6%96%87%E6%9C%AC%E5%8C%BA%EF%BC%8C%E5%9C%A8%E8%BF%99%E4%BA%9B%E6%96%87%E6%9C%AC%E5%8C%BA%E4%B8%AD%E6%88%91%E9%9C%80%E8%A6%81%E7%BB%99%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E5%AD%97%E6%AE%B5%EF%BC%8C%E5%9B%A0%E6%AD%A4%E4%BD%BF%E7%94%A8%E4%BA%86%E5%A4%9A%E4%B8%AA%E9%94%AE%E7%9B%98%EF%BC%8C%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E8%BF%99%E4%BA%9B%E9%94%AE%E7%9B%98%E5%91%A2%EF%BC%9F%E6%88%91%E5%8F%AA%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E9%94%AE%E7%9B%98%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E6%96%87%E6%9C%AC%E5%8C%BA%E7%9A%84%E6%93%8D%E4%BD%9C%E3%80%82%3CBR%20%2F%3E%E5%9F%BA%E6%9C%AC%E4%B8%8A%EF%BC%8C%E7%94%A8%E6%88%B7%E9%9C%80%E8%A6%81%E4%B8%BA%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E5%A4%9A%E4%B8%AA%E5%AD%97%E6%AE%B5%E7%9A%84%E8%BE%93%E5%85%A5%EF%BC%8C%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8textareas%E5%B9%B6%E5%8D%95%E5%87%BB%E9%94%AE%E7%9B%98%E7%9A%84%E5%8B%BE%E5%8F%B7%E4%BC%9A%E8%A7%A6%E5%8F%91%E4%BF%A1%E5%8F%B7%E5%9B%9E%E8%B0%83%E6%9D%A5%E8%AE%BE%E7%BD%AE%E8%BF%99%E6%98%AF%E6%88%91%E7%9A%84%E7%94%A8%E4%BE%8B%E3%80%82%3CBR%20%2F%3E%E8%AF%B7%E5%B0%BD%E5%BF%AB%E6%8F%90%E4%BE%9B%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%E6%84%9F%E8%B0%A2%E5%92%8C%E9%97%AE%E5%80%99%EF%BC%8C%3CBR%20%2F%3Esahana%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2169276%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20how%20to%20disable%20multiples%20keyboards%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2169276%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%3CBR%20%2F%3E%3CBR%20%2F%3E%EF%BC%8C%E8%AF%B7%E5%8F%82%E8%80%83%20LVGL%20%E6%89%8B%E5%86%8C%E4%BD%BF%E7%94%A8%E6%BB%9A%E5%8A%A8%E5%8A%9F%E8%83%BD%E3%80%82%3C%2FP%3E%0A%3CP%3Eh%3CA%20href%3D%22https%3A%2F%2Fdocs.lvgl.io%2Fmaster%2Fdetails%2Fcommon-widget-features%2Fscrolling.htm%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ettps%3A%2F%2F%3C%2FA%3Edocs.lvgl.io%2Fmaster%2Fdetails%2Fcommon-widget-features%2Fscrolling.html%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%87%B4%E6%95%AC%EF%BC%8C%3CBR%20%2F%3EZhiming%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2164873%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20how%20to%20disable%20multiples%20keyboards%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2164873%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CBR%20%2F%3E%E5%9B%A2%E9%98%9F%E8%83%BD%E5%90%A6%E5%B8%AE%E5%8A%A9%E6%88%91%E5%8A%A0%E5%BF%AB%E5%9B%9E%E5%A4%8D%E9%80%9F%E5%BA%A6%E3%80%82%3CBR%20%2F%3E%E8%B0%A2%E8%B0%A2%EF%BC%8C%E5%B9%B6%E8%87%B4%E4%BB%A5%E9%97%AE%E5%80%99%E3%80%81%3C%2FP%3E%3CP%3ESahana%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2162369%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20how%20to%20disable%20multiples%20keyboards%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2162369%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%3CBR%20%2F%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E6%8F%90%E4%BE%9B%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%3CBR%20%2F%3E%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%20lvgl%20guider%201.9.1%EF%BC%8C%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E6%97%B6%E9%80%89%E6%8B%A9%E4%BA%86%20v9.2.1%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E7%A1%AE%E5%AE%9E%E6%94%B6%E5%88%B0%E4%BA%86%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%EF%BC%8C%E8%AF%B4%E6%B2%A1%E6%9C%89%E5%8F%82%E8%80%83%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Elv_keyboard_set_cursor_manage%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E6%88%91%E5%B7%B2%E7%BB%8F%E6%8C%89%E7%85%A7%E6%82%A8%E7%9A%84%E5%BB%BA%E8%AE%AE%E5%B0%9D%E8%AF%95%E4%BA%86%E8%87%AA%E5%B7%B1%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%BB%A5%E5%88%9B%E5%BB%BA%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%87%E6%9C%AC%E5%8C%BA%E5%9F%9F%EF%BC%8C%E4%BD%86%E7%9B%AE%E5%89%8D%E6%88%91%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E6%96%87%E6%9C%AC%E5%8C%BA%E5%9F%9F%E4%B8%8E%E9%94%AE%E7%9B%98%E9%87%8D%E5%8F%A0%E3%80%82%3CBR%20%2F%3E%E5%9F%BA%E6%9C%AC%E4%B8%8A%EF%BC%8C%E6%88%91%E5%B8%8C%E6%9C%9B%E6%88%91%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%8F%AF%E4%BB%A5%E6%BB%9A%E5%8A%A8%EF%BC%8C%E8%BF%99%E6%A0%B7%E7%94%A8%E6%88%B7%E5%B0%B1%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E6%BB%9A%E5%8A%A8%E6%9F%A5%E7%9C%8B%E5%85%B6%E4%BB%96%E8%BE%93%E5%85%A5%E6%A3%80%E6%9F%A5%E5%AD%97%E6%AE%B5%EF%BC%8C%E6%88%91%E7%9B%B8%E4%BF%A1%E8%BF%99%E4%B9%9F%E8%83%BD%E8%A7%A3%E5%86%B3%E9%94%AE%E7%9B%98%E9%87%8D%E5%8F%A0%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E9%99%84%E4%B8%8A%E6%88%AA%E5%9B%BE%E5%92%8C%E4%BB%A3%E7%A0%81%3CBR%20%2F%3E%E8%AF%B7%E5%B0%BD%E5%BF%AB%E6%8F%90%E4%BE%9B%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Estatic%20lv_obj_t%20*kb%3B%0Alv_obj_t%20*ta_best_load_ratio_val_1%3B%0Alv_obj_t%20*ta_eco_cycle_period_val_1%3B%0Alv_obj_t%20*ta_eco_min_module_no_val_1%3B%0Alv_obj_t%20*ta_rect_save_stop_val_1%3B%0Alv_obj_t%20*ta_dry_time_val_1%3B%0Alv_obj_t%20*ta_best_load_ratio_val_2%3B%0Alv_obj_t%20*ta_eco_cycle_period_val_2%3B%0Alv_obj_t%20*ta_eco_min_module_no_val_2%3B%0Alv_obj_t%20*ta_dcdc_save_stop_val_2%3B%0Alv_obj_t%20*ta_dry_time_val_2%3B%0A%0ALV_FONT_DECLARE(lv_font_NotoSans_Regular_18)%3B%0A%0A%2F*%20---%20Callbacks%20---%20*%2F%0Astatic%20void%20ta_focus_cb(lv_event_t%20*e)%0A%7B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%20%20%20%20lv_obj_t%20*ta%20%3D%20lv_event_get_target(e)%3B%0A%20%20%20%0A%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_CLICKED)%20%7B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20ta)%3B%0A%20%20%20%20%20%20%20%20lv_obj_clear_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20%20lv_obj_scroll_to_view(ta%2C%20LV_ANIM_ON)%3B%0A%20%20%20%20%7D%0A%7D%0A%0Astatic%20void%20ta_done_cb(lv_event_t%20*e)%0A%7B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%20%20%20%20lv_obj_t%20*ta%20%3D%20lv_event_get_target(e)%3B%0A%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_READY)%20%7B%0A%20%20%20%20%20%20%20%20const%20char%20*val%20%3D%20lv_textarea_get_text(ta)%3B%0A%20%20%20%20%20%20%20%20%2F*%20TODO%3A%20commit%20val%20to%20your%20app%20logic%20here%20*%2F%0A%20%20%20%20%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20NULL)%3B%0A%20%20%20%20%20%20%20%20printf(%22User%20entered%3A%20%25s%5Cn%22%2C%20val)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fflush(stdout)%3B%0A%20%20%20%20%20%20%20%20lv_obj_scroll_to_y(lv_obj_get_parent(ta)%2C%200%2C%20LV_ANIM_ON)%3B%0A%20%20%20%20%7D%20else%20if(code%20%3D%3D%20LV_EVENT_CANCEL)%20%7B%0A%20%20%20%20%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20NULL)%3B%0A%20%20%20%20%7D%0A%7D%0A%0Astatic%20void%20kb_event_cb(lv_event_t%20*%20e)%0A%7B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%20%20%20%20lv_obj_t%20*%20kb%20%3D%20lv_event_get_target(e)%3B%0A%20%20%20%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_READY)%20%7B%0A%20%20%20%20%20%20%20%20lv_obj_t%20*%20ta%20%3D%20lv_keyboard_get_textarea(kb)%3B%0A%20%20%20%20%20%20%20%20if(ta)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20char%20*%20txt%20%3D%20lv_textarea_get_text(ta)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20printf(%22Committed%20value%3A%20%25s%5Cn%22%2C%20txt)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20fflush(stdout)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20reset%20bg%20to%20default%0A%20%20%20%20%20%20%20%20%20%20%20%20lv_obj_set_style_bg_color(ta%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20lv_obj_clear_state(ta%2C%20LV_STATE_FOCUSED)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20NULL)%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if(code%20%3D%3D%20LV_EVENT_CANCEL)%20%7B%0A%20%20%20%20%20%20%20%20lv_obj_t%20*%20ta%20%3D%20lv_keyboard_get_textarea(kb)%3B%0A%20%20%20%20%20%20%20%20if(ta)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20reset%20bg%20to%20default%0A%20%20%20%20%20%20%20%20%20%20%20%20lv_obj_set_style_bg_color(ta%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20NULL)%3B%0A%20%20%20%20%7D%0A%7D%0A%0A%0Astatic%20void%20textarea_event_cb(lv_event_t%20*%20e)%0A%7B%0A%20%20%20%20lv_obj_t%20*%20ta%20%3D%20lv_event_get_target(e)%3B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_CLICKED)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20User%20clicked%20%2F%20focused%20%E2%86%92%20mark%20editable%0A%20%20%20%20%20%20%20%20lv_obj_set_style_bg_color(ta%2C%20lv_color_hex(ECO_LABEL_EDIT)%2C%200)%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if(code%20%3D%3D%20LV_EVENT_DEFOCUSED%20)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Lost%20focus%20(like%20clicking%20outside)%20%E2%86%92%20reset%0A%20%20%20%20%20%20%20%20lv_obj_set_style_bg_color(ta%2C%20lv_color_hex(ECO_LABEL_DEFAULT)%2C%200)%3B%0A%20%20%20%20%7D%0A%7D%0A%0Astatic%20void%20keyboard_event_cb(lv_event_t%20*%20e)%0A%7B%0A%20%20%20%20lv_obj_t%20*%20kb%20%3D%20lv_event_get_target(e)%3B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_READY)%20%7B%20%20%20%2F%2F%20Tick%20%2F%20OK%20button%20pressed%0A%20%20%20%20%20%20%20%20lv_obj_t%20*%20ta%20%3D%20lv_keyboard_get_textarea(kb)%3B%0A%20%20%20%20%20%20%20%20if(ta)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20char%20*%20txt%20%3D%20lv_textarea_get_text(ta)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Simple%20validation%3A%20check%20if%20user%20entered%20something%0A%20%20%20%20%20%20%20%20%20%20%20%20if(txt%20%26amp%3B%26amp%3B%20strlen(txt)%20%26gt%3B%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printf(%22User%20entered%3A%20%25s%22%2C%20txt)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fflush(stdout)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printf(%22No%20input%20provided!%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fflush(stdout)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Reset%20to%20default%20once%20input%20is%20taken%0A%20%20%20%20%20%20%20%20%20%20%20%20lv_obj_set_style_bg_color(ta%2C%20lv_color_hex(ECO_LABEL_DEFAULT)%2C%200)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%0A%0A%0Avoid%20screen_init(lv_obj_t%20*parent)%0A%7B%0A%20%0A%20%20%20lv_obj_set_scroll_dir(guider_ui.ECO_page%2C%20LV_DIR_VER)%3B%0A%20%20%20lv_obj_set_scrollbar_mode(guider_ui.ECO_page%2C%20LV_SCROLLBAR_MODE_ON)%3B%0A%0A%20%20%20%20%2F*%201)%20Create%20one%20keyboard%20*%2F%0A%20%20%20%20kb%20%3D%20lv_keyboard_create(parent)%3B%0A%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20lv_obj_set_size(kb%2C%20LV_PCT(100)%2C%20LV_PCT(40))%3B%0A%20%20%20%20lv_obj_align(kb%2C%20LV_ALIGN_BOTTOM_MID%2C%200%2C%200)%3B%0A%0A%20%20%20%20%2F%2F%20lv_obj_add_event_cb(kb%2C%20kb_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%0A%20%20%20%20%0A%20%20%20%20ta_best_load_ratio_val_1%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_best_load_ratio_val_1%2C%20279%2C%20132)%3B%20%20%20%0A%20%20%20%20lv_obj_set_size(ta_best_load_ratio_val_1%2C%20104%2C%2030)%3B%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_best_load_ratio_val_1%2C%20lv_color_hex(0xE8E8E8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_best_load_ratio_val_1%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_best_load_ratio_val_1%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_best_load_ratio_val_1%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_best_load_ratio_val_1%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_best_load_ratio_val_1%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%0A%20%20%20%20ta_eco_cycle_period_val_1%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_eco_cycle_period_val_1%2C%20279%2C%20169)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_eco_cycle_period_val_1%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_eco_cycle_period_val_1%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_eco_cycle_period_val_1%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_cycle_period_val_1%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_cycle_period_val_1%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_cycle_period_val_1%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_eco_cycle_period_val_1%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_eco_min_module_no_val_1%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_eco_min_module_no_val_1%2C%20693%2C%2095)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_eco_min_module_no_val_1%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_eco_min_module_no_val_1%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_eco_min_module_no_val_1%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_min_module_no_val_1%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_min_module_no_val_1%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_min_module_no_val_1%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_eco_min_module_no_val_1%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_rect_save_stop_val_1%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_rect_save_stop_val_1%2C%20693%2C%20132)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_rect_save_stop_val_1%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_rect_save_stop_val_1%2C%20lv_color_hex(0xE8E8E8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_rect_save_stop_val_1%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_rect_save_stop_val_1%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_rect_save_stop_val_1%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_rect_save_stop_val_1%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_rect_save_stop_val_1%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_dry_time_val_1%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_dry_time_val_1%2C%20693%2C%20169)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_dry_time_val_1%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_dry_time_val_1%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_dry_time_val_1%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%20%0A%20%20%20%20lv_obj_add_event_cb(ta_dry_time_val_1%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dry_time_val_1%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dry_time_val_1%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_dry_time_val_1%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_best_load_ratio_val_2%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_best_load_ratio_val_2%2C%20279%2C%20280)%3B%20%20%20%0A%20%20%20%20lv_obj_set_size(ta_best_load_ratio_val_2%2C%20104%2C%2030)%3B%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_best_load_ratio_val_2%2C%20lv_color_hex(0xE8E8E8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_best_load_ratio_val_2%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_best_load_ratio_val_2%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_best_load_ratio_val_2%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_best_load_ratio_val_2%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_best_load_ratio_val_2%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%0A%20%20%20%20ta_eco_cycle_period_val_2%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_eco_cycle_period_val_2%2C%20279%2C%20317)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_eco_cycle_period_val_2%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_eco_cycle_period_val_2%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_eco_cycle_period_val_2%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_cycle_period_val_2%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_cycle_period_val_2%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_cycle_period_val_2%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_eco_cycle_period_val_2%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_eco_min_module_no_val_2%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_eco_min_module_no_val_2%2C%20693%2C%20243)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_eco_min_module_no_val_2%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_eco_min_module_no_val_2%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_eco_min_module_no_val_2%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_min_module_no_val_2%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_min_module_no_val_2%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_eco_min_module_no_val_2%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_eco_min_module_no_val_2%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_dcdc_save_stop_val_2%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_dcdc_save_stop_val_2%2C%20693%2C%20280)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_dcdc_save_stop_val_2%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_dcdc_save_stop_val_2%2C%20lv_color_hex(0xE8E8E8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_dcdc_save_stop_val_2%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dcdc_save_stop_val_2%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dcdc_save_stop_val_2%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dcdc_save_stop_val_2%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_dcdc_save_stop_val_2%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20ta_dry_time_val_2%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_pos(ta_dry_time_val_2%2C%20693%2C%20317)%3B%20%0A%20%20%20%20lv_obj_set_size(ta_dry_time_val_2%2C%20104%2C%2030)%3B%20%20%20%0A%20%20%20%20lv_obj_set_style_bg_color(ta_dry_time_val_2%2C%20lv_color_hex(0xD8D8D8)%2C%200)%3B%0A%20%20%20%20lv_obj_set_style_text_font(ta_dry_time_val_2%2C%20%26amp%3Blv_font_NotoSans_Regular_18%2C%200)%3B%20%0A%20%20%20%20lv_obj_add_event_cb(ta_dry_time_val_2%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dry_time_val_2%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta_dry_time_val_2%2C%20textarea_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20%2F%2F%20lv_obj_clear_flag(ta_dry_time_val_2%2C%20LV_OBJ_FLAG_SCROLLABLE)%3B%0A%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20lv_obj_add_event_cb(kb%2C%20keyboard_event_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%0A%7D%0A%0A%0A%2F*%20Initialize%20custom%20UI%20*%2F%0Avoid%20custom_init(lv_ui%20*ui)%0A%7B%0A%20%20%20%20init_screen_timeout()%3B%0A%20%20%20%20screen_init(ui-%26gt%3BECO_page)%3B%20%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2161652%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20how%20to%20disable%20multiples%20keyboards%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2161652%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%E3%80%81%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CUL%3E%0A%3CLI%3E%E4%B8%BA%E5%B1%8F%E5%B9%95%E5%88%9B%E5%BB%BA%20onelv_keyboard%EF%BC%8C%E9%BB%98%E8%AE%A4%E5%B0%86%E5%85%B6%E9%9A%90%E8%97%8F%EF%BC%8C%E5%B9%B6%E5%9C%A8%E6%AF%8F%E4%B8%AA%E6%96%87%E6%9C%AC%E5%8C%BA%E5%9F%9F%E9%87%8D%E5%A4%8D%E4%BD%BF%E7%94%A8%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E5%9C%A8%E6%96%87%E6%9C%AC%E5%8C%BA%E5%9F%9F%E8%81%9A%E7%84%A6%2F%E7%82%B9%E5%87%BB%E6%97%B6%EF%BC%8C%E8%B0%83%E7%94%A8%20lv_keyboard_set_textarea(kb%2C%20ta)%20%E5%B9%B6%E6%98%BE%E7%A4%BA%E9%94%AE%E7%9B%98%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E5%BD%93%E7%94%A8%E6%88%B7%E6%8C%89%E4%B8%8B%E9%94%AE%E7%9B%98%E4%B8%8A%E7%9A%84%E7%A1%AE%E5%AE%9A%20(%E2%9C%93)%EF%BC%8CLVGL%20%E4%BC%9A%E5%90%91%E6%8C%87%E5%AE%9A%E7%9A%84%E6%96%87%E6%9C%AC%E5%8C%BA%E5%9F%9F%E5%8F%91%E9%80%81%20LV_EVENT_READY%20%E4%BA%8B%E4%BB%B6%EF%BC%8C%E5%A4%84%E7%90%86%E8%AF%A5%E4%BA%8B%E4%BB%B6%E4%BB%A5%E6%8F%90%E4%BA%A4%E5%80%BC%E5%B9%B6%E9%9A%90%E8%97%8F%E9%94%AE%E7%9B%98%E3%80%82%3C%2FLI%3E%0A%3CLI%3E%E5%9C%A8%20LVGL%20v8%2Fv9%20%E4%B8%AD%EF%BC%8C%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%B7%B1%E7%9A%84%E9%94%AE%E7%9B%98%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%E4%B8%8D%E4%BC%9A%E7%A7%BB%E9%99%A4%E9%BB%98%E8%AE%A4%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%AE%89%E5%85%A8%E5%9C%B0%E6%B7%BB%E5%8A%A0%E5%9B%9E%E8%B0%83%E7%A8%8B%E5%BA%8F%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%23include%20%22lvgl.h%22%0A%0Astatic%20lv_obj_t%20*kb%3B%0A%0Astatic%20void%20ta_focus_cb(lv_event_t%20*e)%0A%7B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%20%20%20%20lv_obj_t%20*ta%20%3D%20lv_event_get_target(e)%3B%0A%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_FOCUSED%20%7C%7C%20code%20%3D%3D%20LV_EVENT_CLICKED)%20%7B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20ta)%3B%0A%20%20%20%20%20%20%20%20lv_obj_clear_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%7D%0A%7D%0A%0Astatic%20void%20ta_done_cb(lv_event_t%20*e)%0A%7B%0A%20%20%20%20lv_event_code_t%20code%20%3D%20lv_event_get_code(e)%3B%0A%20%20%20%20lv_obj_t%20*ta%20%3D%20lv_event_get_target(e)%3B%0A%0A%20%20%20%20if(code%20%3D%3D%20LV_EVENT_READY)%20%7B%0A%20%20%20%20%20%20%20%20const%20char%20*val%20%3D%20lv_textarea_get_text(ta)%3B%0A%20%20%20%20%20%20%20%20%2F*%20your%20commit%20callback%20here%20with%20%60val%60%20*%2F%0A%20%20%20%20%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20NULL)%3B%0A%20%20%20%20%7D%20else%20if(code%20%3D%3D%20LV_EVENT_CANCEL)%20%7B%0A%20%20%20%20%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20%20%20%20%20lv_keyboard_set_textarea(kb%2C%20NULL)%3B%0A%20%20%20%20%7D%0A%7D%0A%0Avoid%20screen_init(lv_obj_t%20*parent)%0A%7B%0A%20%20%20%20%2F*%201)%20Create%20one%20keyboard%20*%2F%0A%20%20%20%20kb%20%3D%20lv_keyboard_create(parent)%3B%0A%20%20%20%20lv_obj_add_flag(kb%2C%20LV_OBJ_FLAG_HIDDEN)%3B%0A%20%20%20%20lv_obj_set_size(kb%2C%20LV_PCT(100)%2C%20LV_PCT(40))%3B%0A%20%20%20%20lv_keyboard_set_cursor_manage(kb%2C%20true)%3B%0A%0A%20%20%20%20%2F*%202)%20Create%20multiple%20text%20areas%20(example%3A%202%3B%20repeat%20for%20all%2012)%20*%2F%0A%20%20%20%20lv_obj_t%20*ta1%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_width(ta1%2C%20200)%3B%0A%20%20%20%20lv_obj_set_pos(ta1%2C%2010%2C%2010)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta1%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta1%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%0A%20%20%20%20lv_obj_t%20*ta2%20%3D%20lv_textarea_create(parent)%3B%0A%20%20%20%20lv_obj_set_width(ta2%2C%20200)%3B%0A%20%20%20%20lv_obj_set_pos(ta2%2C%2010%2C%2060)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta2%2C%20ta_focus_cb%2C%20LV_EVENT_ALL%2C%20NULL)%3B%0A%20%20%20%20lv_obj_add_event_cb(ta2%2C%20ta_done_cb%2C%20%20LV_EVENT_ALL%2C%20NULL)%3B%0A%0A%20%20%20%20%2F*%20...repeat%20for%20ta3..ta12...%20*%2F%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%87%B4%E6%95%AC%EF%BC%8C%3CBR%20%2F%3EZhiming%3C%2FP%3E%3C%2FLINGO-BODY%3E