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-256color
  • TERM_PROGRAM is not set by Konsole
  • KITTY_WINDOW_ID is not set by Konsole

Root cause analysis

Two compounding issues:

  1. \EOM keytab default. Konsole's default XFree4 keytab maps Shift+Return\EOM (ESC O M, a legacy VT100 numeric-keypad sequence). Claude Code does not interpret \EOM as a newline, so the modifier is effectively dropped and the line submits. (This is what #2115 described; it was closed as "not planned.")
  1. 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 via TERM_PROGRAM. Konsole 25.12 does implement the kitty keyboard protocol, but Claude never enables it because Konsole doesn't set TERM_PROGRAM, and per #27868 the KITTY_WINDOW_ID check happens after TERM_PROGRAM resolves. So even a protocol-capable Konsole is treated as a dumb terminal.

Steps to reproduce

  1. Open Claude Code in Konsole 25.12.x.
  2. Type some text, press Shift+Enter.
  3. Expected: a newline is inserted (multi-line input continues).
  4. 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+J and \ + Enter do work as multi-line fallbacks, but Shift+Enter is the expected/industry-standard chord.

Requested fix (any one of)

  • Interpret the \EOM sequence 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_ID is honored even when TERM_PROGRAM is set/unset (#27868), letting protocol-capable Konsole work.

Related

  • #2115 — Handle \EOM escape sequence as newline for Konsole compatibility (closed "not planned")
  • #27868 — kitty detection ignores KITTY_WINDOW_ID when TERM_PROGRAM is set
  • #1259 — Support Shift+Enter for multiline input

View original on GitHub ↗