잇잇키 ItKey
Android 한글 키보드 · 밀기글 방식 · 15키

밀면,
글자가 된다.

잇키는 자음 키를 밀어서 모음을 붙이는 한글 키보드입니다. ㄹ을 오른쪽으로 밀면 라, 손을 떼고 한 번 더 밀면 랴, 밀던 손가락을 ㅇ까지 끌고 가 놓으면 랑. 한 손가락 동작 한 번으로 음절 하나가 완성됩니다.

15키자음 14 + ㅣㅡ
57,059기기 내 사전 단어
0광고·분석 SDK
181단위 테스트 통과
01
Try it

설명보다 한 번 밀어보는 게 빠릅니다

아래 자판은 앱과 같은 규칙표로 동작하는 웹 데모입니다. 마우스로 끌거나 휴대폰에서 손가락으로 밀어 보세요. 키를 누르면 위쪽에 지금 떼면 입력될 글자와 네 방향으로 밀었을 때의 글자가 십자 모양으로 나타납니다.

10:025G ▮▮▮
메시지
🎤 자판을 밀어 보세요 📋💬✓
ㄱ^^
ㄴ1
ㄷ2
ㄹ3
ㅁ상용구
ㅂㅠㅠ
ㅅ4
ㅣㅡ5
ㅇ6
ㅈ~
ㅊ♥
ㅋ7
ㅌ8
ㅍ9
ㅎ0
잇
모드
스페이스
↵
⌫

15개 키, 다섯 가지 손동작

모음 키가 따로 없습니다. 자음을 누른 채 미는 방향이 곧 모음입니다.

한번밀기 ↑ ↓ ← →ㅗ ㅜ ㅓ ㅏ — ㄱ→ = 가
손 떼고 같은 방향으로 다시ㅛ ㅠ ㅕ ㅑ — 가 → 갸 (터치 0.45초, 마우스 0.8초 안)
꺾어서 멀티밀기↑→ = ㅘ, ↑→↓ = ㅙ, ↓← = ㅝ, ↓↑ = ㅟ
다른 자음까지 끌어서 놓기이어밀기 = 받침 — ㄱ→ ⇢ ㅇ = 강
빠르게 두 번 누르기쌍자음 ㄲ ㄸ ㅃ ㅆ ㅉ (터치 0.3초, 마우스 0.5초 안)
ㅣㅡ 키세로 밀기 ㅣ, 가로 밀기 ㅡ, 누르기 ㅣ

연습 과제

입력창에 단어가 나타나면 자동으로 체크됩니다.

0 / 6 완료
  1. 사랑ㅅ → 밀기, ㄹ → 민 뒤 손을 떼지 말고 아래 ㅇ에서 놓기
  2. 강ㄱ을 → 로 밀고 그대로 ㅇ까지 끌어 놓기
  3. 과ㄱ에서 ↑ 민 뒤 손을 떼지 않고 → 로 꺾기
  4. 랴ㄹ → 로 밀고, 손을 뗐다가 곧바로 한 번 더 →
  5. 꽃스페이스 뒤에서 ㄱ을 빠르게 두 번 눌러 ㄲ을 만든 뒤, ㄱ에서 ↑ 민 뒤 아래 ㅊ까지 끌어 놓기
  6. 음ㅇ 누르기 → ㅣㅡ를 가로로 밀어 ㅁ까지 끌어 놓기

데모는 한글 자음판만 담았습니다. 길게 누르면 숫자가 입력되고(ㄴ=1 … ㅎ=0), ⌫를 ← 로 밀면 전체 삭제, ↑ 로 밀면 이전 단어 삭제입니다. 앱에서는 모드 키 밀기로 영문·숫자·기호·이모지 자판을 오갑니다. 판정 기준은 앱 기본값과 같고, 마우스·터치패드로 조작할 때만 클릭이 손가락보다 느린 점을 감안해 두 번 누르기 0.5초, 다시 밀기 0.8초로 넉넉하게 봅니다(둘 다 앱 설정에서 고를 수 있는 값).

02
Gesture grammar

한 번의 터치 안에서 여러 단계를 읽습니다

잇키는 단순한 네 방향 스와이프 키보드가 아닙니다. 손가락 하나마다 경로를 상하좌우 구간으로 나누고, 꺾임·다시 밀기·도착 키를 차례로 해석합니다. 규칙은 코드가 아니라 JSON 규칙표에 있어 규칙표만 고치면 동작이 바뀝니다.

ㄹ 라 러 로 루

한번밀기

↑ ㅗ · ↓ ㅜ · ← ㅓ · → ㅏ

자음 키를 짧게 한 방향으로 밀면 그 자음에 기본 모음이 붙은 음절이 입력됩니다.

ㄹ 떼고0.45초 ㄹ 라랴

두번밀기

↑↑ ㅛ · ↓↓ ㅠ · ←← ㅕ · →→ ㅑ

민 뒤 손을 떼고 0.45초 안에 같은 키를 같은 방향으로 다시 밀면 앞 글자가 2단계 모음으로 바뀝니다. 설정에서 “한 번에 길게 밀기” 방식으로도 바꿀 수 있습니다.

ㄱ ㅗ+ㅏ 과

멀티밀기

↑→ ㅘ · ↑→↓ ㅙ · ↓← ㅝ · ↓↑ ㅟ

손을 떼지 않고 방향을 꺾으면 모음이 이어 붙습니다. 오른쪽 다음 아래로 꺾는 동작은 무시해 이어밀기할 때 랑이 랭이 되지 않게 합니다.

ㄱ ㅇ ㅏ받침 강

이어밀기

ㄱ → ⇢ ㅇ = 강

밀던 손가락을 다른 자음 위에서 놓으면 그 자음이 받침이 됩니다. 출발 키를 벗어난 뒤의 이동은 모음에 섞지 않아 경로가 휘어도 안정적입니다.

ㄱ 톡 톡 ㄲ

쌍자음

ㄱㄱ ㄲ · ㄷㄷ ㄸ · ㅂㅂ ㅃ · ㅅㅅ ㅆ · ㅈㅈ ㅉ

빠르게 두 번 누르면 초성과 받침 모두 쌍자음이 됩니다. 이어서 같은 키를 밀면 까, 다시 밀면 꺄.

ㅣㅡ ㅣㅡ

모음밀기

세로 ㅣ · 가로 ㅡ · 가로→세로 ㅢ

유일한 모음 키. 라 뒤에 ㅣ를 넣으면 래가 되고, 밀어서 자음까지 끌면 받침까지 한 번에(음, 임).

가 ㄱ 개

다시 밀기

가 + ↓ = 개 · 고 + → = 과 · 과 + ↓ = 괘

손을 뗀 뒤 0.45초 안에 같은 자음을 다른 방향으로 밀면 앞 음절의 모음을 확장합니다. 시간이 지났거나 규칙이 없는 방향은 새 음절이 됩니다(고 → 고가).

ㄹ3 3 ^^ · ㅠㅠ · ♥ 상용구 · 특수키

길게 누르기

ㄴ…ㅎ → 1…0 · ㄱ ^^ · ㅂ ㅠㅠ · ㅊ ♥

키 아래 흐린 글자가 길게 누르기 동작입니다. 숫자, 이모티콘 자판, 특수키 자판, 상용구 자판이 열립니다.

모드 자판 전환

밀기 한 번으로 원하는 자판을 바로 엽니다. 두 번 밀면 하위 자판.

↑ / ↑↑숫자 / 이모지
← / ←←영문 / 대문자
모드
→ / →→한글 / 모음판
↓ / ↓↓기호1 / 기호2

⌫ 지우기

누르면 자모 단위로, 길게 누르면 반복, 밀면 단어·전체 삭제.

↑이전 단어
←전체 삭제
⌫
→커서 뒤 한 글자
↓다음 단어

스페이스 커서 이동

누르면 띄어쓰기, 밀면 커서 이동(유지하면 반복), 길게 누르면 띄어쓰기 반복.

↑윗줄
←왼쪽
␣
→오른쪽
↓아랫줄
03
Correction

밀기 실수를 이해하는 오타 교정

쿼티 키보드의 오타는 “옆 키를 눌렀다”지만, 밀기 키보드의 오타는 “덜 밀었다”, “한 번만 밀었다”, “꺾임이 빠졌다”입니다. 잇키는 이 실수 유형을 비용 모델로 만들어 사전 탐색에 반영합니다. 단순한 오타는 기기 안에서 바로 처리하고, 문맥 교정이 필요할 때만 AI를 씁니다.

01

제스처 분석

항상 · 기기 내

두번밀기 경계, 대각선처럼 애매했던 밀기는 다른 해석과 확률을 함께 남겨 해당 음절의 교정 비용을 낮춥니다.

02

한국어 사전

항상 · 오프라인
57,059

단어 빈도 Trie에서 음절 단위 편집 거리로 탐색. 띄어쓰기 분리, 단어 완성, 사용자 사전까지.

03

기기 내 AI

지원 기기만

ML Kit GenAI Proofreading(Gemini Nano). 사용 가능·다운로드 필요·사용 불가 상태와 사유를 설정에 그대로 표시합니다.

04

클라우드 LLM

기본 꺼짐 · 동의 필요

OpenAI 호환 API. 문장 단위로 ✓ 버튼을 눌렀을 때만 전송하고, 실시간 키 입력은 절대 보내지 않습니다.

이렇게 고칩니다

앱의 실제 사전으로 확인한 교정 결과입니다.

안녕하세여→안녕하세요자동 교정
괜찬아→괜찮아받침 누락
고맙습니댜→고맙습니다ㅑ↔ㅏ 단계
사랑헤→사랑해ㅔ↔ㅐ
학교가방→학교 가방띄어쓰기
가비→개비 · 갈비 · 가기후보만 표시
  • 기본은 추천만. 자동 교정 모드에서도 신뢰도가 높을 때만(기본 75%) 적용합니다.
  • 자동 교정 직후 ⌫ 한 번이면 원래 단어로 돌아가고, 같은 교정은 다시 하지 않습니다.
  • 분석하는 사이 더 입력했다면 늦게 도착한 결과는 버립니다.

밀기 실수 비용 모델

값이 작을수록 “흔한 실수”로 보고 쉽게 교정합니다. 키 거리 대신 손동작의 실수 유형으로 비용을 매깁니다. 막대 아래 예시는 앱 사전(57,059단어)에서 실제로 1위 후보가 되는 교정입니다.

1단계↔2단계 (ㅏ↔ㅑ)0.35갸방 → 가방
쌍자음↔평음 (ㄱ↔ㄲ)0.35감짝 → 깜짝
겹받침 일부 누락0.40업는 → 없는
ㅣ 누락 (ㅔ↔ㅓ)0.40어저 → 어제
비슷한 모음 (ㅐ↔ㅔ)0.45제미 → 재미
받침 누락0.45해복 → 행복
멀티밀기 누락 (ㅘ↔ㅗ)0.55곤심 → 관심
거센소리 (ㄱ↔ㅋ)0.60거피 → 커피
이웃 자음 키 (ㄱ↔ㄴ)0.70노마워 → 고마워
반대 방향 (ㅗ↔ㅜ)0.75우늘 → 오늘
일반 삽입·삭제1.20감사합다 → 감사합니다
치구를 입력하면 후보는 이렇게 정해집니다
  1. 친구치 → 친 · 받침 누락0.45
  2. 지구치 → 지 · 거센소리 (ㅊ↔ㅈ)0.60
  3. 치고구 → 고 · 반대 방향 (ㅜ↔ㅗ)0.75

음절마다 초성·모음·받침 비용을 더한 값이 단어 비용입니다. 2글자는 1.0, 3~4글자는 1.4, 5글자 이상은 1.8까지만 후보로 보고, 비용이 낮고 자주 쓰는 단어일수록 앞에 둡니다.

04
Everyday features

매일 쓰는 키보드에 필요한 것들

시연용이 아니라 기본 키보드로 일상에서 쓰기 위한 기능을 함께 담았습니다. 설정 앱은 12개 메뉴로 구성되고 바꾼 값은 키보드에 바로 반영됩니다.

📐

손과 화면에 맞추는 배치

세로 모드는 밀기 자판 또는 쿼티, 가로 모드는 일반 쿼티 또는 세로형 자판을 고릅니다. 세로형을 한쪽에 두면 키보드 2개로 양손 입력도 됩니다. 두 자판은 하나의 조합 상태를 공유하고 손가락마다 따로 추적합니다. 높이·너비·간격·여백은 가로·세로 따로 저장됩니다.

🔍

십자 미리보기

키를 누르면 가운데에 지금 떼면 입력될 글자, 상하좌우에 밀었을 때의 글자가 키보드 바깥 말풍선으로 뜹니다. 밀기 중에는 결과가 실시간으로 바뀝니다(ㄹ → 라 → 랑).

🎤

음성 입력

도구 모음의 마이크 버튼으로 바로 시작. 기기 내 인식을 우선 쓰고, 부분 결과 표시·취소·재시도·선택적 문장 교정을 지원합니다. 버튼 위치와 표시 여부도 설정할 수 있습니다.

💬

상용구

ㅁ을 길게 누르면 상용구 자판이 열립니다. 그룹·즐겨찾기·여러 줄 텍스트, 키별 상용구 연결까지. 상용구 키를 길게 누르면 바로 편집 화면으로 갑니다.

📋

클립보드

동의한 경우에만 기록을 남기고, 중요 항목 고정과 자동 삭제 시간을 지원합니다. 민감 정보로 표시된 항목은 저장하지 않습니다.

🎨

스킨 5종 + 직접 꾸미기

배경·키·글자 색, 글자 크기, 모서리, 간격을 바꾸고 바로 미리봅니다.

♿

접근성

TalkBack을 켜면 각 키에 사용자 지정 작업이 붙어 밀기 없이도 모든 글자를 입력할 수 있습니다. “손을 떼면 입력”, 조합 글자 읽기, 큰 키, 고대비 스킨 제공.

⌨️

입력칸을 읽는 키보드

입력칸 종류를 분석해 알맞은 자판과 엔터 동작(완료·다음·검색·전송)을 고릅니다.

  • 숫자·전화·날짜 입력칸 전용 자판, 이메일·URL 빠른 기호
  • 영문 3글자 글쇠: 왼쪽 밀기 / 누르기 / 오른쪽 밀기
  • 모음판, 기호1·2, 이모지 자판
🎚️

밀기 감도와 연습장

낮음·보통·높음 프리셋, 또는 값을 직접 조절합니다. 설정 화면의 밀기 연습 영역에서 판정 결과를 즉시 확인할 수 있습니다.

  • 최소 거리, 방향 허용 각도, 다시 밀기 간격, 두번밀기 거리
  • 길게 누르기·두 번 누르기 시간, 오입력 방지(키 경계 히스테리시스)
  • 진동 세기·길이, 키 소리 크기 — 잇 메뉴에서 바로 켜고 끄기
💾

백업과 복원

설정·배치·감도·스킨·사용자 사전·상용구를 파일로 내보내고 가져옵니다. 백업 형식에 스키마 버전을 넣어 이전 버전을 변환하고, 복원 전에 미리 확인합니다. API Key와 클립보드는 일반 백업에서 제외합니다.

🩺

진단 로그

설정 → 문제 해결 → 진단 로그 공유. 제스처 판정 통계, 오류, AI 요청 소요 시간, 크래시 기록을 남기되 입력한 문장·비밀번호·API Key·클립보드·음성 원문은 기록하지 않습니다.

05
Privacy by default

키보드는 모든 비밀을 봅니다.
그래서 기본값은 “보내지 않음”.

핵심 입력과 사전 교정은 인터넷 없이 완전히 동작합니다. 외부로 나갈 수 있는 기능은 모두 기본으로 꺼져 있고, 사용자가 명시적으로 동의해야 켜집니다.

🔒 보호 모드가 자동으로 켜지는 곳

비밀번호 칸, 인증번호(OTP) 같은 민감 입력칸, 앱이 학습 금지를 요청한 입력칸. 잇 메뉴에서 언제든 직접 켤 수도 있습니다. 보호 모드에서는 다음 기능이 멈춥니다.

클라우드 AI 교정
개인화 학습
추천 후보·자동 교정
클립보드 기록 저장
음성 입력
입력 내용 로깅·캐싱

그 밖의 약속

 

  • 🚫광고·분석·크래시 수집 SDK 없음사용자 입력을 수집하는 외부 라이브러리를 넣지 않았습니다.
  • 🔑API Key는 Keystore로 암호화추출할 수 없는 AES-256-GCM 키로 암호화해 저장하고, 백업·기기 이전에서 제외합니다.
  • ✋클라우드 교정은 기본 꺼짐최초 활성화 때 외부 전송 사실을 알리고 동의를 받습니다. HTTPS만 허용, 오프라인 전용 모드 제공.
  • 🧪AI 응답은 믿지 않습니다설명을 덧붙였거나 지나치게 바뀐 응답은 거부하고, 미리보기 후 “적용”을 눌러야 반영됩니다.
06
Under the hood

입력은 빠르게, 무거운 일은 따로

터치와 한글 조합은 네트워크나 AI 응답을 기다리지 않습니다. 키보드 렌더링은 Canvas 커스텀 뷰로, 교정·AI·저장은 코루틴으로 백그라운드에서 처리합니다.

모듈 구성

입력 엔진, 규칙, 렌더링, 교정을 분리했습니다. 밀기 규칙은 JSON만 고치면 바뀝니다.

gesture/멀티 포인터 제스처 엔진·분류기
hangul/초·중·종성, 겹모음, 겹받침 조합기
rules/JSON 규칙표 해석기
ime/InputMethodService, 키보드 뷰
layout/자판 배열, 입력칸 분석, 분할 배치
correction/사전 Trie, 교정 엔진, 사용자 사전
ai/ML Kit 로컬, OpenAI 호환, 응답 검증
speech/음성 입력, 권한 요청
privacy/보호 모드 정책, Keystore 저장소
backup/스키마 버전, 마이그레이션, SAF
diagnostics/내용 없는 진단 로그, 크래시 기록
settings/DataStore 설정, Compose 설정 앱
KotlinInputMethodServiceCanvasJetpack Compose · Material 3StateFlowCoroutinesDataStoreRoomRetrofit · OkHttpkotlinx.serializationML Kit GenAISpeechRecognizer

품질 지표

JVM·Robolectric 단위 테스트와 빌드 결과입니다(2026-11-01 기준).

181 / 181단위 테스트 통과
2.8MB릴리스 APK (R8)
API 26+Android 8.0 이상
KeyboardControllerTest52
GestureEngineTest33
CorrectionTest18
HangulComposerTest17
RulesAndLayoutsTest14
AiTest11
EditorProfileAndGeometryTest10
UI · 렌더링 (Robolectric 5종)9
SuggestionControllerTest7
BackupCodecTest5
PrivacyTest5
07
Get started

설치하고 기본 키보드로 켜기

APK를 설치한 뒤 잇키 앱의 안내를 따라 시스템 키보드로 켜면 됩니다. 키보드를 켜기 전에도 앱 안의 밀기 연습 영역에서 바로 시험할 수 있습니다.

1

APK 설치

app-release.apk 또는 app-debug.apk를 휴대폰에 설치합니다.

2

키보드 켜기

잇키 앱 → 키보드 사용 설정 → 키보드 설정 열기에서 잇키를 켭니다.

3

기본 키보드 선택

같은 화면의 기본 키보드 선택에서 잇키를 고릅니다.

4

밀기 연습

입력 테스트 칸과 밀기 연습 영역에서 감도를 맞춥니다.

# Windows 11 PowerShell — 빌드부터 설치·활성화까지 PS> cd C:\dev\ItKey PS> $env:JAVA_HOME = "C:\Program Files\Android\Android Studio\jbr" PS> .\gradlew.bat assembleRelease PS> adb install -r app\build\outputs\apk\release\app-release.apk PS> adb shell ime enable com.isulnara.itkey/.ime.KeyboardImeService PS> adb shell ime set com.isulnara.itkey/.ime.KeyboardImeService

알아 두면 좋은 점

원본 앱의 코드·이미지·리소스는 사용하지 않고 공개된 입력 원리를 바탕으로 새로 구현했습니다.
사전은 FrequencyWords(CC BY-SA 4.0)와 국립국어원 한국어기초사전(CC BY-SA 2.0 KR)을 가공했습니다.
로컬 AI는 AICore를 지원하는 일부 기기에서만 동작하며, 미지원 기기에서는 사전 교정으로 대신합니다.