From 93d53fcef6ae2acfac3a67d5c88af519889782cb Mon Sep 17 00:00:00 2001 From: Gregor Lohaus Date: Sun, 31 May 2026 22:27:54 +0200 Subject: [PATCH] send backtab (ESC [ Z) for Shift+Tab KeyEncoder mapped TAB to a plain tab regardless of Shift, so Shift+Tab sent the same byte as Tab. Apps that use backtab for reverse navigation (fish completion menu, helix theme picker) never saw it. Emit CSI Z when Shift is held. Co-Authored-By: Claude Opus 4.8 --- src/main/java/com/gregor/jprototerm/KeyEncoder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregor/jprototerm/KeyEncoder.java b/src/main/java/com/gregor/jprototerm/KeyEncoder.java index 765b1b3..296f624 100644 --- a/src/main/java/com/gregor/jprototerm/KeyEncoder.java +++ b/src/main/java/com/gregor/jprototerm/KeyEncoder.java @@ -26,7 +26,7 @@ final class KeyEncoder { return switch (code) { case ENTER -> "\r"; case BACK_SPACE -> "\u007f"; - case TAB -> "\t"; + case TAB -> event.isShiftDown() ? "\u001b[Z" : "\t"; case ESCAPE -> "\u001b"; case UP -> "\u001b[A"; case DOWN -> "\u001b[B";