Environment
- SlayZone 0.35.0, macOS 15.6 (Darwin 25.6.0)
- Keyboard layout: Swedish - Pro
Problem
Characters that require Option on non-US Mac layouts cannot be typed in terminal
sessions. On Swedish - Pro this includes @ | \ [ ] { } ~ $. Option+2 emits ESC 2
instead of @.
Repro
- Set macOS input source to Swedish - Pro (or any Nordic/German layout).
- Open a task session in Claude mode.
- At the Claude prompt, press Option+2.
Expected: @ is inserted and the file-reference picker opens.
Actual: no @ is inserted. The terminal receives ESC 2.
Cause
Contents/Resources/app.asar constructs the xterm.js terminal with:
const terminal = new Tn({
allowProposedApi: true,
macOptionIsMeta: true,
...
macOptionIsMeta: true disables xterm.js's third-level-shift handling
(_isThirdLevelShift), which is what allows Option to compose characters on macOS.
Fix
Set macOptionIsMeta: false (the xterm.js default), or expose it as a setting.
Ghostty's model is the better shape: option-as-alt = left | right | both | none,
which keeps one Option key composing and the other available as Meta for
word-navigation bindings.
Impact
Blocks @ file references in Claude sessions, and shell metacharacters generally,
for all non-US layout users. No workaround exists in-app; settings contain no
keyboard options, and ElectronAsarIntegrity prevents patching the bundle.
Environment
Problem
Characters that require Option on non-US Mac layouts cannot be typed in terminal
sessions. On Swedish - Pro this includes @ | \ [ ] { } ~ $. Option+2 emits ESC 2
instead of @.
Repro
Expected: @ is inserted and the file-reference picker opens.
Actual: no @ is inserted. The terminal receives ESC 2.
Cause
Contents/Resources/app.asar constructs the xterm.js terminal with:
macOptionIsMeta: true disables xterm.js's third-level-shift handling
(_isThirdLevelShift), which is what allows Option to compose characters on macOS.
Fix
Set macOptionIsMeta: false (the xterm.js default), or expose it as a setting.
Ghostty's model is the better shape: option-as-alt = left | right | both | none,
which keeps one Option key composing and the other available as Meta for
word-navigation bindings.
Impact
Blocks @ file references in Claude sessions, and shell metacharacters generally,
for all non-US layout users. No workaround exists in-app; settings contain no
keyboard options, and ElectronAsarIntegrity prevents patching the bundle.