From patchwork Thu Jan 22 04:11:28 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 113 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055132; bh=M2wUUemdwYodPbRtP1uRW6wLONdcH7qbOJeg8S42ncA=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=OvGPiuvP4UeZYdYVJGWhYfg97N9B5brFnaTH0RWmQTF5EKUcoL2BnKL7hX06ymJbV W52dRgSGKktUmBrkZ4vHmA8fS2z3CquqgSTxkZPpPg1zncsYe9Gpqn/r+DKnT4b9x6 Dc1OcC0m8PeAovWYnNaBd2FQC0xgsZOgaUvi4uWHcFQzcb+IyWTHEevxaoOKfo3YeC vp+nWk2PdqREkS+8Vl7Txh4BTGxY7jaAYJwYnA8Q1hM8PGvxjkGzcUENgwAInEUwl9 K5pKsvl/cphnTSgc6NDxxeRDjZuXQZhrEmhd4kbXgWRDDH7on3l+Y/h0F7KuWkWLaW VI8N3JPIyIdzQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 395796962A for ; Wed, 21 Jan 2026 21:12:12 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id F4Cl04dX3gLp for ; Wed, 21 Jan 2026 21:12:12 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055132; bh=M2wUUemdwYodPbRtP1uRW6wLONdcH7qbOJeg8S42ncA=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=OvGPiuvP4UeZYdYVJGWhYfg97N9B5brFnaTH0RWmQTF5EKUcoL2BnKL7hX06ymJbV W52dRgSGKktUmBrkZ4vHmA8fS2z3CquqgSTxkZPpPg1zncsYe9Gpqn/r+DKnT4b9x6 Dc1OcC0m8PeAovWYnNaBd2FQC0xgsZOgaUvi4uWHcFQzcb+IyWTHEevxaoOKfo3YeC vp+nWk2PdqREkS+8Vl7Txh4BTGxY7jaAYJwYnA8Q1hM8PGvxjkGzcUENgwAInEUwl9 K5pKsvl/cphnTSgc6NDxxeRDjZuXQZhrEmhd4kbXgWRDDH7on3l+Y/h0F7KuWkWLaW VI8N3JPIyIdzQ== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 23EF169616 for ; Wed, 21 Jan 2026 21:12:12 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055129; bh=jGGzZDBQKd/LZGUhULMub5j8M8qrMAHF3GngqtSsNm0=; h=From:To:Cc:Subject:Date:From; b=dwLAiiAsC+UgZ8LU0AOo3Ft+E1tbAnfbHxCO67zl9v87WG1+AyWRtA2SBdorbhfBU rqgfpS7abfmPiaEOT32wObw2QRDYe0Fui4dP5puqqRWNyaOy612i6h5ye9s2uWszyB zRcq44g9sLwzqJ7cqADp6dx8/8pRK6+0IeT68/Kj96AFh05+Vb8RC57xKq0UFdamyZ /Jsbp4ME9FmhvW8L+eudn08zh4MMiEWYJtyx7rN3bnyyw34hZWo1Yepnp6VdAQMl7s t0rV1utQT7rRVbuL3fxUNuGJpjTB+w6cu4WcCAnJ5bQ52i0l6E++QLm+k4uJHcybx4 tF0IfpK0ujofA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D095E694CC; Wed, 21 Jan 2026 21:12:09 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id 8cvuPacWflMK; Wed, 21 Jan 2026 21:12:09 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055125; bh=MMkf4spGvAr3WMtqpYesfgjnKwR8FQSRhkxyg3Fp6aI=; h=From:To:Cc:Subject:Date:From; b=ND/f2QS14AQi8XL15Frkb9WFg5hU4CD4rH9z/JRjV4BhTOxyFE8tLLlJyrPrW3HzG P22F9HJelpCiYIsAEEZeuKkuoeyZl8GlK1/DgTuczePoacYHGeyo+uRb7vWuF5hNuA Pv6ZDo/jP2wIrPLwjGMdcAin+U5W7o7blGNSdWLgpiFD2g+vBwqEkspQiOuiS2JYT4 L6WO4ZhapoYH5sPONF8ALR6OAFxPDccjBlisX9AuuRG4jdK/Lwf+PJOjTKAIDzOHbH YHpk3UIOFIpDFgkMrXgSwRZm/V2nKB1WeP0J+1c1n0Q9mzttMJjvK8IoDLzCnLl23p 083pxrclALvMA== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 7D27769486; Wed, 21 Jan 2026 21:12:05 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Wed, 21 Jan 2026 21:11:28 -0700 Message-ID: <20260122041155.174721-1-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Message-ID-Hash: 5AWDFDT5RNEMERUKLMEZNZXKYMHPR2EZ X-Message-ID-Hash: 5AWDFDT5RNEMERUKLMEZNZXKYMHPR2EZ X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 00/16] expo: Add multiline editing support for textedit List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass This series enhances the expo text-input handling, particularly for the textedit object which supports multi-line text. The vidconsole uses a single shared context for cursor state, which causes problems when text-input objects need their own cursor blinking. This series adds dedicated vidconsole contexts for text input, then removes the old entry save/restore mechanism which is no longer needed. For multiline editing , this series adds support for navigating between visual lines using Ctrl-P and Ctrl-N. The expo textedit uses text measurement to position the cursor at the correct pixel location within multi-line text, maintaining the horizontal position when moving between lines. The series also fixes some bugs in text-input handling and adds some tests for rendering and keypress-handling. Simon Glass (16): video: Update vidconsole_idle() to process all contexts expo: Add tin parameter to scene_txtin_close() test: expo: Use expo_enter_mode() in textline render test expo: Use a dedicated vidconsole-context for text input expo: Drop entry save/restore in textline rendering video: Remove vidconsole_entry_save/restore() test: video: Add tests for independent vidconsole contexts expo: Fix text-input close on BKEY_SELECT expo: Fix text-input buffer size for CLI editing test: expo: Add open/close testing to expo_render_textedit test: expo: Add keypress tests to expo_render_textedit cli: Add multiline support to CLI line editing video: Add len parameter to vidconsole_measure() expo: support cursor positioning for multiline textedits expo: Add visual line navigation for multi-line textedit test: expo: Add more keypress tests for textedit boot/scene.c | 7 +- boot/scene_internal.h | 13 +- boot/scene_txtin.c | 218 +++++++++++++++++++++++++----- common/cli_readline.c | 17 +++ drivers/video/console_normal.c | 32 ----- drivers/video/console_truetype.c | 43 +----- drivers/video/vidconsole-uclass.c | 50 ++----- include/cli.h | 9 +- include/expo.h | 4 +- include/video_console.h | 56 +------- test/boot/expo.c | 142 +++++++++++++++++++ test/dm/video.c | 109 +++++++++------ 12 files changed, 458 insertions(+), 242 deletions(-)