Languages & layouts

글자마다 다른
자판을 그대로

만드는 김에 여러 언어를 넣되 글자만 바꿔 적지는 않았습니다. 각 언어가 실제로 사용하는 물리 배열과 Shift 상태, 입력 순서를 별도로 구성했습니다.

아이와 어르신이 지도 위에 놓인 여러 형태의 키보드를 살펴보는 모습
같은 키보드처럼 보여도 언어마다 자리와 입력 방식이 다릅니다.

15 input modes

글자를 번역하는 데서 끝내지 않았습니다

간체·번체를 따로 세면 11개 언어 선택지와 15개 입력 모드가 있습니다. 각 언어의 첫 단계는 문자 순서를 훑고, 왼손·오른손 자리와 Shift, 고유 문자와 단어로 이어집니다.

한글두벌식 · 자모 조합·이중모음·겹받침
EnglishQWERTY
РусскийЙЦУКЕН
PortuguêsQWERTY · Ç와 dead key 악센트
EspañolISO 계열 QWERTY · Ñ·¡·¿·악센트
FrançaisAZERTY · 직접 문자와 dead key
DeutschQWERTZ · Ä·Ö·Ü·ß
中文(简·繁)大千式 주음 또는 QWERTY 병음
日本語JIS かな 또는 QWERTY 로마자
हिंदीInScript 또는 QWERTY 로마자

Why Korean was hard

만드는 과정에서는 한글이 가장 까다로웠습니다

영어처럼 화면의 글자 하나와 키 한 번을 바로 대응할 수 없기 때문입니다. 완성된 음절을 실제 두벌식 입력 순서로 다시 풀고, 각 자모가 놓인 물리 키를 찾아야 합니다.

완성된 음절
두벌식 입력ㄱ + ㅗ + ㅏ
물리 키 위치R + H + K

Compound vowels

이중모음도 여러 키로

ㅘ·ㅙ·ㅚ·ㅝ·ㅞ·ㅟ·ㅢ는 화면에서 한 글자처럼 보여도 실제로 누르는 두 키의 순서로 펼칩니다.

Final clusters

겹받침의 순서까지

ㄳ·ㄵ·ㄶ·ㄺ 같은 겹받침도 각 자음의 실제 입력 순서로 분해하여 목표 키를 차례로 안내합니다.

Shift state

쌍자음과 Shift

ㄲ·ㄸ·ㅃ·ㅆ·ㅉ와 ㅒ·ㅖ는 문자뿐 아니라 Shift 상태까지 맞아야 올바른 입력으로 처리합니다.

Same key path

분해한 뒤에는 같은 방식

자모 순서를 만든 뒤에는 다른 언어처럼 keydownKeyboardEvent.code로 물리 위치를 비교합니다.

Current scope

현재 범위와 알아둘 점

  • 선택한 화면 자판과 실제 운영체제의 키보드 배열이 같아야 물리 위치 안내가 정확합니다.
  • 프랑스어는 프랑스 AZERTY를 기준으로 하며 벨기에·스위스 배열과 일반 Shift로 입력하지 않는 대문자 악센트는 현재 범위 밖입니다.
  • 하리바오의 목표는 모든 언어 입력을 대신하는 것이 아니라, 지원하는 배열의 기본 위치와 패턴을 부담 없이 시작하게 하는 것입니다.