모바일 한글 키보드
천지인·쿼티 레이아웃, 제스처, 조합 방식, 이벤트·commit
모바일 한글 키보드는 레이아웃(키 배치)과 조합 방식(탭·연타·스와이프 등)이 데스크톱 2벌식·3벌식과 다르다. 화면이 작아 키 수를 줄이고, 제스처로 자모를 확장한다.
1. 레이아웃 종류
Section titled “1. 레이아웃 종류”1.1 천지인(3×4 + 모드)
Section titled “1.1 천지인(3×4 + 모드)”- 12개 기본 키(3줄×4칸)에 자모를 배치. 숫자·기호는 별도 레이어(모드 전환).
- “천·지·인”은 초성·중성·종성을 한 키에 여러 자모로 묶어 두고, 탭(연타) 또는 모드로 골라 넣는 방식에서 유래한 이름이다.
- 자음/모음 모드를 전환하거나, 한 키에 “자음 여러 개” 또는 “모음 여러 개”를 배치해, 첫 번째 탭·두 번째 탭 등으로 다른 자모를 선택한다.
- 예: “ㄱ”이 있는 키를 한 번 누르면 ㄱ, 두 번 누르면 ㄲ, 스와이프하면 ㄲ(구현에 따라 다름).
1.2 10키 쿼티(또는 축소 쿼티)
Section titled “1.2 10키 쿼티(또는 축소 쿼티)”- 자음·모음을 줄인 키 배열로 한 손 입력에 맞춘다. 키 하나에 자모 2~3개를 배치하고, 연타·스와이프로 구분하는 경우가 많다.
- 데스크톱 2벌식과 비슷한 “자음 왼쪽, 모음 오른쪽” 구조를 유지하되, 키 수가 적다.
1.3 풀 쿼티
Section titled “1.3 풀 쿼티”- 데스크톱과 비슷한 전각 쿼티 배열. 두 손 입력용. 2벌식·3벌식 레이아웃을 그대로 쓰는 경우가 많다.
2. 천지인 조합 방식(개념)
Section titled “2. 천지인 조합 방식(개념)”- 순서: 초성 → 중성 → (선택) 종성. 데스크톱과 동일하다.
- 한 키에 여러 자모: 같은 키를 한 번 누르면 첫 번째 자모, 두 번 누르면 두 번째 자모(또는 쌍자음), 스와이프하면 또 다른 자모가 선택되는 식이다.
- 초성 선택: 자음 키(또는 자음 모드의 키)를 눌러 초성을 넣는다. 연타로 ㄱ→ㄲ 등.
- 중성 선택: 모음 키(또는 모음 모드로 전환 후 키)를 눌러 중성을 넣는다. ㅏ→ㅐ 등은 연타 또는 스와이프.
- 종성 선택: 받침이 필요하면 “종성 모드”로 전환하거나, 같은 자음 키를 “종성으로” 해석하는 타이밍에 눌러 넣는다.
실제 앱(천지인 공식, Gboard 한글, 삼성 키보드 등)마다 자모 배치와 연타/스와이프 매핑이 다르므로, 강의·구현 시에는 해당 앱의 설명서나 화면을 기준으로 정리하는 것이 좋다.
3. 제스처
Section titled “3. 제스처”3.1 스와이프
Section titled “3.1 스와이프”- 같은 키 위에서 방향에 따라 다른 자모: 예를 들어 ㄱ 키에서 “위로 스와이프” → ㄲ, “아래로 스와이프” → ㅋ(구현에 따라 다름).
- 모드 전환: 스와이프로 “자음 모드 ↔ 모음 모드” 또는 “초성 ↔ 종성” 전환.
3.2 롱프레스(길게 누르기)
Section titled “3.2 롱프레스(길게 누르기)”- 대체 문자·겹자모: 키를 길게 누르면 팝업으로 ㄲ, ㅋ 등이 나오고, 그중 하나를 선택해 넣는 방식.
- 숫자·기호: 롱프레스로 숫자·기호 레이어를 여는 경우도 있다.
3.3 연타
Section titled “3.3 연타”- 같은 키 두 번: ㄱ → ㄲ, ㅏ → ㅐ 등. 입력기마다 “몇 번째 탭에 어떤 자모”인지 다르다.
- 세 번 이상: 겹모음(ㅘ, ㅙ, ㅚ 등)을 연타로 순환하는 구현도 있다.
입력기 앱(Gboard, 삼성 키보드, 나랏글 등)마다 제스처 매핑이 다르다. 에디터는 “어떤 제스처로 넣었는지”를 알 수 없고, composition 이벤트로 넘어오는 문자열만 처리하면 된다.
4. 조합 방식 요약
Section titled “4. 조합 방식 요약”- 연타: 같은 키 여러 번으로 자모 순환(ㄱ→ㄲ, ㅏ→ㅐ 등).
- 동시 조합: 초성 선택 후 중성 키를 누르면 “가”가 되는 식. 데스크톱과 마찬가지로 초성+중성이 먼저고, 그다음 종성이다.
- 순서: 초성 → 중성 → (선택) 종성. 모바일도 이 순서를 유지하되, 키 수가 적어서 모드 전환과 제스처로 자모를 골라 넣는다.
천지인에서 “초성·중성·종성 선택 순서”와 “한 키에 배치된 자모 순서”는 입력기 구현에 따라 다르므로, 실제 앱·설명서를 참고하는 것이 좋다.
5. 이벤트·commit
Section titled “5. 이벤트·commit”5.1 composition 이벤트
Section titled “5.1 composition 이벤트”- 모바일 브라우저에서도 compositionstart → compositionupdate 반복 → compositionend가 발생한다.
- compositionupdate 호출 횟수는 데스크톱보다 적을 수 있다. 한 번에 여러 글자가
data에 올 수도 있다. - compositionend 시점의
data가 commit 문자열이다. 에디터는 이 문자열을 문서에 반영하면 된다.
5.2 가상 키보드와 포커스
Section titled “5.2 가상 키보드와 포커스”- 키보드가 올라온 상태에서 포커스 이동(다른 입력란 클릭)이나 스크롤이 일어나면, 조합이 취소되고
compositionend가data빈 문자열로 올 수 있다. - 플랫폼·브라우저마다 동작이 다를 수 있으므로, 실제 Android/iOS 기기에서 한글을 입력해 보며 확인하는 것이 좋다.
5.3 테스트 시 확인할 것
Section titled “5.3 테스트 시 확인할 것”- 조합 중인 구간이 한 덩어리로 표시되는지.
- commit 시 **문서에 한 글자(또는 여러 글자)**가 정확히 반영되는지.
- Esc·포커스 이동 시 조합이 취소되는지.
- 한글·영문 전환 후 다시 한글 입력 시 composition이 정상적으로 시작되는지.
6. 입력기 앱별 차이
Section titled “6. 입력기 앱별 차이”- Gboard, 삼성 키보드, 나랏글 등: 조합 알고리즘(자모 → 완성형 변환)과 commit 타이밍(스페이스로 확정 여부, 다음 자모 입력 시 자동 확정 여부)이 다를 수 있다.
- 에디터는 “어떤 앱을 쓰는지”를 구분하지 않고, CompositionEvent.data와 compositionend 시점의 commit만 처리하면 된다.
- 특정 앱에서만 조합이 깨지면, 해당 앱이 보내는 이벤트 순서와 data 값을 로그로 남겨, 데스크톱·다른 앱과 비교해 보면 원인 파악에 도움이 된다.