Skip to content

hiking90/ongeul

Repository files navigation

Ongeul (온글)

macOS용 한글 입력기 — 하나의 입력 소스로 한글과 영문을 모두 처리합니다.

문서 · 릴리스

Ongeul App Icon

왜 Ongeul인가?

macOS 기본 한글 입력기는 한/영 전환 시 입력 소스를 전환합니다. 이 과정에서 InputMethodKit의 세션 간섭 버그로 인해 글자가 씹히거나 지연이 발생할 수 있습니다.

Ongeul은 단일 입력 소스 안에서 한글과 영문을 모두 처리하여 이 문제를 근본적으로 해결합니다.

macOS 기본 입력기 Ongeul
영문 입력 시스템에 위임 (ABC 전환) 엔진이 직접 입력
한/영에 사용하는 입력 소스 2개 (한글 + ABC) 1개 (Ongeul)
한/영 전환 macOS 입력 소스 전환 내부 모드 전환
세션 간섭 발생 가능 원천 차단

주요 기능

  • 키보드 레이아웃 — 두벌식 표준, 세벌식 390, 세벌식 최종
  • 한/영 전환 — 오른쪽 Command (기본값), 오른쪽 Option, 왼쪽 Shift, 오른쪽 Shift, Shift + Space, CapsLock 중 선택
  • 앱별 모드 기억 — 앱마다 마지막 입력 모드 자동 복원
  • 영문 잠금 — 특정 앱을 영문 전용으로 고정. Microsoft Remote Desktop 등 원격 접속 앱에서 한/영 전환 키를 가로채지 않고 원격 환경으로 그대로 전달하여, 원격지의 한/영 전환이 정상 동작하도록 도와줍니다.
  • 입력기 고정 — 다른 입력 소스로의 자동 전환 방지
  • Vim 모드 — ESC / Ctrl+[ 키로 영문 전환
  • CapsLock — 한/영 전환 키로 사용 가능. 한글 모드에서는 CapsLock 상태를 무시하여 대소문자 영향 없음

각 기능의 상세 설명은 문서 사이트를 참고하세요.

아키텍처

Rust 엔진 + Swift 프론트엔드 하이브리드 구조. UniFFI를 통한 FFI 바인딩으로 연결됩니다.

Architecture

  • ongeul-automata (Rust): 한글 조합의 모든 로직을 담당. Swift 쪽에는 한글 처리 로직이 전혀 없음.
  • OngeulApp (Swift): 키 이벤트 수신 → Rust 엔진에 위임 → 결과 적용의 얇은 셸 역할.

빌드

요구사항

  • macOS 14.0 (Sonoma) 이상
  • Rust toolchain (aarch64-apple-darwin)
  • Xcode / Swift toolchain
  • (선택) Intel 빌드: rustup target add x86_64-apple-darwin

빌드 및 설치

# 빌드만
./scripts/build.sh

# 빌드 + ~/Library/Input Methods에 설치
./scripts/install.sh

# universal .pkg 생성
./scripts/package.sh              # Info.plist 버전 사용
./scripts/package.sh 0.1.0-rc3    # 지정 버전 사용

설치 후 설정

  1. 로그아웃/로그인 (최초 설치 시 필요)
  2. 시스템 설정 → 키보드 → 입력 소스 → 편집 → + → Ongeul 추가
  3. 기존 한글 입력기 제거 권장 (Ongeul이 한글과 영문을 모두 처리). ABC는 macOS 기본 입력기로 삭제할 수 없으나 남겨둬도 무방

테스트

cargo test -p ongeul-automata

디버그 로그

log stream --predicate 'subsystem == "io.github.hiking90.inputmethod.Ongeul"'

후원

Ongeul은 현재 ad-hoc 서명으로 배포되고 있어, 설치 시 macOS Gatekeeper 경고가 발생합니다. Apple Developer Program에 등록하면 공식 Developer ID 서명을 적용하여 경고 없이 설치할 수 있습니다.

연간 등록비(USD 99)를 후원금으로 충당하고자 합니다. 후원해 주시면 더 나은 설치 경험을 제공하는 데 직접적으로 기여하게 됩니다.

GitHub Sponsors

라이선스

Apache License 2.0

About

A fast macOS Korean input method built with Rust — handles both Korean and English natively in a single IME, eliminating input source switching latency.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors