Ctrl+C not sent to TUI processes while Korean IME is in composing state (macOS) #10775
Unanswered
RoundTable02
asked this question in
Issue Triage
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Issue Description
When the macOS native Korean (Hangul) input method is the active input source, Ctrl+C is not delivered to TUI processes (such as Claude Code, Codex, OpenCode). This occurs regardless of whether the IME is actively composing — simply having the Korean input source toggled on is enough to reproduce the issue. The key event appears to be consumed or dropped instead of being forwarded as an interrupt signal to the running process.
ghostty_ctrl_c_edit.mov
This issue is specific to Ghostty — the same processes in Terminal.app and iTerm2 correctly receive Ctrl+C regardless of the active input source.
Notably, Ghostty's own shell (non-TUI, cooked mode) handles Ctrl+C correctly even with the Korean input source active. The issue only occurs when a process has switched the terminal to raw/alternate screen mode.
Expected Behavior
When
Ctrl+Cis pressed while the Korean input source is active, the key event should be delivered to the foreground process asSIGINT(or equivalent key event\x03), consistent with the behavior in Terminal.app and iTerm2.Modifier key combinations like Ctrl+ should be handled as control sequences regardless of which input source is currently active, as they are not text input.
Actual Behavior
When the Korean input source is active (toggled to Korean) and Ctrl+C is pressed inside a TUI process running in raw/alternate screen mode:
The Ctrl+C keystroke is not forwarded to the process — even if no text is being composed.
The process continues running and does not receive an interrupt.
The user must first switch to the English input source (via the language toggle key), then press Ctrl+C again to terminate the process.
In Ghostty's own shell (cooked mode), Ctrl+C works correctly even with the Korean input source active — this suggests the issue is in how Ghostty routes key events when a non-Latin input source is active and the terminal is in raw mode.
Reproduction Steps
(or any other TUI application like opencode, codex, etc.)
Note: The issue also occurs while actively composing Korean text, but composing is not required to reproduce — simply having the Korean input source selected is sufficient.
Comparison test (confirming this is Ghostty-specific):
Repeat steps 2–4 in Terminal.app → Ctrl+C correctly terminates the process.
Repeat steps 2–4 in Ghostty's own shell (without a TUI process) → Ctrl+C correctly sends interrupt.
Ghostty Logs
Korean input source active + Ctrl+C in TUI process: No log output at all. The key event does not appear in Ghostty's debug logs, suggesting it is being consumed before reaching Ghostty's input processing pipeline.
This indicates the issue is at the macOS input source / IME integration layer — the Ctrl+C key event is not being forwarded from the input method to Ghostty's key event handler when a non-Latin input source is active and the terminal is in raw mode.
OS Version Information
macOS Tahoe 26.2
(Linux only) Display Server
None
(Linux only) Desktop Environment/Window Manager
No response
Minimal Ghostty Configuration
Additional Relevant Configuration
No response
I acknowledge that:
```) on separate lines.All reactions