추가 메뉴

macOS 기본 한글입력기에 연구 내용.보고서
DINKIssTyle

Lv.1 DINKIssTyle (61.♡.73.102)

2026년 5월 8일 PM 07:55

조회 1,747 공감 0

DKST macOS용 한글입력기를 만들면서, 그 어느때보다 깊이 macOS 기본 한글입력기를 파고 들고 있습니다.

현재 macOS에는 3가지 한글 입력방식이 존재합니다.

  1. 옛날에 경험해보신 입력창이 떠서 문장 전체가 조합되고 넘기는 방식
    * 이건 이제 거의 찾아볼 수 없습니다.

  2. 한글자 한글자 밑줄 위에서 조합해서 넘기는 방식 (Marked Text)
    * 이건 여전히 많이 쓰입니다. 크롬, 일렉트론 같은 앱이라던지, 포토샵, 인디자인 그리고 심지어 키노트 까지

  3. 인라인 직접 입력방식
    *조합을 해서 넘길 필요없이 입력창 안에서 조합되는 최신식 macOS 입력 방식입니다.

이렇다 보니, 한글 입력기는 어디에 대체 어떤 방식으로 보내야하지? 라며 혼란스러워 합니다.

애플이 진즉에 조합 방식 언어에 관심이 있었다면, 입력 필드마다 난 어떤식의 조합이야~ 하고 입력기로 넘기는 매우 완벽한 방법이 있지만, 아직 그런 API는 존재하지 않는 것으로 보입니다.

이렇다 보니 한글입력기는 첫 입력의 짧은 타이밍에 입력필드를 파악해야 합니다.
직접 입력이 안되는 입력 필드에 밑줄 없이 넣어버리면 자소가 분리되는 현상이 발생하니깐요.

애플 기본 한글 입력기는 대체 이를 어떻게 해결할까?

어셈블리어를 따라가 보면 알수 있었습니다.

AI들이 어셈블리어를 사람이 읽고 파악하기 편하게 너무 잘 번역해줍니다. 오호~

그리고는 오늘 재미있는 사실을 알았습니다.

https://damoang.net/free/6242742

터미널 같은 경우에는 명시적으로 밑줄 조합 방식으로 입력 하라고 되어 있고,

다른 입력 필드에서는 애플 기본 한글 입력기도 인라인 직접 입력을 우선적으로 시도 해봅니다.

실패라고 판단하면 해당 앱 에서는 밑줄 조합 방식으로 입력을 시도하는데, 그러면 실패한 앱을 어떻게 기억할까?

어딘가에 목록화 해놓고 다시 가져다 쓸까?

AI말에 의하면 메모리에 유지되는 캐시로 판단된다고 합니다.

그렇다는 말은 프로세서가 꺼졌다 켜지면 다시 처음부터 앱을 파악해야 한다는 것인데???

이 가설을 가지고 포토샵에서 실험해보았습니다.

한글 입력을 잘하고 있다가 macOS 기본 한글입력기 프로세서를 종료 시켜 버리면 어떻게 될까?

가설에 부합하는 결과가 나옵니다.

한글 입력기가 켜지는 동안 로마자를 입력시키거나, 한글 첫자의 자소가 풀려 버립니다.

여기가 밑줄 조합 방식을 써야한다는 걸 다시 판단한 후에야 한글 입력이 제대로 되는 것입니다.

즉 macOS를 재부팅하지 않거나, macOS 한글입력기가 여러 사유로 꺼졋다 켜지지 않는다면

한번 실행했던 앱에서는 첫글자 자소 분리가 일어나지 않을 가능성이 큽니다만..

macOS 한글입력기가 몇개의 앱을 기억하는지는 저도 알지 못합니다.

다시 말하면 여러분이 macOS를 부팅하고, 크롬을 켜고 첫 한글을 입력하면 첫 글자는 자소가 풀리거나 로마자가 나올 확율이 매우 큽니다. 입력 필드에 따라 속성이 조금씩 다른데 웹기반의 경우에는 포커스 들어가는 순간 판단하기 어렵다고 하는군요. 앞서 말한 크롬 기반이나 웹기반의 프론트웹 앱들이 이에 속합니다.

DKST macOS 한글입력기는 이런 문제를 이렇게 해결했습니다.

  1. 0.5ms의 첫입력 판단 딜레이를 주어 이런 현상이 없습니다.
    * 시스템이 과부하로 0.5ms보다 판단이 오래걸리면 발생할 수 있습니다.

  2. 입력기 환경설정에서 '밑줄 조합 방식으로 사용할 앱 Bundle ID' 목록에 사전에 추가해놓을 수 있습니다.
    * 한글 입력에 불편함이나 문제가 있는 앱들은 여기에 넣어버리면 대다수의 문제가 사라질 것입니다.

  3. 아예 인라인 입력을 포기하는 방법도 있습니다. 입력기 환경설정에서 '모든 앱에서 밑줄 조합 방식 사용' 에 체크합니다.
    * 인라인 입력을 시도조차 해보지 않고 무조건 밑줄 조합 방식으로 입력하는 것입니다. 인라인 직접 입력 이라는 거 애초에 윈도우에서나 되던거다~ 생각하시면 포기하실 수 있습니다(????)

이상 macOS 한글 입력기를 알아보았습니다~

댓글 (25)

  • 짜장밥 Lv.1

    05.08 · 211.♡.204.177

    저도 개인적으로 만들어 쓰고 있는 한글입력기가 있는데, 비슷한 고민을 했었습니다. 이것저것 시험해 보면서 제가 찾은 방법은, selectedRange와 markedRange가 같고, length가 0이면 3번 방법, 그 외의 경우는 2번 방법으로 하는 것입니다. 제가 쓰는 앱들에서는 문제가 없는데 일반적인 방법인지는 모르겠습니다.

  • DINKIssTyle

    DINKIssTyle Lv.1 → 짜장밥 작성자

    05.08 · 39.♡.28.131

    macOS에서 일반적인 한국어 입력 방법은 없는거 같습니다. 구현해서 한글 써지면 된 것으로 봐야할거 같아요 ㅎㅎㅎ

  • 짜장밥 Lv.1 → DINKIssTyle

    05.08 · 211.♡.204.177

    극히 동감합니다. ㅎㅎ 문서화가 워낙 그지 같아서 말씀하신 여러 방식이 난립하는 것 같습니다.

  • 짜장밥 Lv.1 → 짜장밥

    05.08 · 211.♡.204.177

    말씀 드린 방법은, 몇년 전에 했던 작업이고, 그냥 잘 쓰고 있어서 몰랐는데, 지금 os는 예전과 다르게 작동하네요. 예전에는 3번 방식은 없었고 입력 자체는 항상 2번처럼 되는데 commit을 하는 시점이 자소 단위이거나 글자 단위이거나 앱마다 달랐었습니다. 말씀 드린 방법은 이걸 구분하는 방법이었고, 그런데 다시 확인해 보니 지금은 그마저 제대로 구분이 안 되는 것 같네요. 결과적으로 뻘소리를 한 셈입니다. ㅠㅠ

  • DINKIssTyle

    DINKIssTyle Lv.1 작성자

    05.09 · 39.♡.28.67

    결론부터 말씀드리면, 네, 중국인 사용자들도 완전히 동일한 불편함을 매우 심각하게 겪고 있습니다.

    특히 macOS 환경뿐만 아니라, 웹 기반 에디터나 크로스플랫폼 앱 환경에서 중국어 필획(Stroke)은 물론, 병음(Pinyin)이나 창힐(Cangjie) 사용자 가릴 것 없이 한국어 입력기의 '첫 글자 영문 변환' 및 '조합 실패'와 같은 증상을 꾸준히 호소하고 있습니다.

    조사된 구체적인 양상과 기술적 배경은 다음과 같습니다.

    1. 첫 글자가 영문(로마자)으로 튀어나오는 현상 (First Character Leak)

    필획 입력기나 병음 입력기를 켠 상태에서 타이핑을 시작할 때, 입력기의 마크드 텍스트 버퍼가 활성화되기 전에 첫 번째 키 이벤트가 앱으로 그대로 통과해버리는 현상입니다.

    현상: 필획 입력기 사용자들은 특정 획을 입력하기 위해 'u', 'i' 등의 키를 누르는데, 필획 조합 UI가 뜨는 대신 에디터에 그냥 'u'라는 생뚱맞은 로마자가 입력되어 버립니다. (Apple 커뮤니티나 GitHub 등에 "笔画输入法 第一个字母 英文" - 필획입력기 첫글자 영문 - 이라는 키워드로 수많은 리포트가 존재합니다.)

    발생 조건: 주로 앱 포커스를 전환한 직후나, 한/영(중/영) 입력기 전환 키(Caps Lock 등)를 누른 직후에 빠르게 타이핑을 시작할 때 발생합니다.

    2. 마크드 텍스트 조합 실패 및 증발 (Composition Dropout)

    글자를 조립하는 도중(마크드 텍스트 상태)에 갑자기 조합 창이 닫혀버리거나 밑줄 친 상태가 풀리면서, 한자로 변환되지 못하고 획 코드로 입력했던 알파벳 파편들이 그대로 확정(Commit)되어 버리는 버그입니다.

    현상: 긴 문장을 빠르게 타이핑하거나 변환 후보를 고르는 중에 갑자기 입력기가 멈추면서(Lagging), 완성된 한자가 아닌 영문 키스트로크가 삽입됩니다.

    • 한국어에서 '오늘'을 쳤는데 종성이 분리되어 '오ㄴ' 이나 '오ㄹ' 로 깨지는 조합 실패 버그와 궤를 같이하는 현상입니다.

    3. 시스템/프레임워크 관점에서의 원인 (비동기 처리 지연)

    데스크톱 앱 개발을 해보셨으니 구조적으로 더 와닿으실 텐데, 이 문제는 근본적으로 앱(Client)과 macOS의 InputMethodKit (IMK) 프로세스 간의 비동기 통신 타이밍(IPC 지연) 때문에 발생합니다.

    • 앱이 포커스를 얻고 NSTextInputClient 프로토콜을 통해 시스템에 "현재 텍스트 입력 상태임"을 알리기 전에, 사용자의 키보드 하드웨어 이벤트가 먼저 큐(Queue)에 도달해버리는 경우가 생깁니다.

    • 이 찰나의 지연 순간에 운영체제는 해당 키 입력을 마크드 텍스트를 위한 이벤트로 가로채지(Intercept) 못하고, 일반 keyDown 이벤트로 취급해 앱에 그대로 던져버리기 때문에 첫 글자가 로마자로 박히게 됩니다.

    • 특히 Wails나 Electron과 같은 크로스플랫폼 프레임워크를 사용할 경우, 내부 웹뷰 렌더링 엔진의 루프와 macOS 네이티브 입력기 루프 간의 동기화 과정이 한 겹 더 존재하기 때문에 이러한 타이밍 버그가 훨씬 더 두드러지게 나타나는 경향이 있습니다.

    결과적으로 중국인 사용자들도 타이핑을 시작할 때 의도적으로 한 템포 쉬고 입력을 시작하거나, 오타가 나면 백스페이스로 다 지우고 다시 치는 등 한국인과 똑같은 방식으로 고통받고 있습니다. Sogou나 Rime 같은 서드파티 중국어 입력기를 대안으로 쓰기도 하지만, 이 역시 macOS 자체의 입력 프레임워크 병목을 거쳐야 하므로 완벽한 해결책이 되지는 못하는 실정입니다.

    혹시 이러한 입력기 버그와 관련하여, 현재 개발 중이신 텍스트 확장 앱이나 다른 데스크톱 애플리케이션에서 입력 상태(Marked Text)를 가로채거나 우회 처리해야 하는 특정 기능(예: 단축어 트리거 등)을 구상 중이신가요?

    제미나이에게 조사 시켜 보니 중국어 입력기 사용자들도 한글입력기와 비슷한 고통을 받고 있군요.... 애플의 CJK 지원 의지가 떨어지는 것으로... ㅡ ㅂ ㅡ!!!

  • Blizz

    Blizz Lv.1

    05.09 · 108.♡.134.4

    덕분에 잘 쓰고 있습니다. 감사합니다.

    이전 다른 한글 입력기들은 모두 한/영 전환시 딜레이가 있어 전환키를 여러번 눌러야 하는 불편함이 있었는데 이건 그런 딜레이 없이 바로 바로 전환이 되어 매우 편합니다. 혹시 이 한영 전환 딜레이 문제는 어떻게 해결하셨나요?

  • DINKIssTyle

    DINKIssTyle Lv.1 → Blizz 작성자

    05.09 · 39.♡.28.206

    AI를 열심히 갈군덕이 클것이지만..

    입력기 번들 패키지 안에서 영어 입력기를 안넣은게 큰 덕이라고 생각합니다. 애초에 저도 그런 불편함 때문에 시작한 프로젝트라 다른 입력기들과 다르게 영어는 영어 잘하는 기본 영어 입력기에 맡기고 한글만 구현하는게 목표였거든요.

  • 애런

    애런 Lv.1

    05.09 · 14.♡.115.178

    어제부터 사용 중입니다. 좋은 입력기 만들어 주셔서 고맙습니다.

  • DINKIssTyle

    DINKIssTyle Lv.1 → 애런 작성자

    05.09 · 39.♡.28.206

    사용자들이 늘어나면서 제 사용 범위에서 몰랐던 문제점들이 속속 보이고 있습니다. 버그를 발견하시면 제보해주세요. 고맙습니다!

  • Java

    Java Lv.1

    05.09 · 116.♡.70.94

    저도 일주일전인가부터 잘 쓰고 있습니다.
    고맙습니다~

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