From b224bbe85a6671c2ca00dc2e122dacc6f7f6b1cd Mon Sep 17 00:00:00 2001 From: Greg Pomerantz Date: Fri, 5 Jun 2026 14:19:01 -0400 Subject: [PATCH] Fix backspace handling on Android. --- cmd/pad/main.go | 7 ++++++- internal/editor/state.go | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cmd/pad/main.go b/cmd/pad/main.go index 28499cd..9f1a51b 100644 --- a/cmd/pad/main.go +++ b/cmd/pad/main.go @@ -120,11 +120,16 @@ func run(w *app.Window) error { }) } case key.EditEvent: - log.Printf("edit event: %v", k.Text) + log.Printf("edit event text: %q", k.Text) events = append(events, ui.InputEvent{ Handler: reg.Handler, Data: k, }) + case key.SnippetEvent: + log.Printf("snippet event: %v", k) + // Handle snippet event if necessary, or ignore + default: + log.Printf("unexpected event type: %T", k) } } } diff --git a/internal/editor/state.go b/internal/editor/state.go index 15475b6..2111529 100644 --- a/internal/editor/state.go +++ b/internal/editor/state.go @@ -300,11 +300,16 @@ func HandleCursorMove(delta int) { // HandleKeyDown interprets keyboard events for navigation and editing. // Receives both key.Event (as key.Name) and key.EditEvent from the main loop. func HandleKeyDown(data any) { + log.Printf("HandleKeyDown: received data of type %T: %v", data, data) switch v := data.(type) { case key.EditEvent: // Text input from IME / keyboard log.Printf("HandleKeyDown: EditEvent text=%q", v.Text) - HandleInsert(v.Text) + if v.Text == "\b" || len(v.Text) == 0 { + HandleBackspace() + } else { + HandleInsert(v.Text) + } case key.Name: log.Printf("HandleKeyDown: name=%q", v) switch v { @@ -553,6 +558,7 @@ func HandleInsert(s string) { // HandleBackspace removes the character before the cursor. func HandleBackspace() { + log.Printf("HandleBackspace: CursorPosition=%d", TheState.Editor.CursorPosition) pos := TheState.Editor.CursorPosition if pos == 0 { return