Skip to content

macos: Korean IME: Initial syllable composition fails on first input #13235

Description

@bo2themax

Just tested a few Korean IME related discussion, can confirm that this is still happening on tip (c41c6b8)

Discussed in #9213

Originally posted by icedac October 15, 2025

CleanShot.2025-10-15.at.15.30.56.mp4

Title: [Bug] Korean IME: Initial syllable composition fails on first input

Description

When using the Korean IME in the Ghostty terminal on macOS, the initial consonant (Jamo) of the first typed syllable is immediately committed to the terminal instead of entering a pre-edit state. When the subsequent vowel is typed, the initial consonant disappears, and a new composition begins, resulting in the loss of the first consonant.

This issue only occurs on the very first attempt to type Korean on changing English to Korean. Subsequent attempts to types work correctly.

Environment

  • Ghostty Version: 1.2.2
CleanShot 2025-10-15 at 16 39 54
  • Operating System: macOS
  System Version:	macOS 15.5 (24F74)
  Kernel Version:	Darwin 24.5.0
  Secure Virtual Memory:	Enabled
  System Integrity Protection:	Enabled
  Time since boot:	29 days, 1 hour, 13 minutes

  Model Name:	MacBook Pro
  Model Identifier:	Mac15,8
  Chip:	Apple M3 Max
  Total Number of Cores:	16 (12 performance and 4 efficiency)
  Memory:	128 GB
  System Firmware Version:	11881.121.1
  OS Loader Version:	11881.121.1
  • Shell: zsh
  • Input Method: Standard macOS Korean IME (2-Set Korean)

Steps to Reproduce

  1. Launch the Ghostty terminal.
  2. Switch the system input method to Korean.
  3. Attempt to type the word "한글" (Hangeul) by pressing the keys g, k, s in sequence.
  4. Problem: The moment you press g (for the character ), it is rendered directly to the terminal instead of being held in a pre-edit buffer (which is typically indicated by an blinking cursor box or curosr underline).
  5. When you then press k (for the vowel ), the previously committed character remain in the terminal, and only the input starts fresh from .
  6. The final result is incorrect, forming ㅏㄴ (ks) after 'ㅎ' instead of the intended (gks).

Expected Behavior

When the key for the initial consonant is pressed, it should be held in the IME's pre-edit buffer, awaiting the next vowel for composition. It should not be committed to the terminal immediately. Typing the subsequent vowel should correctly combine with the buffered to form the syllable .

Actual Behavior

The initial consonant is prematurely committed to the terminal as a final character. When the next vowel is typed, this committed consonant is ignored, and a new composition process begins. This bug only affects the first attempt at Korean input on changing English to Korean; subsequent attempts works correctly, as demonstrated in the attached video.

Additional Context

This bug significantly impacts the user experience for those who type in Korean, causing constant interruptions and errors. A review of how the terminal handles IME composition for complex script languages seems necessary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions