추가 메뉴

DKST macOS용 한글입력기 v2.6.2 - 안정화 버젼 그리고 2.7베타 시작
DINKIssTyle

Lv.1 DINKIssTyle (61.♡.73.102)

2026년 5월 11일 PM 07:34

조회 1,631 공감 0

Icon Image

DKST macOS용 한글입력기 v2.6.2 안정화 버젼

v2.6.2 안정화 버젼을 릴리즈합니다.

  • 단기간 내 해결이 어려운 selectedRange 관련 문제를 우회하기 위해, 앱 번들 ID가 com.apple.*을 제외한 모든 항목은 밑줄 조합 방식(Marked Text)으로 입력됩니다.
    이는 입력기가 처음 입력창을 마주했을 때 직접 입력이 가능한지 확인하는 단계인데, 현재 상황은 다음과 같습니다.

🔍 핵심 문제점 정리

현상

원인

selectedRange 호출 시 렉

IMKServer ↔ 호스트 앱 간 XPC 동기 호출이 발생

selectedRange 생략 시 마크드텍스트 인식 불가

IMK가 replacementRange를 정확히 계산하지 못해 마킹 상태 미반영

간단히 말하면,
일부 문제를 일으키는 입력창과 처음 만나면 3 ~ 6초간 기다린다 vs 일부 문제를 일으키는 창마다 앱번들 ID를 추가한다.
같은 상황에 놓여 있기 때문입니다.

현재 밑줄 조합 방식직접입력 이 둘을 냉온탕으로 오가는 언어는 한글이 유일하기 때문에, 딱히 참고할 문서는 없이 수십가지 우회책, 해결책을 시도해보았지만 아직까지는 소득이 없습니다.

따라서 이번 2.6.2 안정화는 selectedRange를 제거하고, 터미널을 제외하고 직접입력이 확실한 애플앱만 우선순위로 직접입력,
그 외 앱들은 밑줄 조합 방식으로 입력하는 방식으로 릴리즈합니다.

사실 인라인 직접 입력은 제 욕심이기도 합니다.

현재 애플 생태계상 마크드텍스트 입력이 상당 부분에서 더 안정적이거든요.....


설치는 터미널 여시고

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/DINKIssTyle/DINKIssTyle-IME-macOS/main/install.sh)"

입력 입니다!

그래도 Apple 앱들에서 인라인 직접 입력을 제공하는 서드파티 한글입력기는 DKST 입력기가 유일하네요 ㅎㅎ

🚀 Release Notes: Core Engine Refactoring

이번 리팩토링은 macOS 입력 프레임워크(IMK)의 비공개 API와 Apple Native IME(KIM)의 동작 패턴을 심층 분석하여, 기존의 하드코딩 기반 정책을 런타임 동적 쿼리 및 원자적(Atomic) 처리 구조로 전환하는 데 초점을 맞췄습니다.


🛠 주요 개선 사항 (Phase 1 ~ 3)

1. 런타임 동적 정책 쿼리 및 기본값 최적화

  • textDocument 동적 감지: IMKInputController 내부의 비공개 객체인 textDocumentshowsComposingTextAsMarkedText 속성을 직접 쿼리합니다.

  • XPC 블로킹 제거: 입력 필드 전환 시 3~6초의 프리징을 유발하던 selectedRange 호출을 정책 결정 단계에서 제거했습니다.

  • 안전한 기본값: 미식별 앱의 기본값을 Marked Text(인라인) 모드로 설정하여, 포토샵 등 특정 앱에서 발생하던 글자 파편화 현상을 해결하고 성능을 확보했습니다.

2. 직접 입력(Direct Input) 안정성 및 즉시 마이그레이션

  • 실시간 실패 감지: 직접 입력 중 커서 위치 불일치가 감지되면 다음 입력까지 기다리지 않고, 현재 조합 중인 글자를 즉시 마크드 텍스트로 전환하여 다시 렌더링합니다.

  • 인라인 불일치 검증: setMarkedText: 호출 직후 클라이언트의 markedRange를 검증하여, 일부 앱이 조합창 설정을 무시할 경우 발생하던 받침 누락을 방지합니다.

3. 원자적(Atomic) 입력 처리 (Space-Commit 이슈 해결)

  • 통합 삽입 로직: 스페이스바 입력 시 "조합 중인 한글 + 공백"을 하나의 insertText: 호출로 묶어 처리합니다.

  • 효과: 마크드 텍스트 모드에서 스페이스 입력 시 확정된 글자가 사라지거나 공백만 남는 현상을 근본적으로 해결했습니다.

4. 상태 관리 및 방어적 코드 강화

  • NSNotFound 위임: replacementRange 계산 시 수동 범위를 지정하는 대신 NSNotFound를 사용하여 IMK 프레임워크가 표준 방식으로 기존 조합을 대체하도록 유도했습니다.

  • 이벤트 필터링: KeyDown 이외의 예기치 않은 이벤트 발생 시 버퍼를 자동 초기화하고, Ctrl+A/E 등 제어 문자 입력 시 후보창을 닫고 조합을 즉시 커밋합니다.


📊 기술적 변화 요약

영역

변경 전

변경 후

정책 결정

번들 ID 하드코딩 및 수동 관리

textDocument 동적 쿼리 및 안전한 기본값

성능 (Lag)

필드 전환 시 selectedRange XPC 렉 발생

XPC 호출 제거 및 실시간 실패 감지 구조

공백 처리

한글 확정과 공백 삽입의 2단계 분리

원자적(Atomic) 통합 삽입 및 이벤트 소비

상태 관리

수동 setMarkedText:@"" 호출 남발

프레임워크 표준 위임 및 자동 관리


💡 기대 효과

  • 입력 안정성: 포토샵, 일러스트레이터, GIMP 에서의 안정성이 macOS 기본 입력기 수준으로 향상되었습니다.

  • 반응성 개선: 필드 전환 및 첫 입력 시 발생하던 간헐적인 프리징 현상이 해소되었습니다.

  • 표준 준수: Apple KIM(Korean Input Method)의 내부 동작 메커니즘을 분석하여 시스템 호환성을 높였습니다.

댓글 (47)

  • Java

    Java Lv.1

    05.11 · 116.♡.70.94

    고맙습니다~

  • 진네만

    진네만 Lv.1

    05.11 · 140.♡.29.2

    제가잘몰라서그러는데, 업데이트될때마다 다시설치해주면되는건가용? 아니면 자동업데이트나ㅡ그런게되는건가요??

  • Java

    Java Lv.1 → 진네만

    05.11 · 116.♡.70.94

    자동 업데이트는 지원 안되는거 같고요.
    다시 설치하면 기존거 프로세스 죽이고 새로 설치하는것 같아요.

  • 진네만

    진네만 Lv.1 → Java

    05.11 · 140.♡.29.3

    감사합니당~~

  • DINKIssTyle

    DINKIssTyle Lv.1 → 진네만 작성자

    05.11 · 118.♡.14.159

    어느시점에는 넣어 볼까 하다가도 한번 완성된 입력기가 굳이 매번 웹체크하는 것도 웃긴거 같아서 생각을 버렸습니다 ㅜ ㅜ

    빠르게 한방에 완성시키지 못하고 있는 저의 탓입니다.

  • 진네만

    진네만 Lv.1 → DINKIssTyle

    05.11 · 140.♡.29.2

    ㅎㅎㅎ 아유 아닙니당~~ 개발이랑 피드밷 잘 해주셔서 감사해용!!!!

  • Blizz

    Blizz Lv.1

    05.12 · 108.♡.134.4

    업뎃 감사합니다. 빠릿한 한영 전환이 매우 마음에 듭니다. ^^
    궁금해서 여쭙니다. 맥오에스에서 밑줄 조합 방식과 직접입력 이 둘을 냉온탕으로 오가는 이유는 무엇인가요? 윈도우즈도 이렇게 오가나요? 한가지 방식으로 작동하지 않는 이유는 무엇인지, 또 왜 한글만 그러는지 궁금합니다.

  • DINKIssTyle

    DINKIssTyle Lv.1 → Blizz 작성자

    05.12 · 61.♡.73.102

    컴퓨터는 서양권의 영어 기반 입력 방식에 맞춰 설계되어, 문자 하나하나를 즉각 타이핑하는 데 최적화되어 있습니다. 반면 CJK(한중일 언어) 문자는 그 수가 방대하여 키보드에 일대일로 대응시키는 것이 불가능합니다. 이 때문에 문자를 확정(커밋)하기 전 '밑줄'이나 '블록' 상태에서 글자를 조립하거나 변환하는 과정을 거치게 됩니다.
    윈도우나 맥에서는 이러한 '밑줄 조합' 방식에서 벗어나 인라인 직접 입력이 가능한 필드들이 도입되고 있습니다. 그러니깐 이전 입력창들은 창안에 자소가 들어오면 끝이었습니다. 자소들이 더 들어오면 조합되고 이러는 걸 상정하지 않은거죠. 윈도우도 가끔 보이는데 맥만큼은 아니고요, 특히 iOS처럼 통제력이 강한 플랫폼에서는 이런 변화가 더 빠르게 적용되었습니다. 흥미로운 점은 CJK 중 한글만이 이 '밑줄 조합식 입력'을 졸업할 가능성을 지녔다는 것입니다. 일반적인 일본어나 중국어 입력은 여전히 병음이나 발음을 입력한 뒤 사전에서 한자를 선택하는 단계를 건너뛰기 어렵기 때문이쥬~ ㅎㅎㅎ 한글 만세!

  • Blizz

    Blizz Lv.1 → DINKIssTyle

    05.12 · 17.♡.41.106

    설명 고맙습니다. 원래 밑줄 조합방식이 기본인데 더 발전된 인라인방식이 도입되면서 생기는 문제인 거로 이해하면 맞을까요? 윈도우는 아직 밑줄 조합방식이 대세라 큰 문제 없는 거고요.

  • DINKIssTyle

    DINKIssTyle Lv.1 → Blizz 작성자

    05.12 · 61.♡.73.102

    윈도우는 요즘 밑줄 조합 방식 드물거에요~ 최근에는 기억이 없습니다. ㅎㅎ

댓글을 작성하려면 이 필요합니다.