날개셋 한글 입력기 6.3

추석 연휴가 끝나자마자 <날개셋> 한글 입력기의 따끈한 새 버전 소식이 기다리고 있다. (만세 ㄲㄲ)
본인의 사정으로 인해, 6.2가 나온 지 한 달이 채 되지 않아 6.21도 아니고 이례적으로 6.3이 나오게 됐다. 원래는 10월쯤에 내놓으려고 했는데.

그 대신 이게 올해의 마지막 버전업이 되지 싶다.
이번 학기를 마친 뒤엔 드디어 종합 시험(논자시;;)을 봐야 하고, 또 이번에 듣는 과목은 지난 학기의 과목과는 달리, 국어학 배경이 빈약한 본인에게는 만만찮은 것들이다.
그래서 프로그램 개발부터 좀 마무리를 짓고 나서 그런 일들에 전념하고자 한다.

6.3은 +0.1 이상에 해당하는 기능 추가와 개선이 충분히 이뤄졌다.
외부 모듈이 TSF 환경에서 옛한글 같은 2글자 이상의 조합을 표현할 때 조합이 끊어지던 문제를 완전히 해결했고,
한글 표현 체계와 에디팅 엔진이 크게 바뀌었던 직전 버전에만 자잘하게 존재하던 여러 버그들도 잡았다. 편집기의 경우 화면 잔상이 남던 것부터 시작해 심하면 프로그램이 죽던 문제까지도 있었다. 더 구체적인 내역은 모방 범죄 예방을 위해 알리지 않겠다. ㄲㄲ

정 재민 님께서 보내 주신 글꼴 데이터를 반영하였으며, 유용한 텍스트 필터도 세 종류나 추가했다.
- 호환용 영역의 한자를 본디 형태로 바꾸는 필터 (정 재민 님 제안)
- 본문 중의 수식을 계산하고 숫자의 경우 진법을 싹 바꿔 주는 필터
- 패턴 치환 필터. 이건 프로그램 설치해서 도움말을 읽어 보기 바란다. 일괄 치환과 더불어 아주 유용한 기능으로, 이걸 쓰면 칼럼 단위의 데이터를 다루기 위해 엑셀 같은 별도의 프로그램을 쓸 일이 크게 줄어든다. <날개셋> 편집기는 키매크로나 칼럼 블록 기능을 제공하지 않지만, 대체 기능을 텍스트 필터의 형태로 꾸준히 제공하고 있다.

그리고 뭐니뭐니해도 6.3 버전의 가장 큰 특징은 Bksp 키를 다루는 체계를 싹 바꿨다는 점.
<날개셋> 한글 입력기는 1.0 시절부터 Bksp에 여타 한글 입력기에서는 찾을 수 없는 특수한 기능들을 제공해 왔다. 즉,

- Bksp와 Shift+Bksp의 용도를 구분하고,
- 조합 여부와 상관없이 한글을 낱자나 글자 단위 중 원하는 형태로 얼마든지 지울 수 있다.
- 그리고 한글이든 비한글이든 지금 글자가 다 지워진 후 그 앞에 또 한글이 있으면 그 한글에 달라붙어서 조합 상태가 재연된다. 앞 글자도 seamless하게 계속 낱자 단위로 지우거나 고치거나 빠진 낱자의 추가 입력이 가능하다.
- 게다가 이걸로도 모자라서, 두벌식 글자판의 경우 도깨비불 현상까지 고려해서 이전 상태를 복원해 준다. 일명 역도깨비불인데,

안해 → 않 (≠ 안해 → 안ㅎ → 안)
보끼 → 볶 (≠ 보ㄲ → 보ㄱ)

같은 동작도 지원된다는 뜻이다.

그리고 그 후 10여 년 뒤, 6.3 버전에서는, <날개셋> 한글 입력기의 간판 기능으로 손색이 없는 이 기능을 지정하는 방식이, 예전보다 훨씬 더 깔끔하고 체계적이고 전문적으로 바뀌었다.

사용자 삽입 이미지

스크린샷을 보면, 예전에 Bksp 동작 방식에 있던 서너 개의 체크 옵션이, 자주 쓰는 predefined configuration을 바로 가져오는 콤보 상자로 대체되었음을 알 수 있다. 자세한 설정은 말 그대로 '자세히' 버튼을 눌러서 나타나는 별도의 대화상자에서 해야 한다.

스크린샷에서 알 수 있듯, Bksp와 Bksp, 그리고 한글을 조합 중일 때와 그렇지 않을 때, 각 상황별로 한글을 무슨 순서대로 지울 것이며 이 글자가 다 지워졌을 때 앞의 한글에 달라붙을지를 일일이 사용자가 설정할 수 있다. 예전 버전에서는 기능 자체만 제공되었지 이 정도로 세밀한 설정은 가능하지 않았다.

또한 두벌식 역도깨비불 재현도 별도의 옵션으로 바뀌었다. 따라서 두벌식 자판을 쓴다고 하더라도 그냥 달라붙기 기능만 쓰지, 역도깨비불까지 원하지는 않는 사용자라면 해당 옵션을 끄면 된다. 이런 취사선택도 예전 버전에서는 가능하지 않았다.

과거의 3.0부터는 자그마한 옵션이 하나 추가되었는데, 입력 순서와 상관없이 하위 낱자부터 한 타씩 지우는 옵션이 그것이다.
ㅇ+ㅜ+ㅣ+ㄴ 순으로 입력했든 ㅇ+ㅜ+ㄴ+ㅣ 내지 ㅜ+ㅇ+ㅣ+ㄴ 순으로 입력했든, '윈'은 무조건 종성부터 역순으로 지워서 위-우-ㅇ이 되게 하는 기능인데, 이것이 바로 위의 스크린샷에서는 '최하위 낱자의 직전 한 타'이다. 이런 차이는, 당연한 말이지만 동일한 글자를 여러 가지 순서로 입력할 수 있는 모아치기가 가능한 세벌식 체계에서만 의미가 있다.

그에 덧붙여 이 새 버전에서는 '최하위 낱자 전체'라는 옵션도 추가됐다. 말 그대로 낱자 단위로 한꺼번에 지워 버리는 옵션으로, 아무리 복잡한 한글이라도 초· 중· 종성이 모두 갖춰져 있다면 세 타 만에 다 지워진다. '윈'을 지울 때 '위' 다음에 '우'를 안 거치고 바로 'ㅇ'이 된다는 뜻. 사실, PC용이 아닌 휴대전화용 한글 입력기의 Backspace는 다들 이런 방식으로 구현되어 있다.
여담이지만, 내부적인 구현 오버헤드는 최하위 낱자를 따지는 방식이, 고전적인 '직전에 입력된 한 타'보다 더 크다.

이쪽 기능을 대대적으로 손을 좀 봐야겠다고 거의 6.0 개발 초창기 시절부터 생각은 하고 있었는데 드디어 해내게 되어 무척 기쁘다. 진작부터 지원돼야 했을 기능들이다.
물론, 주변 글자를 자유자재로 다룰 수 없고 write-only만 가능한 TSF B급 이하 환경에서는 '달라붙음' 같은 기능은 전혀 쓸 수 없고, '조합 상태가 아닌 한글을 지우는 단위' 역시 오로지 글자 전체 단위로 제약을 받게 된다.

기능을 구현하는 과정에서 <날개셋> 한글 입력기의 내부 구조도 제법 바뀌었다. 하지만 더 합리적으로 바뀌었다. 그 내막을 살펴보면 이렇다.

지난 3.0 버전 이래로 Bksp 키는 입력 스키마가 '낱자 단위 지우기' 아니면 '글자 단위 지우기'라는 특수글쇠를 생성하는 형태로 내부적으로 처리되었다. 그리고 전자와 후자를 Bksp와 Shift+Bksp에다 각각 대응시킬지, 아니면 반대로 Shift+Bksp와 Bksp에다 대응시킬지를 '입력 스키마'의 옵션으로 지정 가능했다. 그게 끝이었다.

그러나 이제부터는 입력 스키마는 Bksp일 때 Bksp1, 그리고 Shift+Bksp일 때 Bksp2라고 언제나 고정적인 특수글쇠만을 생성한다. 이런 특수글쇠는 1부터 4까지 현재 네 종류가 예약되어 있는데, 이들 자체에는 어떤 특정 동작 방식이 규정되어 있지는 않다. 각 특수글쇠의 해석은 전적으로 그 아래의 '문자 생성기'만이 담당하게 된다. 그것이 바로 저 'Bksp 동작 방식' 옵션인 것이다.

그리고 그 추상적인 Bksp와는 별개로, 특정 방식대로 한글 낱자를 지워 주는 특수글쇠가 또 존재한다. 즉, 진짜배기 Bksp는 입력기의 옵션이 어떻게 지정됐냐에 따라서 낱자/글자 단위로 지우고 필요하다면 달라붙기나 역도깨비불까지 제공하는 반면, 그냥 낱자 단위, 입력 역순, 글자 전체(위의 스크린샷에 있는 네 옵션 중 하나) 삭제라는 고정불변 단편적인 Bksp 기능도 임의의 글쇠에다가 특수글쇠의 형태로 배당해서 쓸 수 있다는 뜻이다.

아시는 분이 있으려나 모르겠는데, <날개셋> 한글 입력기에는 0x10과 0x11에 '뒷글자 삭제'라고 해서 Del과 유사한 기능을 하는 특수글쇠가 이미 있다. 그것처럼 Bksp와 유사한 기능을 하는 네 가지 특수글쇠도 일관성 차원에서 추가된다고 이해하면 정확하다.

이들 특수글쇠는, 편집 환경만 지원된다면(TSF A급 같은), 이미 완성된 한글도 물론 낱자 단위로 자기 방식대로 지울 수 있다. 하지만 그런 이상적인 환경이 아니라면, 이미 완성된 글자는 건드리지 못한다. 사실 Bksp 키 자체가, 한글 입력기가 조종하는 것과 에디터 응용 프로그램이 조종하는 것이 공존하는 체계이다. 완성된 글자는 한글 입력기가 아니라 응용 프로그램이 지워 주며, 응용 프로그램은 일반적으로 '진짜' Bksp 키가 들어왔을 때만 그런 동작을 하기 때문이다.

이런 식으로 시스템 개편을 했는데, 솔직히 내가 생각했지만 내가 봐도 너무 멋있다..;; 이 맛에 프로그래밍 하는 거다.
이것저것 생각해 놓은 게 많아서 당분간은 새 버전의 Readme엔 '※ 한글 입력 체계' 카테고리가 쭉 있을 것으로 보인다. 한글 입력기 본분에 충실한 기능이 계속 강화되고 개선되고 있기 때문이다.

6.3 버전은 6.2와 API가 완전히 호환된다.
다음 버전은 내년 초에 6.5 정도가 목표이다. 버그 없이 프로그램을 잘 만들어서 가능하면 0.0x대로 내려가지는 말고 버전을 쑥쑥 크게 올려야겠다.

Posted by 사무엘

2011/09/14 08:29 2011/09/14 08:29
Response
No Trackback , 9 Comments
RSS :
http://moogi.new21.org/tc/rss/response/569

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

Comments List

  1. 왕배덕배 2011/09/14 16:11 # M/D Reply Permalink

    API가 호환되면 타자연습과의 호환성을 생각하지 않아도 된다는 건가요?
    제어판이 완전히 바뀌어 버리면 문제가 생길 것도 같은데

    1. 사무엘 2011/09/15 06:57 # M/D Permalink

      예. 타자연습 3.3 아래에서는 날개셋 6.2과 6.3 버전의 외부 모듈이 아무 트러블 없이 잘 동작합니다.
      저런 입력 기능은 굳이 말하자면 입력 설정 파일의 내부 구조에만 영향을 끼치지 API 차원에서의 호환성에는 영향을 주지 않습니다.

  2. 특백 2011/09/15 14:33 # M/D Reply Permalink

    제안 하나 - 쉬프트키 왼쪽과 오른쪽을 서로 다른 변수로 배당하는 방법(윗글쇠에만 적용되는)

    예를 들어서 키 X의 윗글쇠에 '우측 쉬프트이면 Y를, 그렇지 않으면 Z를 입력함' 이라고 하는 수식은 'R ? Y : Z' 등으로 할 수 있을 것 같습니다. (아랫글쇠는 적용 안 됨)

    단축글쇠 테이블에서 Shift를 좌, 우, 아무 키로 구분하니까.. 그걸 응용하면 할 수 있지 않을까요?

    P.S. 6.3 못써보고 있습니다. 노트북이 있어야 쓰죠

    1. 사무엘 2011/09/16 02:07 # M/D Permalink

      다음 버전(현재로서는 6.5)에 그 기능은 거의 확실히 들어갈 것으로 보입니다.
      편집기 계층에 있는 '단축글쇠 테이블'과 별개로, 입력 스키마 차원에서 '단축글쇠 테이블'을 도입하여, 영문· 숫자 47개 글쇠 말고도 사용자가 지정해 준 다른 글쇠의 입력도 받아들이고, 기존 글쇠도 특수한 modifier를 인식할 수 있게 하려고 구상 중입니다.
      그리고 계속 벼르고 있는 단어 단위 한자 변환 기능과, 입력 패드(보조 입력 도구) 쪽이 대수술을 거칠 예정입니다. ^^

    2. 특백 2011/09/18 12:29 # M/D Permalink

      입력 스키마의 단축글쇠 테이블이라..
      글쇠배열 항목 등에서 제어판이 꽤 복잡해 질수가 있겠군요.

      6.5에서 기대는 됩니다. 많이 바꾸길(??)

    3. 사무엘 2011/09/18 22:22 # M/D Permalink

      그렇게 많이 바뀌는 건 아니고요.
      이제 '글쇠 인식 옵션' 탭은 '빈 입력 스키마와 호환되게' 체크박스 하나만 달랑 덩그러니 놓여 있는데, 그 자리에 이것저것 기능들이 들어가게 될 겁니다.
      저도 빨리 6.5 개발 들어가고 싶네요. ^^ 중간에 포기하고 또 마이너 업글을 안 하려면, 이번 6.3이 버그 없이 안정화 버전으로 좀 오래 살아남아야 합니다.

      덕후끼가 많은 건 아무래도 좋은 현상이죠. ㅋ

  3. 삼각형 2011/09/15 20:39 # M/D Reply Permalink

    이번 버전은 자잘한 버그와 사소하지만 은근히 신경 쓰이는 것들을 손본 것 같은 느낌이군요. 업데이트마다 특성 같은게 있는 듯합니다.

    1. 사무엘 2011/09/16 02:07 # M/D Permalink

      네, 버전별로 그런 식의 테마가 있습니다.
      이번 6.3의 경우, Bksp 재정비 기능이 없었다면 이 정도 변화 사항만으로는 아예 새 버전이 따로 나오지 않았거나, 기껏해야 6.21에 머물렀을 것입니다.
      하지만 이번 버전은 짧은 개발 기간에도 불구하고 변화 내역 하나하나가 모두 굉장히 의미가 크고 중요하기 때문에 0.1만치 버전을 올리게 되었습니다.

      한동안 한글 입력기 엔진 자체에 변화가 계속 있을 것입니다. 좋게 말하면 제 프로그램이 아직도 활발하게 살아 있다는 뜻이고, 나쁘게 말하면 큰 변화가 있을 때마다 프로그램의 안정성이 떨어지고 예상치 못한 버그가 또 발견될 수도 있다는 뜻입니다.

  4. 사무엘 2011/09/21 22:28 # M/D Reply Permalink

    <날개셋> 한글 입력기 6.3은 공개된 지 1주일이 지난 현재 딱히 심각한 버그가 발견된 게 없으며, 지금까지 소스 코드가 바뀐 것도 리팩터링 위주이다.
    이제 한동안은 소규모 업데이트를 준비할 필요 없이 안심하고 수 개월째 잠수 타면서 각종 무거운 기능들 연구와 구현에 전념해도 될 것 같다. 아, 한동안 다른 일들 때문에 코드 자체를 못 들여다보겠지만. -_-

Leave a comment
« Previous : 1 : ... 1650 : 1651 : 1652 : 1653 : 1654 : 1655 : 1656 : 1657 : 1658 : ... 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:
2677684
Today:
2252
Yesterday:
2124