Skip to content

Korean (Hangul) IME input not working #119

Open

Description

@hongsw

Description

Korean (Hangul) IME input is not working in ghostty-web 0.4.0.

While PR #90 added support for Chinese and Japanese IME input, Korean IME behaves differently and doesn't work properly.

Steps to Reproduce

  1. Visit the official demo at https://ghostty.ondis.co
  2. Switch to Korean input method (e.g., fcitx5-hangul on Linux, or macOS Korean keyboard)
  3. Try typing Korean characters like "안녕하세요"

Expected Behavior

Korean characters should be composed and displayed in the terminal, similar to how Chinese/Japanese IME works.

Actual Behavior

Korean IME composition doesn't work. Characters are not displayed or composition events are not handled properly.

Environment

  • OS: Linux (tested), likely affects all platforms
  • Browser: Chrome/Firefox
  • ghostty-web version: 0.4.0

Technical Notes

Korean IME differs from Chinese/Japanese:

  • Korean uses a unique syllable block composition system (Jamo: 자음+모음+자음)
  • The composition process involves combining initial consonant + vowel + optional final consonant
  • During composition, partially formed characters (e.g., ㄱ → 가 → 간) need to be displayed

The current handleCompositionEnd in InputHandler may not properly handle Korean composition events.

Related

Activity

  1. hongsw commented on Jan 25, 2026

    @hongsw
    Author

    Additional info: Pasting Korean text (Ctrl+V) works correctly - the terminal renders Korean characters properly.

    This confirms:

    • Terminal rendering of Korean characters ✅ works
    • Clipboard paste handling ✅ works
    • IME composition input ❌ broken

    The issue is specifically in the IME event handling (compositionstart/update/end), not in the terminal's ability to display Korean text.

  2. hongsw commented on Jan 25, 2026

    @hongsw
    Author
    Image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions