Shift+Enter acts like Enter (submits) in KDE Konsole — multi-line input not triggered
Open 💬 0 comments Opened Jun 29, 2026 by ablundgren
Description
In KDE Konsole, pressing Shift+Enter submits the prompt instead of inserting a newline — i.e. Shift+Enter behaves identically to Enter. There is no way to enter multi-line prompts via Shift+Enter, and /terminal-setup refuses to run ("Terminal setup cannot be run from konsole").
Environment
- Claude Code CLI on Linux
- KDE Konsole 25.12.3 (
KONSOLE_VERSION=251203) TERM=xterm-256colorTERM_PROGRAMis not set by KonsoleKITTY_WINDOW_IDis not set by Konsole
Root cause analysis
Two compounding issues:
\EOMkeytab default. Konsole's default XFree4 keytab mapsShift+Return→\EOM(ESC O M, a legacy VT100 numeric-keypad sequence). Claude Code does not interpret\EOMas a newline, so the modifier is effectively dropped and the line submits. (This is what #2115 described; it was closed as "not planned.")
- Terminal detection doesn't recognize Konsole. Claude Code's kitty-keyboard-protocol support is gated on a terminal whitelist (
kitty,iTerm.app,WezTerm,ghostty) detected primarily viaTERM_PROGRAM. Konsole 25.12 does implement the kitty keyboard protocol, but Claude never enables it because Konsole doesn't setTERM_PROGRAM, and per #27868 theKITTY_WINDOW_IDcheck happens afterTERM_PROGRAMresolves. So even a protocol-capable Konsole is treated as a dumb terminal.
Steps to reproduce
- Open Claude Code in Konsole 25.12.x.
- Type some text, press Shift+Enter.
- Expected: a newline is inserted (multi-line input continues).
- Actual: the prompt is submitted, exactly as if Enter were pressed.
Things tried
/terminal-setup→ "Terminal setup cannot be run from konsole."- Spoofing
TERM_PROGRAM=kitty(scoped via alias) to force kitty-protocol negotiation → did not work (Shift+Enter still submits). Ctrl+Jand\+ Enter do work as multi-line fallbacks, but Shift+Enter is the expected/industry-standard chord.
Requested fix (any one of)
- Interpret the
\EOMsequence as a newline (reopen scope of #2115), or - Add Konsole to the kitty-protocol detection by recognizing
KONSOLE_VERSION, or - Fix the detection priority so
KITTY_WINDOW_IDis honored even whenTERM_PROGRAMis set/unset (#27868), letting protocol-capable Konsole work.
Related
- #2115 — Handle
\EOMescape sequence as newline for Konsole compatibility (closed "not planned") - #27868 — kitty detection ignores
KITTY_WINDOW_IDwhenTERM_PROGRAMis set - #1259 — Support Shift+Enter for multiline input