import lcd_bus import lvgl as lv import sdl_display import task_handler import sys sys.path.append('lib/') import sdl_pointer import sdl_keyboard # Initialize display TFT_HOR_RES = 320 TFT_VER_RES = 240 bus = lcd_bus.SDLBus(flags=0) buf1 = bus.allocate_framebuffer(TFT_HOR_RES * TFT_VER_RES * 2, 0) display = sdl_display.SDLDisplay( data_bus=bus, display_width=TFT_HOR_RES, display_height=TFT_VER_RES, frame_buffer1=buf1, color_space=lv.COLOR_FORMAT.RGB565 ) display.init() # Initialize mouse mouse = sdl_pointer.SDLPointer() # Initialize keyboard keyboard = sdl_keyboard.SDLKeyboard() # Create group group = lv.group_create() group.set_default() # Set as default group keyboard.set_group(group) # Create widgets screen = lv.screen_active() # Textarea ta = lv.textarea(screen) ta.set_one_line(True) ta.set_placeholder_text("Type here") ta.align(lv.ALIGN.TOP_LEFT, 10, 10) group.add_obj(ta) # Switch sw = lv.switch(screen) sw.align(lv.ALIGN.TOP_LEFT, 10, 50) group.add_obj(sw) # Button btn = lv.button(screen) btn.align(lv.ALIGN.TOP_LEFT, 10, 90) lbl = lv.label(btn) lbl.set_text("Test Button") group.add_obj(btn) # Simulate NEXT key button btn_next = lv.button(screen) btn_next.align(lv.ALIGN.BOTTOM_LEFT, 10, -10) lbl_next = lv.label(btn_next) lbl_next.set_text("NEXT") def btn_next_cb(event): if event.get_code() == lv.EVENT.CLICKED: keyboard.send_event(lv.EVENT.KEY, lv.KEY.NEXT) btn_next.add_event_cb(btn_next_cb, lv.EVENT.CLICKED, None) # Simulate ENTER key button btn_enter = lv.button(screen) btn_enter.align(lv.ALIGN.BOTTOM_LEFT, 100, -10) lbl_enter = lv.label(btn_enter) lbl_enter.set_text("ENTER") def btn_enter_cb(event): if event.get_code() == lv.EVENT.CLICKED: keyboard.send_event(lv.EVENT.KEY, lv.KEY.ENTER) btn_enter.add_event_cb(btn_enter_cb, lv.EVENT.CLICKED, None) # Debug focus def check_focus(): focused = lv.group_get_focused(group) print(f"Focused widget: {focused}") th = task_handler.TaskHandler(duration=5) th.register_task(check_focus, 1000) # Check focus every 1s # Debug textarea events def ta_event_cb(event): event_code = event.get_code() name = getattr(lv, 'EVENT_' + str(event_code), 'UNKNOWN') print(f"Textarea event: code={event_code}, name={name}") ta.add_event_cb(ta_event_cb, lv.EVENT.ALL, None) # Debug switch events def sw_event_cb(event): event_code = event.get_code() name = getattr(lv, 'EVENT_' + str(event_code), 'UNKNOWN') print(f"Switch event: code={event_code}, name={name}") sw.add_event_cb(sw_event_cb, lv.EVENT.ALL, None) # Debug button events def btn_event_cb(event): event_code = event.get_code() name = getattr(lv, 'EVENT_' + str(event_code), 'UNKNOWN') print(f"Button event: code={event_code}, name={name}") btn.add_event_cb(btn_event_cb, lv.EVENT.ALL, None)