Skip to content

fix: 모바일 IME에서 음절 조합 전에 자모가 떨어지는 문제 수정 - #5

Merged
99mini merged 1 commit into
mainfrom
claude/prd-review-work-bw0plr
Aug 17, 2026
Merged

99mini merged 1 commit into
mainfrom
claude/prd-review-work-bw0plr

Conversation

@99mini

@99mini 99mini commented Aug 17, 2026

Copy link
Copy Markdown
Owner

문제

PC에서는 조합이 끝날 때까지 기다렸다가 떨어지는데, 모바일에서는 음절이 합쳐지기 전에 자모(ㅎ, ㅏ…)가 따로 떨어짐.

원인: 일부 모바일 키보드는 표준 composition 이벤트 대신 "일단 글자를 커밋하고, 다음 자모가 오면 지우고 교체"하는 방식으로 동작한다. 기존 코드는 커밋된 값을 즉시 스폰하고 input.value를 비웠기 때문에 키보드가 교체할 대상이 사라져 조합이 끊겼다.

수정 (파일 1개 — src/lib/input.ts)

input.value를 버퍼로 두고 정착(settle) 시점에만 스폰하는 모델로 교체:

  • 조합 중(composition* / insertCompositionText)에는 아무것도 안 함
  • 조합이 끝나면 settle 예약 — 연속 타이핑으로 새 조합이 이미 시작됐으면 스킵되고, 확정분은 버퍼에 남아 다음 settle 때 순서대로 스폰
  • 조합 이벤트 없이 값이 바뀌는 키보드: 마지막 글자가 아직 변할 수 있는 한글이면 300ms 기다렸다가 settle. 그 사이 키보드가 ㅎ → 하 → 한으로 교체하면 최종 결과만 떨어진다
  • 영문·숫자·기호는 즉시 settle (지연 없음)
  • 키보드가 닫히면(blur) 남은 버퍼를 그대로 떨어뜨림

확인 방법

  • 모바일: "한글" 타이핑 → 한, 글 두 글자만 떨어짐 (자모가 따로 안 떨어짐). 빠르게 연속 타이핑해도 순서 유지.
  • PC: 기존과 동일 (조합 완료 시 낙하, 영문 즉시 낙하).

트레이드오프: 커밋-교체형 키보드에서 한글은 마지막 글자가 입력 멈춘 뒤 ~300ms 후에 떨어집니다. 조합 감각상 체감되지 않는 수준이고, 표준 IME(iOS 등)는 지연 없이 기존대로 동작합니다.


Generated by Claude Code

- input.value 를 버퍼로 두고 정착(settle) 시점에만 스폰하는 모델로 교체
- 즉시 flush + value 비우기가 커밋-교체형 키보드의 조합을 끊던 것이 원인
- 마지막 글자가 아직 변할 수 있는 한글이면 300ms 유예 후 settle
- 조합 종료 직후 새 조합이 시작되면 settle 을 스킵하고 다음 settle 에 합류
- blur 시 남은 버퍼를 그대로 스폰

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013jzX6PJvGgLYvdvXBBRS4m
@99mini 99mini self-assigned this Aug 17, 2026
@99mini
99mini merged commit de9b31c into main Aug 17, 2026
4 checks passed
@99mini
99mini deleted the claude/prd-review-work-bw0plr branch August 17, 2026 00:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants