한글 입력

저도 Claude Code와 Codex에 하루 종일 한글로 작업을 시킵니다. 그래서 이 페이지는 특히 신경 써서 정리했습니다.

cmux를 쓸 때 한글 입력 문제가 자주 있었습니다. 빨리 치면 자모가 따로 입력되고, Enter를 누르면 마지막 글자가 다음 줄로 넘어갔습니다. 한글 상태에서 Ctrl+C를 누르면 멈추지 않고 ㅊ만 입력됐습니다. 모두 터미널이 한글 IME를 처리하는 방식에서 생기는 문제라서, lmux를 만들면서 하나씩 고쳤습니다.

lmux 전체 소개는 한국어 README에 있습니다. 이 페이지에는 한글로 입력할 때 달라지는 내용만 모았습니다.

고친 문제#

  • 빨리 치거나 잠깐 멈췄다 치면 자모가 깨지는 문제: 잠깐 멈췄다가 다시 치면 첫 글자가 ㅎㅏ이처럼 따로 입력되곤 했습니다. 이제 하이로 입력됩니다. 첫 자모가 혼자 확정되는 일도 없습니다.
  • Enter를 누르면 마지막 글자가 다음 줄로 넘어가는 문제: 조합 중인 글자가 있을 때 Enter를 누르면 그 글자만 다음 프롬프트로 넘어갔습니다. 이제 Enter 한 번에 마지막 글자까지 같이 입력됩니다.
  • 조합 중에 다른 키를 누르면 글자가 사라지는 문제: 이제 Shift+Enter, Esc, Backspace, ⌘T, ⌘V를 눌러도 조합 중이던 글자가 그대로 입력됩니다. Backspace는 한 → 하 → ㅎ → (없음) 순서로 자모를 하나씩 지웁니다.
  • 한글 상태에서 Ctrl+C가 동작하지 않는 문제: Claude Code에서 입력을 지우거나 작업을 멈추려고 Ctrl+C를 눌렀는데 ㅊ만 입력된 경험이 한 번쯤 있을 겁니다. Claude Code 이슈와 Ghostty 논의에도 올라와 있는 문제입니다. lmux에서는 한글 상태에서도 Ctrl+C가 정상적으로 동작합니다. 조합 중인 글자가 있으면 먼저 확정한 뒤 멈춥니다.
  • ⌘C를 누르면 ㅊ이 같이 입력되는 문제: Claude Code 안에서 복사했는데 프롬프트에 ㅊ이 남는 것도 같은 원인이었습니다. 이제 복사만 되고 아무것도 입력되지 않습니다.
  • Ctrl+I, Ctrl+M, Ctrl+Shift+A가 자모로 입력되는 문제: 이제 영문 자판일 때와 같은 바이트를 보냅니다.
  • 한글 상태에서 ⌃⌘S, ⌥⌘C 같은 단축키가 동작하지 않는 문제: 이제 한/영 전환 없이 바로 누르면 됩니다.
  • 조합 중에 다른 pane을 클릭하면 글자가 사라지는 문제: 가를 입력하다가 다른 pane에 갔다 와도 글자가 그대로 남아 있습니다.
  • 한글 폭이 두 칸에 맞지 않는 문제: 영문 폰트와 상관없이 한글은 D2Coding으로 정확히 두 칸에 표시됩니다. D2Coding은 lmux에 들어 있어서 따로 설치할 필요가 없고, 시스템 언어가 한국어면 lmux 기본 폰트도 D2Coding입니다. 다른 폰트를 쓰려면 Ghostty의 font-codepoint-map으로 바꾸면 됩니다.
  • History에서 한글 검색이 안 되는 문제: 이제 ⇧⌘H에서 지난 세션을 한글로 검색할 수 있습니다.

테스트 방법#

  • 한글 상태에서 lmux 메뉴 단축키와 Ghostty 바인딩 전부, Ctrl+A~Z, Shift·⌥ 조합을 하나씩 눌러 보는 테스트가 있습니다. 그냥 누르는 경우와 가를 조합하는 중에 누르는 경우를 legacy 모드와 kitty 키보드 프로토콜(플래그 1 / 5 / 31, Claude Code와 Codex가 켜는 값)에서 각각 실행합니다. 전체 549개 케이스이고, 단축키가 정상적으로 동작하면서 pty로 자모가 하나도 새지 않아야 통과입니다.
  • CI에서는 매번 mock IME로 실행하고, 같은 케이스를 macOS의 실제 두벌식 IME로 한 번 더 확인합니다. GitHub Actions 러너에서 두벌식을 켜고 실제 키 이벤트를 보냅니다.
  • 릴리스 전에는 Claude Code 입력창에서 체크리스트에 따라 직접 확인합니다. 커서 위치, 후보창, Shift+Enter 줄바꿈처럼 자동화로 확인할 수 없는 부분만 봅니다.

아직 안 되는 것#

macos-option-as-alt = true를 켠 상태에서 한글로 ⌥B, ⌥F를 누르면 ESC b 대신 자모(ㅠ)가 입력됩니다. 업스트림 Ghostty에서도 똑같이 발생합니다. 0.1.x에서 고칠 예정이고, 그 전까지는 한/영 전환 후에 누르면 됩니다.

문제가 있으면#

GitHub 이슈로 알려 주시기 바랍니다. 어떤 키를 눌렀고 무엇이 입력됐는지만 적어 주시면 됩니다. 한국어로 쓰셔도 괜찮습니다.

영어 요약은 Korean input에 있습니다.