Skip to content

Windows: ctrl+s never reaches panes, only a release event is emitted #3932

Description

@0xMMA

Is this a reproducible bug?

  • I confirm this is a reproducible bug, not a feature request, idea, question, contribution proposal, or direction check.
  • I reproduced this bug on the version and environment reported below using the exact steps provided.

Current behavior

ctrl+s never reaches a pane application on a native Windows client. Claude Code binds
ctrl+s to stashing the current prompt input; inside a Herdr pane the key does nothing.
The same Claude Code build in the same Windows Terminal, started directly from PowerShell
without Herdr, stashes the input as expected.

With HERDR_WINDOWS_INPUT_TRACE=1, two ctrl+s presses produce only release events and
no press event:

windows input trace: client input events events=[Key { code: Char('s'), modifiers: 2,
  kind: Release, repeat_count: 1, generated_text: None, source: WindowsConsole { record:
  WindowsKeyRecord { key_down: false, repeat_count: 1, virtual_key_code: 83,
  virtual_scan_code: 31, unicode: 19, control_key_state: 40 } } }]

Plain s in the same trace produces both a press and a release. ctrl+shift+s behaves
like ctrl+s. ctrl+g, ctrl+b, ctrl+j and unmodified keys are unaffected.

Expected behavior

ctrl+s reaches the pane application as a key press, like other ctrl+letter chords.

Reproduction

  1. In Windows Terminal, run herdr.
  2. In a pane, run claude, type a few characters into the prompt, press ctrl+s.
    Nothing happens; the input stays in the prompt.
  3. Run claude directly in a PowerShell tab in the same terminal, type a few characters,
    press ctrl+s. The input is stashed.

Optional, to see it at the input layer: start a client with
$env:HERDR_WINDOWS_INPUT_TRACE="1"; herdr, press ctrl+s twice and ctrl+g once, then
compare the emitted events in herdr-client.log.

Impact

ctrl+s is a shortcut I use constantly to park a half-written prompt, change the model,
and restore the text. It is unusable in every Herdr pane on this machine, so I had to
rebind the action to alt+s in Claude Code.

Environment

  • Herdr version: 0.9.0, client and server
  • Update channel: stable
  • Operating system: Windows 11 Pro N, OS build 10.0.26200
  • Terminal: Windows Terminal 1.24.11911.0
  • Shell: PowerShell 7
  • Keyboard layout: US-International
  • Relevant config: none, reproduces with default config

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinginputkeyboard, mouse, clipboard, selection, or IME behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionp2valid narrow or ordinary defect with limited impact or a practical workaroundwindowsaffects Windows-specific behavior

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions