Voice push-to-talk broken with modifier-combo bindings (meta+space, f9) in 2.1.84 — only bare space works

Resolved 💬 2 comments Opened Mar 26, 2026 by omar-elmountassir Closed Mar 30, 2026

Title

Voice push-to-talk does not activate with modifier-combo or function key bindings (meta+space, f9, etc.) — only bare space works

Description

After configuring voice:pushToTalk to use meta+space (or f9) in keybindings.json, activating /voice and pressing the bound key produces no response — no recording indicator, no visual feedback. The default space binding works correctly.

Steps to Reproduce

  1. Add to ~/.claude/keybindings.json:

``json
{ "context": "Chat", "bindings": { "meta+space": "voice:pushToTalk" } }
``

  1. Run claude (version 2.1.84)
  2. Type /voice → "Voice mode enabled. Hold meta+Space to record."
  3. Hold Alt+Space — nothing happens
  4. Change binding to "space": "voice:pushToTalk"
  5. Toggle /voice off then on
  6. Hold Space — voice recording activates correctly

Expected Behavior

meta+space should activate voice recording immediately (as it did in earlier versions).

Actual Behavior

No response. Voice handler silently returns without activating recording.

Environment

  • Claude Code: 2.1.84
  • OS: Linux 6.18.7 (Pop!_OS/Ubuntu based)
  • Terminal: bash (xterm-256color) and VS Code integrated terminal
  • Auth: OAuth claude.ai, Max subscription
  • GNOME Alt+Space unbound (confirmed via gsettings)

Analysis

Binary analysis shows the handler Umf splits into two code paths:

  • Character path (O !== null): for single-char bindings like space — works
  • Modifier-combo path (O === null): for bindings like meta+space or f9 — broken

The modifier path calls kiD() for key matching and should activate immediately (the condition O === null makes activation unconditional), but empirically no activation occurs.

Changelog notes:

  • 2.1.78: "Fixed voice mode modifier-combo push-to-talk keybindings requiring a hold"
  • 2.1.84: "Fixed voice push-to-talk: holding the voice key no longer leaks characters"

The 2.1.84 character-leak fix likely re-introduced the modifier-combo regression that 2.1.78 had fixed.

Workaround

Use the default space binding instead of modifier combos.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗