AI summary
LSPosed module that adds archaic Korean (옛한글) composition and extended input features to Samsung Keyboard. Supports jamo merging, old hangul syllable assembly, shift/long-press for obsolete characters, swipe-to-number row, typing speed display, calculator/unit conversion, and translation via Samsung server when offline packs fail. Requires rooted device with LSPosed and Samsung Keyboard 5.9.40.
Generated by AI. May contain inaccuracies.
About this app
삼성 키보드(Samsung Keyboard / HoneyBoard)의 두벌식 한국어 자판에 다음 기능을 더하는 LSPosed 모듈입니다.
기능 예 자음끼리 합치기 옛한글 조합이 켜져 있으면 모음 없이 친 다른 자음도 합침: ㅅㄱ → ㅺ, ㅂㅅ → ㅄ, ㅇㅇ → ㆀ, ㅅㅅ → ㅆ, 쌍자음이 섞이면 초성으로만 있는 글자도: ㅆㅅ·ㅅㅅㅅ → ᄴ, ㅂㅆ → ᄥ (ㅅ 세 번은 단어 중간에서도: 가+ㅅㅅㅅ+ㅣ → 가ᄴᅵ) (합칠 글자가 없는 ㅋㅋ 등은 그대로), 스페이스로 풀기 옛한글 조합 ㅂㅅㄱ+ㅏ → ᄢᅡ, ㅂㅇ+ㅏ → ᄫᅡ, ㄱ+ㆍ+ㄹ → ᄀᆞᆯ, ㅿ+ㅏ → ᅀᅡ 자동 ㅇ 채우기 ㅏ+ㄴ → 안, ㅏ+ㄹ+ㄱ → 앍 모음만 쳐도 ㅇ 세+ㅛ → 세요, ㅏㅏ → 아아, ㅗ → 오 (ㅠㅠ ㅜㅜ ㅡㅡ는 그대로) ㅋ 길게 누르기 누르자마자 ㅋㅋㅋ, 누르고 있으면 점점 빨라지며 계속 입력. 옵션(기본 끔)으로 천지인 느낌 ㄱ·ㄲ / 쿼티 느낌 ㅌ 섞기 (처음 ㅋㅋㅋ 는 섞지 않음) 쉬프트 옛 자모 쉬프트를 누르면 ㄹ ㅇ ㅎ ㅏ 자리에 ㅿ ㆁ ㆆ ㆍ 가 표시·입력 (ㄱㄷㅂㅅㅈㅐㅔ 는 그대로 쌍자음) 옛 자모 길게 누르기 ㄹ → ㅿ, ㅇ → ㆁ, ㅎ → ㆆ, ㅏ → ㆍ (ㄱㄷㅂㅅㅈ 은 삼성 기본 쌍자음 그대로) 스페이스로 옛한글 풀기 합쳐진 옛한글 뒤에서 스페이스 → 한 번 풀기: ᄛᅦ → ㄹ에, 주ᇮ → 중ㅇ (한 번 더 = 띄어쓰기, 바로 ⌫ = 되돌리기, 되돌린 뒤 스페이스 = 그대로 두고 띄어쓰기) 일본어 미리 불러오기 삼성 키보드는 일본어로 처음 바꿀 때 UI 스레드에서 사전(iWnn)을 불러와 멈추고 키·스와이프가 씹힘. 일본어를 한 번 쓰고 나면 키보드가 켜질 때 뒤에서 미리 불러옴 윗줄 밀어 숫자 ㅂ…ㅔ(q…p)를 아래로 밀면 1…0, 밀고 멈추면 ¹ ₁ ① ½ 같은 변형 선택 — 삼성 숫자 줄을 꺼도 됨 키보드 크기 제한 풀기 삼성 크기 조절에서 최소는 절반까지, 높이는 최대의 1.6배까지 클립보드 칸 수 클립보드 패널을 한 줄 2·3·4칸으로 (기본 3칸, 삼성 기본은 6칸 안팎) 여러 언어 입력 삼성 '여러 언어로 입력'이 켜져 있어도 한글 자판이면 모듈이 조합 다중언어 영/한 판별 삼성 '여러 언어로 입력'에서 한 단어의 키 위치만으로 영어인지 판단: hello 의 키(ㅗㄷㅣㅣㅐ)는 한글이 될 수 없으므로 영어로 바꿔 입력. the·world 처럼 한글 구조인 흔한 영어 낱말은 스페이스에서 영어로 바로잡음 언어 키 짧게/길게 짧게: 영어↔한국어(또는 일본어)만 오감. 길게: 영한 → 영일처럼 짝을 바꿈 (삼성 언어 목록의 순서를 따름) 타자 속도 CPM/WPM: 쉬는 시간은 최대 2초만 치고, 같은 글자를 두 번 세지 않으며 1초에 한 번만 갱신 계산·단위 환산 12+34, 10 cm-ft, 1024MB, 5'45'', 100 km/h to mph: 자주 쓰는 단위 순으로 여러 개 표시, 탭하면 식 대신 결과 입력 백스페이스 재조합 치고 있는 단어는 자모 단위(안 ⌫ → 아), 띄어쓰기 뒤나 길게 누를 때는 글자 단위 기준 버전: Samsung Keyboard 5.9.40 (HoneyBoard-548300). 다른 버전도 동작하도록 난독화된 클래스를 이름이 아닌 로그 문자열로 찾습니다(아래 “동작 방식” 참고).
설치 LSPosed(Zygisk) 가 설치된 루팅 기기에 APK를 설치합니다. Actions 탭의 Build 워크플로 결과물(SamsungKeyboardOldKorean-apk) 또는 직접 빌드: ./gradlew :app:assembleRelease LSPosed 관리자에서 모듈을 켜고 범위에 삼성 키보드(com.samsung.android.honeyboard) 를 선택합니다. 앱의 삼성 키보드 재시작 버튼을 누릅니다(root 가 있으면 강제 종료, 없으면 설정 > 애플리케이션 > 삼성 키보드 > 강제 중지). 앱 서랍의 삼성 키보드 옛한글 에서 기능을 켜고 끌 수 있습니다. 설정은 키보드를 다시 열 때 적용됩니다. 옛한글이 보이려면 옛한글 조합형 자모를 그릴 수 있는 글꼴이 필요합니다(예: Noto Sans CJK KR, 함초롬). 글꼴이 지원하지 않으면 자모가 풀어진 채로 보이지만 입력된 텍스트 자체는 올바릅니다.
입력 규칙 자음만 연달아 치면 합쳐지지 않습니다: ㅎㅎ, ㅋㅋ, ㅂㅅ 그대로. 초성 없는 모음은 현대 겹모음만 합쳐집니다: ㅗㅏ → ㅘ, 하지만 ㅜㅜ, ㅡㅡ, ㅏㅏㅏㅏ 는 그대로. 옛한글 조합이 켜져 있으면 모음 앞의 자음 묶음이 옛 초성이 됩니다(ㅅㄱㅏ → ᄭᅡ), 초성 뒤 모음 묶음도 옛 중성이 됩니다(ㄱㅜㅜ → ᄀᆍ). 끄면 현대 한글 음절만 조합합니다. 받침 뒤에 모음이 오면 마지막 자음 하나가 다음 음절 초성으로 넘어갑니다(도깨비불): ㄷㅏㄹㄱㅏ → 달가. 끝난 음절은 곧바로 확정(commit)되고, 바뀔 수 있는 마지막 음절만 조합 중으로 남습니다. 동작 방식 삼성 키보드는 한글 조합을 네이티브 XT9 엔진(libXt9core.so)에서 하므로 옛한글을 만들 수 없습니다. 그래서 이 모듈은 두벌식 자모 키 입력을 가로채 자체 조합기로 처리합니다.
engine/ — 안드로이드 의존성이 없는 순수 Java 조합기(HangulComposer)와 단위 테스트. 조합표(JamoTables.java)는 tools/gen_jamo_tables.py 가 유니코드 자모 이름(예: HANGUL CHOSEONG PIEUP-SIOS-KIYEOK → ㅂㅅㄱ)에서 자동 생성합니다. app/ — LSPosed 모듈. DexKit으로 난독화된 대상을 찾아 훅합니다. 훅 대상 찾는 방법 (5.9.40 에서의 이름) 키 이벤트 객체 "KeyRequestInfo{mKeyCode=" 를 쓰는 클래스 (Dm.b) 키 액션 실행기 " execute end t : " 를 쓰고 인자 2개인 메서드 (Fl.d.d) — 액션 이름(CharacterKeyA, BackspaceKeyA …)으로 분기 글자 입력 명령 "input_key_chn_dot", "input_key_repeatable_up" 를 쓰는 메서드 (Cl.H.c) — 모듈이 처리한 키는 이 명령만 꺼서, 진동·소리·쉬프트 해제·자판 갱신은 삼성 코드가 그대로 처리 삼성 InputConnection 래퍼 "[NRIC] isNoResponseState true" 를 쓰는 클래스 (b8.b) — 모듈이 조합하는 동안 삼성의 finishComposingText/setComposingText 를 막음 쉬프트 상태 "getCurrentShiftState()I" 클래스 (r9.b)의 isShifted — 삼성은 쉬프트여도 ㅂ 키코드를 보내고 나중에 ㅃ로 바꾸므로 직접 읽음 키 누름/뗌 "onTalkBackClick: xy = (" 메서드가 호출하는 같은 클래스의 1-인자 메서드 (ㅋ 반복 멈춤용) 키 롱프레스 "onTalkBackLongClick: xy = (" 메서드가 호출하는 같은 클래스의 1-인자 메서드 (ep.a.e) 예측 엔진 조회 "engineName is null" 을 쓰는 정적 메서드 (vj.c.a) — "OMRON"(일본어) 엔진을 미리 만들 때 사용 키보드 크기표 "sizeConfig" 를 쓰는 정적 float 조회 두 개 (rl.b.c/f, 인덱스 0/1/2 = 최소/기본/최대), 너비 쪽은 22·32 행을 읽는 메서드로 구분 클립보드 패널 ClipboardBoard.getBoardView (난독화 안 됨) 가 돌려준 뷰 안의 RecyclerView 칸 수 키보드 창 터치 SoftInputWindow.dispatchTouchEvent (윗줄 밀어 숫자) 커서/조합 영역 HoneyBoardService.onUpdateSelection 등 (난독화 안 됨) 찾은 결과는 키보드 데이터 폴더(files/oldhangul_targets.properties)에 APK별로 캐시됩니다. 문제가 생기면 LSPosed 로그에서 OldHangul: 로 시작하는 줄을 확인해 주세요.
알려진 제한 한국어 두벌식(쿼티) 전용입니다. 삼성이 알려주는 현재 언어/자판(Language.getLanguageCode(), getInputType())으로 판단해서, 영어·일본어 등 다른 언어와 천지인·나랏글·베가·단모음 자판은 삼성 기본 동작 그대로 둡니다. 모듈이 한글 조합을 맡는 동안에는 삼성 키보드의 한국어 추천 단어/자동 수정이 나오지 않습니다. 기기에서 직접 검증하지 못한 부분: 롱프레스를 건너뛴 뒤 키를 뗄 때의 처리, 일부 앱(웹뷰 등)의 조합 영역 처리. 받침과 옛 초성 묶음이 겹치는 경우(ㅇㅏㅆㅅㅣ → 았시 / 아ᄴᅵ, ㄹㅇㅔ → ᄛᅦ / ㄹ에)는 지금은 받침을 우선합니다. 고르는 방법은 아래 계획 2번 참고. 하드웨어 키보드 입력은 건드리지 않습니다. 다음 기능 계획 키보드 안에서 옛한글 모드 켜고 끄기 — 한자 키나 스페이스바 제스처로 즉시 전환, 상태를 키 라벨/토스트로 표시(지금은 설정 앱에서만 전환). 겹자음 모호성 해결 — 옛한글 → 현대 방향(ᄛᅦ → ㄹ에)은 스페이스로 풀기(A)로 구현. 반대 방향(았시 → 아ᄴᅵ)은 현대어(밥이, 았습니다)와 부딪혀서, 추천 단어 줄에 후보를 띄우는 방식(B)으로 검토 중. 옛 자모 롱프레스 팝업 — 한 키에 여러 옛 자모(ㅇ → ㆁ, ㆀ / ㅏ → ㆍ, ᆢ)를 고르는 삼성 스타일 팝업, 사용자가 직접 매핑 편집. ㅋ 롱프레스 확장 — 누르고 있는 동안 ㅋ 반복 입력, ㅎ·ㅠ·ㅜ 등 다른 키에도 반복 문자 지정. 삼성 추천 단어 연동 — 조합 중인 현대 한글을 삼성 예측 엔진에 넘겨 추천 단어 복원, 옛한글 사전(훈민정음·용비어천가 어휘) 추천. 천지인·단모음 쿼티 지원 — 자판 종류를 삼성 설정값에서 직접 읽고, 천지인용 옛한글 조합(ㆍ 세 번 → ᆢ 등) 추가. 옛한글 한자 변환 — 한자 키로 옛한글 음 → 한자 후보. 표시 글꼴 도우미 — 옛한글 글꼴 설치 여부 확인과 안내. 다른 삼성 키보드 버전 검증 — 버전별 훅 대상 자동 점검 화면과 오류 보고.
라이선스 GNU AGPL v3 — LICENSE 참고.
What's new
번역: 오프라인 언어팩을 목록/다운로드할 수 없을 때(unsupported target for src) 삼성 서버 번역을 사용합니다. 설정의 "서버 번역 사용"으로 끌 수 있습니다(기본 켜짐). 서버 번역이라 인터넷이 필요합니다. 번역창에 한글을 입력하면 앱 입력창으로 들어가던 문제를 고쳤습니다. 번역 도중 작업 스레드에서 타자 속도 표시를 건드려 나던 예외를 고쳤습니다. CPM/WPM 표시와 단위환산 카드가 스페이스바 높이에 뜨던 위치를 키 아래 띠로 옮겼습니다.
About this version
- Version
- 0.9.3 (26)
- Size
- 3.12 MB
- Requires Android
- 9
- Target SDK
- 28
- Architecture
- arm64-v8a, armeabi-v7a
- Downloads
- 5
- Updated
- Oct 13, 2026
- Package
- io.github.wnsdn517.oldhangul
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10