날개셋 한글 입력기 10.5

날개셋 한글 입력기 10.5가 당초 예상보다 일찍 완성되고 공개됐다. 다음 버전 개발 근황을 올리고서 곧바로 다음 버전 완성 공지를 올리게 될 줄이야.. =_=;;
문서에다가는 6월 1일이라고 기재했지만 사실 그 전날 아침에 미리 올라왔다. 타자연습은 변함없으며 API 역시 호환된다.
오랜 작업의 결과물이 드디어 세상에 publish되니 개인적으로 몹시 홀가분하고 기쁘다.

UI 쪽의 변화 사항에 대해서는 이미 지난번 글에서 자세히 소개했다. 편집기를 사용하지 않고 외부 모듈만 라이트하게 사용하는 분이라면 변화 사항들이 그리 와 닿지 않을지 모르겠다. 하지만 이번 버전에서는 외부 모듈의 안정성도 향상된 게 있기 때문에 버전업이 누구에게나 의미가 있을 것이다.

이 글에서는 새로운 기능 소개 말고 외부 모듈 관련 이슈, 그리고 개발 관련 다른 잡다한 썰들을 늘어놓도록 하겠다.

1. Google Chrome + Google Docs 에서 한글 조합이 덧나는 문제: 해결

크롬 브라우저에서 주소 입력란이나 웹페이지 내부의 일반적인 텍스트 입력 폼에서는 괜찮은데.. 유독 Google Docs를 열어서 문서를 편집할 때 자잘한 문제가 또 있었다.
거기서 내 프로그램으로 한글을 입력하던 중에 마우스로 딴 데를 클릭하면.. 조합 중 글자가 덧나는 문제가 여전히 남아 있었다. 이 버그는 지금까지 거의 네댓 분으로부터 거듭 신고를 받았다.

수 년 전, 크롬 브라우저가 버전 70대이던 시절에도 비슷한 문제가 있었다. 그때는 내 쪽에서 동작을 수동 보정해서 회피했는데.. 또 크롬에서 자체적으로 버그를 고치기도 한 것 같아서 보정 동작을 삭제했다.

그런데 예전에 만들어 놨던 보정 로직을 되살려 보니까 Google Docs 문제는 해결되지만, 크롬의 다른 입력 창에서는 이제 글자가 덧나는 게 아니라 멀쩡한 글자까지 지워져 버리는 부작용이 발생했다. =_=;; 동일 프로세스에서 서로 다른 에디팅 엔진을 사용하다니.. 더 똑똑한 로직을 새로 개발하는 게 불가피해졌다.

다른 마소 IME, 한컴 입력기, 나빌 입력기는 괜찮은데 내 프로그램에만 이런 버그가 있는 이유는..
내 프로그램은 조합이 외부에 의해 종료될 때 조합 중 문자열을 다시 써 주는 동작이 있기 때문이다.
이걸 생략해 주니 크롬의 두 입력 환경에 모두 오류 없는 입력 동작을 구현할 수 있었다. 수동 보정으로 문제를 해결했다.

저 동작이 꼭 필요한 입력 방식은 초성 지향 두벌식이라고 '한'을 먼저 '하ㄴ'이라고 표시했다가 조합이 외부에 의해 종료됐을 때 '한'으로 바꿔서 확정짓는 소수의 특이한 방식 말고는 거의 없다.
바꿔 말하면 Chrome이나 Edge 브라우저에서는 한 메이저한 버그를 보정하기 위해서 다른 마이너한 부작용을 남겼다.

2. 자주 받은 문의: 비조합 문자를 입력할 때의 문제

저 버그 신고 말고 본인이 자주 받은 문의는 이것이었다. 내 프로그램으로 콜맥 같은 영문 글자판을 사용해서 한글이 아닌 일반 문자가 Visual Studio Code라든가 몇몇 외국산 프로그램에서 제대로 입력되지 않는다는 거.

이건 명백하게 내 프로그램이 아니라 해당 프로그램들이 IME 지원이 미흡해서 발생하는 현상이다. 기존 MS 한글 IME로도 두벌식이 아닌 세벌식으로 숫자나 기호를 입력해 보면 100% 똑같이 발생한다.
서구권에서 살다 보니 IME라는 게 뭔지 몰라서 IME로부터의 지시는 무조건 한글처럼 조합을 만드는 형태밖에 없다고 생각한 게 아닌가 싶다.

그러므로 원래는 그 프로그램이 고쳐져야 마땅하다. 그러나 내 프로그램 쪽에서 문자를 보내는 방식을 바꿔서 문제를 회피할 수는 있다.
그 글자를 IME 방식으로 보내는 게 아니라 일반적인 키보드 메시지 형태로 보내게 하는 거다. 걔들은 어차피 한글도 아니니까.

글쇠배열 편집기에서 "전체 간소화 - 문자를 글쇠 누름으로" 기능을 알려 드렸더니 문제가 잘 해결됐다고 회신이 왔다.

3. Visual Studio 검색란에서 한자 선택 UI: 해결 불가

이건 사용자로부터 문의를 받은 건 아니고 본인이 자체적으로 발견하고 파악한 현상이다.
개발툴 Visual Studio에서 일반적인 텍스트 에디터 말고 Ctrl+Q로 접근하는 짤막한 한 줄짜리 검색란은 뭔가 비범한 환경인 것 같다. 10년쯤 전 엄청 옛날에도 여기서만 한글 입력이 제대로 진행되지 않던 문제가 있어서 해결했던 기억이 나는데..

여기서 한자 선택 UI를 꺼내면 마우스를 클릭해도 UI가 전혀 동작하지 않고 그냥 사라져 버렸다.
이건 마소 IME 등 어떤 IME를 써도 마찬가지이기 때문에 내 프로그램의 문제는 아니다. 도대체 무슨 동작을 하는지는 모르겠지만 마우스 hook이라도 설치하는가 보다.
그런데 마소 IME는 그냥 곱게 꺼지기만 하는데, 내 프로그램은 몇 번 써 보면 프로그램이 뻗기까지 해서 문제..

디버깅을 해 보니 프로그램 상태가 외부에 의해 불가항적으로 통제 불가능한 상태로 바뀌는 것이어서 뭘 해 볼 수 있는 게 없다.
그래서 이건 불가피하게 해결 불가로 남기고, 도움말 "알려진 문제"에다가 언급만 해 놨다.

4. 잡설: 원고지 떡밥

문득 떠오르는 생각인데.. 날개셋 편집기에 원고지 형태 인쇄 기능은 넣기에 굉장히 적절한 기능인 것 같다. 얘는 서식을 전혀 지원하지 않는 쌩짜 plain 텍스트 편집기임에도 불구하고 프로그래머 코딩보다는 자연어 텍스트의 입력에 더 맞춰져 있으며, 취급하는 문자도 형태가 전각 아니면 반각밖에 없어서 문자 배치가 아주 간편하기 때문이다.

그러니 기능이 너무 많은 워드 프로세서보다는 이런 프로그램에다가 원고지 인쇄 기능을 넣는 게 원론적으로 훨씬 더 나을 것이다.
하지만 현실적으로는 이제 원고지라는 물건 자체가 거의 쓰이지 않으니 만들어도 쓸모가 별로 없다. 굳이 이런 기능을 구현하고 싶지는 않다.

텍스트 파일을 읽어서 원고지 형태로 인쇄하는 기능 구현은 Visual C++ / Windows API 프로그래밍 실습용으로도 적당할 듯하다. 그래픽, 인쇄, 각종 좌표 계산과 문자열 문단 정렬, 금칙 처리 같은 것들이 두루 동원되기 때문이다.

5. 나머지 남은 얘기들

(1) 이번 10.5 버전에서는 도움말 "감사의 글"에 공 병우 박사뿐만 아니라 송 현 선생도 최초로 언급하기 시작했다. 이분도 돌아가신 지 벌써 1년이 넘었으니 말이다. 정작 2022년에는 프로그램 버전업이 한 번도 없었기 때문에 지금까지 이 문구가 들어갈 기회가 없었다.

사용자 삽입 이미지

(2) 오랫동안 버전업이 없던 동안에도 꾸준히 후원을 해 주신 분들께 정말 감사드린다. 요 며칠 전에도 후원이 들어왔다.
하지만 10.5 작업을 해 보니 본인의 코딩 감각은 여전히 죽지 않았다는 걸 개인적으로 확인할 수 있었다. ^^

(3) 다음 버전은 올해 가을이나 겨울 연말쯤에 10.7 정도로 잡고 있다. 편집기, 제어판, 보조 입력 도구 곳곳에 이번에 다 완료하지 못한 UI 개선을 반영하고.. 여유가 되면 좀 더 어려운 성능 최적화도 할 예정이다. 작업 리스트는 다 마련되어 있다.

Posted by 사무엘

2023/06/01 08:35 2023/06/01 08:35
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/2167

Trackback URL : http://moogi.new21.org/tc/trackback/2167

Comments List

  1. Skfo253 2023/07/17 17:31 # M/D Reply Permalink

    안녕하세요 아직 초보단계라 이거저거 만지면서 적용해보고 있습이다. 날개셋 입력시 내장형 후보데이터를 통해 상용구를 등록했는데 단축키가 아니라 휴대폰처럼 해당글자가 나오면 자동으로 등록한 목록이 나오도록 할수있나요. 한자의 경우 해당기능을 구현하신거 같은데 제 후보목록도 이런식으로 활용가능한지 궁금해서 여쭤봅니다.

    1. 사무엘 2023/07/18 08:59 # M/D Permalink

      안녕하세요?
      입력 도구 중에 '조합과 후보 자동 완성'이 비슷한 기능을 수행할 겁니다.
      한자 키를 누르지 않아도 이 시점에서 한자 키를 눌렀을 때 표시될 변환 후보들을 미리 보고 고를 수 있지요.
      단, 현재는 제2, 제3 후보를 바로 표시하는 기능은 없구요, '제1 + 포워딩' 상태에서..
      기존 한자 변환부터 살펴보고 나서 거기에 없는 한글에 대해서만 사용자 정의 후보를 표시할 겁니다.
      이 부분은 조만간 개선하려고 생각도 하고 있구요.

      즉, 요약하자면 "선생님이 원하시는 것과 100% 일치하지는 않을 것 같지만, 일단 '조합과 후보 자동 완성'을 써 보세요"입니다.
      답변 되었으면 합니다. ^^

  2. Skfo253 2023/07/22 11:47 # M/D Reply Permalink

    감사합니다! 제가 완전히 파악을 못한 거 일 수도 있지만 한글자만 후보목록에 넣었을때 발동되네요. 예를들어 동아시아국가 -> 한국 중국 일본을 넣었다면 단축키로 후보변환하는 경우 동아시아국가 를 치고 단축키누르면 발동합니다. 후보 자동완성의 경우 사용하려면 동-> 한국 일본 중국으로 다시말해 '동'만 등록해야 목록이 나오네요. 아무래도 한자변환때문에 의도하신거 같긴합니다.

    또한 단축키로 후보변환 할 때는 1번 한국 2번 중국 3번 일본 각각 1번키 2번키 3번키를 누르면 입력이됩니다. 자동완성의 경우 제가 마우스로 커서 이동해서 직접 눌러야 하는거 같은데 단축글쇠 후보변환처럼 번호를 키보드로 입력해서 선택하는 방법이 있을까요?
    후 에 만드시는 버전에서 사용자 정의 후보목록만 보이게 하신다니 반가운 소식이네요. 여유가 되신다면 한글자뿐만아니라 여러글자를 입력해도 후보목록이 띄워지고 키보드 키로 바로 누를 수 있도록 고려해주시면 좋을거같네요^-^
    좋은 프로그램 만들어주셔서 감사합니다. 잘 사용하고 있습니다.

    1. 사무엘 2023/07/24 11:46 # M/D Permalink

      네 그렇습니다.
      제1후보 변환(= 기존 한자 변환)에다가 오름차순 포워딩(= 1후보가 없을 때 다음 2후보 내장형 탐색)으로 설정한 경우,
      2후보에서 2글자 이상의 단어를 지정했더라도 그걸 사실상 사용할 수 없습니다.

      예를 들어서 '가나다'라는 변환이 2후보에는 존재하지만 1후보에는 없는 경우,
      '가나다'에서 제일 앞 '가'를 한자로 변환하는 것으로 1후보의 동작이 결정되기 때문이지요. 2후보로 기회가 내려오지 않습니다. 이 경우,

      (1) 편집기 계층에서 1후보 한자 변환의 동작 방식을 '앞에서 뒤로'가 아니라 '뒤에서 앞으로'로 바꾸면.. 1후보 한자 변환에 없는 단어에 한해서 2후보가 2글자 이상 길이도 동작하게 됩니다. 이걸 고려하실 수 있구요.

      (2) 그게 아니라면 아예 2후보부터 먼저 고려해서 이게 없을 때 1후보로 내려가도록.. 후보 변환 키 자체를 C0|0x82 (1후보)가 아니라 C0|0x83 (2후보)로 값을 주고, 포워딩을 내림차순으로 지정하시는 게 해결책이 되겠습니다.

      그리고 다음으로, '조합과 후보 자동 완성' 도구에 1~9 숫자 단축키 기능은 현재 없는 게 맞습니다.
      그 아래의 '조합 안에 조합 생성' 도구는 단축키를 사용하는 옵션이 있는 반면, '... 자동 완성'은 그런 기능이 없습니다. 조합 말고 후보 한정으로는 이 역시 다음 버전에서 고려해 봐야겠습니다.

      말이 많이 어렵지요? ^^ 표현력의 부족에 양해를 구하며, 질문에 대한 답변이 되셨으면 합니다.

  3. Skfo253 2023/07/25 06:31 # M/D Reply Permalink

    아닙니다. 답변 충분히 이해됐습니다. (2)에서 후보포워딩을 4에서 1로 하고 편집기 계층에서 단축글쇠를 말씀하신거처럼 지정해놓은 상태라 해당 단축키를 누르면 2글자 이상이더라도 해당 글자의 목록이 뜨게하는건 설정 이거저거 만져보다가 알아냈습니다. 이건 다행히 말씀하신 것 처럼 잘 따라온 거 같네요!
    (1) 단축글쇠를 이용한 후보변환이 아닌 후보 자동완성 경우 역으로 후보포워딩을 설정하고 편집기 계층에서 뒤에서 앞으로 설정해봤습니다. 1글자인 1후보 한자가 우선하고 2 후보목록의 내용을 띄우려면 1글자로만 만들어야 자동완성 목록이 뜨더라구요. 예시처럼 '동'으로요.
    이건 제가 생각했을 때 2글자로 후보를만들어도 1글자로 후보를 만들지 않은 이상 무조건 1글자인 한자 우선할수밖에없더라구요 글자 수가 더 적으니까요. 1글자 2후보 1글자 1후보 2글자 2후보로 3순위일수밖에 없을거 같네요. 이건 사용자 2후보만 설정 가능하도록 하는 방법이외에는 없을거 같네요.
    혹은 (2)처럽 커서기준 왼쪽단어로 완성된 글자들로 판정하는게 아니라 1글자 1글자 초성 중성 종성 조합되는 글자에 집중되서 자동완성이 발동되는거 같네요. 즉 이미 완성된 글자는 이미 지나가서 인식을 못하는 수도 있구오. 혹시 2글자라도 작동하는 예시후보가 있거나 잘못된 부분이 있으면 정정해주시길 바라요^^;;
    여기까지만 물어보고 더 안물어볼게요. 바쁘신데 계속 번거롭게 질문하게 되어서 죄송합니다. 다음버전까지 좀 익히고 물어보는게 좋겠네요.

    1. 사무엘 2023/07/25 09:58 # M/D Permalink

      단축글쇠를 이용한 후보 변환은 cursor 주변의 글자들을 몽땅 총체적으로 판단해서 글자나 단어 단위로 자유롭게 후보 변환이 가능합니다.
      그러나 '조합과 후보 자동 완성' 입력도구는 동작의 범위가 지금 조합 중인 글자 하나를 넘어가지 않습니다. 한글은 언제나 한 글자 단위로만 조합이 만들어지니, 2글자 이상 길이의 사용자 정의 후보는 근본적으로 동작할 수 없지요. ^^

      2글자 이상 길이의 후보 변환을 한꺼번에 하는 건 '조합 안에 조합 생성' 입력도구의 몫입니다. 기능 설계 의도는 이렇습니다만, 얘는 현재 1순위 기존 한자 변환만 단어 단위로 지원하지 사용자 정의 조합은 전혀 고려하지 않고 동작합니다.
      아무쪼록 이렇게 얘기 나누는 게 기능 추가나 최소한 UI 개선(각종 안내 메시지, 도움말) 방향을 결정하는 데도 큰 도움이 되네요.

      생산적인 질문과 제안은 계속 해 주시는 게 제게도 도움이 됩니다. 감사합니다~ ^^

Leave a comment
« Previous : 1 : ... 120 : 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : ... 2141 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/04   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

Site Stats

Total hits:
2678295
Today:
379
Yesterday:
2484