[BUG] Desktop: ⌘/ never opens the shortcuts list on layouts where / needs Shift – it toggles an ordered list instead

Status Open
Reported on v2.1.229
Maintainer reply None cached
Activity 0 comments · opened Aug 14, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Code

What's Wrong?

⌘/ is matched against the character the key produces, with the modifier set required to match exactly. The binding declares no Shift, so on any layout where / is a shifted character the chord carries Shift and can never match. On a German Mac layout / is ⇧7, so ⌘/ is unreachable.

It is not a silent no-op. The same chord reaches the composer's TipTap keymap, which binds Mod-Shift-7 to toggleOrderedList, so the keys that should open the shortcuts list start a numbered list instead. That layer gets it right because prosemirror-keymap retries a failed lookup against the US base layout derived from event.keyCode. The app's own table has no such retry.

Three more entries in that table go the same way here:

  • ⌘; (side chat) needs ⇧, on German, so it always carries Shift
  • ⇧⌘, (settings) resolves to ; rather than ,, so the character comparison fails before modifiers matter
  • ⌃[ and ⌃] (focus pane) need ⌥5 and ⌥6, so they always carry Alt

⌘⇧, is worth singling out. On this layout that one chord is both ⌘; and ⇧⌘,, so it ought to reach the side chat or settings. It reaches neither.

What Should Happen?

⌘/ opens the keyboard shortcuts list on any layout.

Worth flagging rather than prescribing: Binding these by event.code would move them to whatever key sits in the US position, which is the opposite bug already reported in #78002.

Error Messages/Logs

No error is produced. Read from the shipped web bundle, reformatted for readability.

// assets/v1/shared-2-*.js – the shortcut table and its matcher
shortcuts_modal: {bindings: [{key: "/", modifiers: ["cmd"], platform: "mac"}]}

function match(e, b) {
  if (b.code) { if (e.code !== b.code) return false }
  else if (!e.key || e.key.toLowerCase() !== b.key.toLowerCase()) return false
  const cmd = ..., ctrl = ..., shift = ..., alt = ...
  return e.metaKey === cmd && e.ctrlKey === ctrl && e.shiftKey === shift && e.altKey === alt
}

The letter shortcuts in the same table do carry a code ({key: "r", code: "KeyR", ...}), so ⌥⌘R works fine here. Only the punctuation ones match on the character alone.

// assets/v1/vendor-all-8-*.js – TipTap, the colliding binding
addKeyboardShortcuts() {
  return {"Mod-Shift-7": () => this.editor.commands.toggleOrderedList()}
}

// assets/v1/vendor-all-7-*.js – prosemirror-keymap, ol = US base layout by keyCode
if ((n.altKey || n.metaKey || n.ctrlKey) && (r = ol[n.keyCode]) && r != o) {
  let hit = t[fl(r, n)]
  if (hit && hit(e.state, e.dispatch, e)) return true
}

Steps to Reproduce

  1. Set the macOS keyboard layout to German
  2. Open the desktop app and focus the prompt box
  3. Press ⌘/, which here is ⌘⇧7. The shortcuts dialog does not open and a numbered list starts instead
  4. ⌘K, then "All keyboard shortcuts", opens the same dialog, so only the binding is out of reach
  5. Press ⌘⇧,, which here is both ⌘; and ⇧⌘,. Neither the side chat nor settings opens
  6. Press ⌃⌥5 or ⌃⌥6, which is ⌃[ and ⌃]. Pane focus does not move

French, Spanish, Nordic and JIS layouts reproduce it the same way.

Claude Model

Not sure / Multiple models

Is this a regression?

No, this never worked

Last Working Version

n/a

Claude Code Version

Claude desktop app 1.30096.1 (194d93), bundled Claude Code 2.1.229

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other – no terminal involved, this is the desktop app UI

Additional Information

macOS 26.5.1 (25F80), German (Apple) keyboard layout.

No workaround beyond ⌘K. ~/.claude/keybindings.json does not reach these bindings, and macOS System Settings → Keyboard → App Shortcuts cannot help because none of them is a menu bar item.

Related, and I do not think any of these covers it:

  • #78002 (open) is the inverse – zoom bound to physical US positions, so Norwegian + / - fire the wrong action
  • #67450 (closed, stale) is closest in kind – ⌃` for the Terminal panel, unreachable on AZERTY and JIS
  • #61340 (closed, stale) covers Ctrl-Shift-[ / Ctrl-' / Ctrl-\ on German, but those are the Windows terminal shortcuts rather than this table
  • #58076 (closed, stale) is the same root cause one layer down, in the TUI

View original on GitHub ↗