일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 삼성
- 빅데이터
- NarwalFreo
- 멤버십
- Neural Network
- SSM
- 삼성전자 소프트웨어멤버십 SSM
- Google App Engine
- 구글 앱 엔진
- hopfield network
- 패턴인식
- 증강현실
- 인공지능
- 패턴 인식
- 삼성소프트웨어멤버십
- Friendship
- Bidirectional Associative Memory
- 가상화
- 파이썬
- 물걸레로봇청소기추천
- 갤럭시탭S8울트라
- 물걸레자동세척로봇청소기
- 신경회로망
- 고려대학교
- 신경망
- 하이퍼바이저
- 나르왈프레오
- 동아리
- BAM
- Python
- Today
- Total
정보공간_1
[4기 전주 김재호] 안드로이드 소프트웨어 키보드#5 - 조합 본문
안녕하세요 22-2기 김재호입니다.
지금까지는 키보드의 모양을 만들고 눌려진 문자 이벤트를 처리하는 방법에 대하여 살펴보았고
만들어진 문자를 표시하고 전송하는 방식 또한 알아보았습니다.
그러면 이제 실제로 문자를 조합하기 위해서는 어떻게 해야 하는지 확인해 보겠습니다.
2벌식 방식의 한글 키보드라면 자음과 모음의 조합에 따라 글자가 만들어지고 몇몇 키보드는 같은 키가 연속해서 눌려지게 되면 입력되는 글자가 바뀌기도 합니다.
여기서는 3x3 방식의 영문 전화기 키패드 방식을 예로 들어 설명드리겠습니다.
만약 피처폰에서 많이 쓰이는 영문 키패드를 구현해야 한다고 하면 키패드의 모양은 다음과 같습니다.
각각의 키패드는 ABC, DEF, GHI, JKL 등 영문자 3,4개의 그룹으로 이루어져 있으며 같은 그룹의 키가 입력될 때마다 그 그룹의 알파벳을 순회하며 표시하게 됩니다. 다른 그룹의 버튼이 눌리거나 스페이스, 엔터 키등 다른 키가 입력될 경우 조합이 종료되고 그 알파벳이 커밋되게 됩니다.
예를 들어 HI를 입력할 경우 [GHI] [GHI] [다른키] [GHI] [GHI] [GHI]의 순서로 입력하게 되면
G, H, HG, HH, HI 의 순서로 글자가 입력되게 됩니다.
자세히 알아본다면 ABC 버튼이 눌릴 때마다 A->B->C->A->B->C->A->..순서로 조합중인 문자가 바뀌다가 다른 키가 입력되는 경우 조합이 완료되고 현재 글자가 입력되어야 합니다.
예를 들어 ABC, ABC, DEF 순서로 키를 입력한 경우 조합중인 글자는 A->B 순서로 바뀐 후 DEF가 입력되면 B가 커밋된 다음 조합중인 글자는 D로 바뀌게 됩니다.
이런 식으로 변하는 상태를 그림으로 나타내 보면 다음과 같습니다
여기서는 ABC 그룹과 DEF 그룹만을 표시하였지만 알파벳을 나타내는 8개 버튼, 스페이스, 엔터 등 다른 키 모두 포함되어야 모든 경우의 수를 나타내는 오토마타를 구현할 수 있습니다.
오토마타에 의해 조합된 문자를 텍스트 위젯에 전송하는 예
한글의 경우 구현하는 키보드에 따라 다른 방식의 오토마타를 구현해야 합니다.
2벌식 키보드의 경우 자음과 모음으로 나누어져 있으며 초성, 중성, 종성의 순으로 조합되도록 작성됩니다.
구글의 단모음 키보드의 경우 쌍자음, 쌍모음이 일반 자음과 모음을 2번 누르는 것으로 입력되며 역시 하나의 자음이 초성으로 입력될 수 도 있으며 종성이 될 수도 있습니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[4기 신촌 백재현] 유니코드의 이해 (0) | 2013.12.05 |
---|---|
[4기 신촌 백재현] Windows Device Driver의 Logo 인증 받는 절차 (0) | 2013.12.05 |
[4기 전주 김재호] 안드로이드 소프트웨어 키보드#4 - 이벤트 처리 (0) | 2013.12.05 |
[4기 신촌 백재현] Luxand Face SDK를 사용하여 얼굴 유사도를 측정해보자 (4) | 2013.12.05 |
[4기 대구 박병권] MySQL 데이터베이스 백업 및 복원 (2) | 2013.12.05 |