날개셋 한글 입력기의 차기 버전 10.5가 현재 거의 완성 직전이다. 목표는 늦어도 다음달 6월 초-중쯤.. 10.4가 나온 지 벌써 1년 반이 돼 간다만.. 이 프로그램은 개발이나 유지 보수가 중단된 게 절대 아니다. ^^
엔진이 바뀐 건 없지만 각종 UI와 기능들이 아주 많이 바뀌고 개선되었다. 거기에다 외부 모듈의 버그 수정과 불편 사항 건의가 반영될 것이다. 특히 크롬+Google Docs에서 조합 중인 한글이 덧나는 문제는 여러 번 신고가 들어왔기 때문에 조치를 취하는 중이다.
10.5 이후의 그 다음 버전에서 더 진지하고 더 무거운 새 기능들이 구현돼 들어갈 것이다.
예나 지금이나 프로그램 개발은 즐겁다. 아무쪼록, 어서 새 버전이 완성돼서 지금 작업 완료된 기능들이 사용자에게 제공됐으면 좋겠다.
1. 편집기: 텍스트 import 기능에서 UTF-8 지원
편집기에는 콘솔 프로그램의 실행 결과를 가져오는 기능이 먼 옛날부터 제공되고 있었다. (2004년, 3.0부터.. ㄷㄷ)
실행할 프로그램 파일명과 실행 인자를 따로 줘도 되고, 아니면 파일명은 비워 놓고 실행 인자에다가 파일명과 인자를 한꺼번에 써 줘도 된다.
후자처럼 하면 프로그램을 실행하는 게 아니라 SET, PATH, DIR 같은 도스 명령을 실행해서 결과를 가져올 수도 있다. 얘는 프로그램을 실행하는 게 아니라 명령줄을 실행하기 때문이다. 그 명령줄에 프로그램을 실행하라는 명령이 들어갈 수도 있는 것이다.
그런데 이렇게 하면 경로와 인자에다가 시스템 기본 코드 페이지에 존재하지 않는 유니코드 문자를 넘겨줄 수 없다는 단점이 있었다. 지금까지는 말이다.
허나, Windows 10 이후로 운영체제의 추세가 잡다한 재래식 multibyte 코드 페이지들에 대한 인지도를 낮추고, multibyte 환경에서는 UTF-8을 기본으로 제공하는 쪽으로 가고 있다. 2017~19?? 그래서 내 프로그램에다가도 Windows 10 이상에서 동작할 때는 명령줄을 UTF-8 인코딩으로 전달하는 옵션을 추가해서 사용할 수 있게 했다.
이 옵션을 주면 DIR을 했을 때, 한글판 기준 cp949에 없는 문자가 들어간 파일/디렉터리 이름도 정상적으로 볼 수 있다. 또한, 그런 파일 이름을 찾도록 지정할 수도 있다. 단, 이 옵션을 주면 명령 프롬프트의 기본 UI가 한국어 같은 지역 언어가 아니라 그냥 영어로 통일된다.
아울러, 콘솔 프로그램이 아니라 URL 가져오기 모드에서 이 옵션을 켜면.. URL에서 알파벳· 숫자가 아닌 타 문자(한글 등)를 자동으로 UTF-8 기준으로 % encode 하게 했다. euc-kr 같은 타 인코딩으로 encode해야 하면 그건 사용자가 수동으로 해야 한다.
2. 편집기: 다른 대화상자들
(1) 편집 화면 설정의 화면색에 '어두운 회색, 어두운 자주색(우분투), 옅은 파랑'을 추가하고, 완전 백색보다 약간 어두운 '아래아한글 2.x' 색상도 추가했다.
아래아한글은 1.x 시절엔 파란 바탕 흰 글자였지만, 컬러를 지원하기 시작한 2.x부터 흰 바탕 검정 글자로 바뀌었다. 그런데 이게 완전 순백 화이트가 아니라 회색에 가깝게 어두운 화이트가 디폴트였다. 뭐, 이게 너무 눈부시지 않고 장시간 작업하기에 좋긴 하다. 옛날 생각도 나고.. ^^
Windows와 보조를 맞추기 시작한 아래아한글 3.0부터 배경이 순백 화이트로 바뀌었다.
(2) 아울러, 지난 10.4부터 블록의 색깔을 4종류 중 하나로 customize하는 기능이 추가됐는데.. 색상 설정을 바꾸면 블록의 실제 색깔이 어떻게 바뀌는지도 대화상자에서 직접 눈으로 확인할 수 있게 했다.
(3) 쪽 설정 대화상자의 컨트롤들을 "글자 - 문단 - 종이"의 순으로 스케일이 커지게 배치했다. 그리고 머리글과 바닥글의 입력란에서는 & 변수들의 종류가 풍선 도움말로 표시되게 했다.
(4) "도구 - 분량 계산 메뉴" 명령은 블록을 잡지 않았을 때도 사용 가능하고, 이 경우 텍스트 전체를 대상으로 시행하도록 했다. 워드 프로세서에서 제공되는 텍스트 분량 표시 기능을 생각하면 진작에 이렇게 동작 가능했어야 했다.;;
3. 편집기: 메뉴
(1) 단축키로만 존재하던 명령들.. Shift+F3(뒤로 탐색), Alt+K(상용구 치환), Alt+L(탐색기에서 복사한 파일의 이름 삽입)을 모두 메뉴에다 정식 등재했다.
사실, 파일 이름 삽입은 기존 Ctrl+V 붙이기 기능과 통합하는 게 가장 좋긴 한데.. 편집기에서 제공하는 붙이기 기능과, 날개셋 에디트 컨트롤이 자체 제공하는 붙이기 UI가 서로 연계하는 게 쉽지 않아서 그냥 이렇게 놔 뒀다.
(2) 파일 메뉴의 하단에 표시되는 '최근 사용 파일'이 겉으로는 8개까지 표시되지만, 내부적으로는 그게 전부가 아니라 2배에 가까운 14개까지 관리되게 했다. 그래서 지금 메뉴에서 파일 하나가 없어져서 삭제된다 하더라도, 뒤에 밀려나 있었던 9순위 파일이 마지막 8순위로 당겨져 올라가게 된다.
(3) 창 메뉴의 하단에 표시되는 창 목록들에서 현재 활성화된 창은 체크 √가 아니라 ⊙ 불릿 마크로 표시되게 했다. 체크는 복수 개의 on/off이지만 불릿은 n개 중 단 하나만 선택되는 UI 요소이기 때문이다. 저 상황에서는 불릿 마크가 더 적절하다.
4. 에디팅 엔진
(1) home 키를 눌렀을 때 무조건 첫 칸으로 가는 게 아니라, whitespace를 건너뛴 첫 칸으로 가도록 동작을 수정했다. 이미 그 칸에 있을 때 home을 누르면 진짜 첫 칸으로 간다.
이건 워드 프로세서보다는 프로그래머용 텍스트 에디터에 더 특화된 동작이다. 이렇게 하는 게 더 나은 것 같다.
(2) 저건 당연히 날개셋 편집기 같은 multi line일 때의 동작이다. 반대로 single line일 때는 불필요하게 ctrl+드래그를 해도 multi-selection이 되지 않게 하고, 일본어 문자나 한자에 대한 툴팁도 동작하지 않게 했다. 이건 기능 추가나 개선이 아니라 그냥 사소한 변경이다.
(3) 세로쓰기 모드일 때 일본어에서 길쭉한 전각 장음 부호가 가로줄이 아니라 세로줄로 나오게 폰트 모양을 수정했다. 역시 개발자가 외국어에 대한 식견이 넓어져서 필요를 느껴야 이런 걸 반영하게 된다. -_-
그리고 라틴 알파벳뿐만 아니라 키릴 문자와 그리스 문자도 단어 단위로 wrap이 되게 했다. 아래 그림에서 X이던 게 O로 바뀌었다는 뜻이다. ^^
5. 제어판: 최종 변환 규칙에서 여러 내정값을 한꺼번에 가져오기
제어판 - 편집기 계층 - 최종 변환 규칙을 보면 내정값으로 전각 문자, 호환용 한글 낱자 같은 몇몇 predefined set이 있다. 내정값을 가져오면 지금 있는 설정들은 모두 없어지고, 규칙 전체가 그 내정값으로 대체된다. 즉, A=B처럼 된다.
그러나 새 버전에서는 내정값을 Ctrl이나 Shift를 누른 채 마우스 클릭이나 화살표 키를 이용해서 지정하면.. 규칙을 그 내정값으로 통째로 대체하는 게 아니라, 지금 규칙에다 그 내정값을 추가할 수 있게 했다. 이 경우, A+=B와 비슷한 형태가 된다.
이제 "전각 문자 + 호환용 한글 낱자"처럼 여러 내정값 규칙을 동시에 사용할 수 있게 됐다. 이것도 진작부터 필요를 느끼고 있었는데 간단한 UI 조작만으로 드디어 가능해졌다.
기존 규칙과 새 내정값이 충돌할 수 있다. 현재 A라는 문자를 B로 치환하게 되어 있는데 새 내정값에는 A를 C로 바꾸라는 규칙이 있는 것 말이다. 이때 Ctrl은 새 내정값으로 대체하는 반면, Shift는 그건 대체하지 않고 놔 둔다.
날개셋 한글 입력기의 각종 대화상자에는 ctrl+클릭을 했을 때 동작이 미묘하게 달라지는 게 지금까지 은근히 많이 들어갔다. 하지만 ctrl을 눌렀을 때 뭔가 시각적인 피드백이 나오는 게 없는 게 좀 아쉽다. 이건 운영체제 차원에서 넣기가 쉽지 않아 보인다. 장기적으로 좀 생각을 해 봐야겠다.
6. 제어판: 나머지
(1) 글쇠배열 편집 화면에서.. 매번 대화상자를 꺼내지 않고 글쇠를 클릭만 해도 그 자리의 수식과 수식값을 아래에서 확인할 수 있게 했다.
앞으로 글쇠배열 편집기에도 아이템의 복수 선택, 아이템 이동 등 여러 편의 기능들이 더 구현되고 지원될 것이다.
(2) 입력 항목의 순서를 나타내는 이 입력란에서는 위가 아니라 아래 화살표를 눌러야 숫자가 커지고 목록에서 '아래'로 내려가도록.. 더 직관적으로 동작하도록 로직을 수정했다~!!
이거 진작부터 이렇게 하고 싶었는데 기술적으로 가능하다는 걸 아주 최근에야 확인했다.
(3) 날개셋문자를 입력받는 대화상자에서 왼쪽을 보면 날개셋문자의 종류(type)가 트리 계층 구조로 표현되어 있다. 이 중에서 그 자체가 독립된 타입이 아니고 하위 타입들을 분류만 하는 명칭인 '한글 조합'과 '비문자'는 진하게 표시되게 했다.
(4) 설명문을 작성하는 대화상자에 '글쇠배열에 대한 설명문, 입력 항목에 대한 설명문, 설정 전체에 대한 설명문'이라고 제목을 더 세분화했다. 그리고 한글 로마자 입력기도 표준 로마자 표기법을 제외한 나머지 방식에 대해서는 "한글 로마자 Qwerty (HWP, 북한, 공진청)" 등 세부 규칙이 이름에 추가되게 했다.
(5) 세벌식 390은 / 자리가 한글을 입력 중일 때만 ㅗ이고, 그 외의 상황에서는 /가 그대로 입력되는 형태이다. 그런데 이 상태로 복벌식 빠른설정을 적용하고 나면 그 수식이 사라져 버리고 문자가 /로 고정되곤 했다. 이 동작을 개선해서 / 자리는 390 + 세벌식 한글 입력 중일 때 ㅗ, 그 외의 상항에서는 / 로 제대로 처리되게 했다.
7. 보조 입력 도구
(1) '조합 안에 조합 생성' 입력 도구에서 빈 입력 스키마 경고가 쓸데없이 자꾸 출력되지 않게 조치를 취했다. 영문(빈 입력 스키마) 모드일 때는 한번 나타나긴 하지만 한글 모드로 전환하면 없어진다. 그리고 이걸 아예 표시하지 않게 하는 옵션도 추가했다.
이 입력 도구를 유용하게 쓰면서 한자어를 평소에 많이 입력하고 계신다는 분이 건의를 하셨다.
(2) '수식 계산 기록'에서 오토마타 수식에 대한 계산 기록이 찍힌 경우, 이때의 오토마타 상태와 설명문도 같이 표시되게 했다.
(3) '필기 인식'이 한중일뿐만 아니라 대만 번체 인식기도 인식하여 지원하게 했다.
(4) '부수로 한자 입력'에서 한자를 우클릭하면 이 글자의 간체자/번체자로 바로 이동하는 기능을 추가했다(그런 한자가 존재하는 경우). 호환용 한자를 찍으면 그 글자의 표준형 글자도 안내해 준다.
단, 이 간체/번체 변환은 운영체제에서 제공하는 기능을 사용해서 동작하며, BMP 영역 글자만 지원하고 오류도 제법 있다. 그냥 없는 것보다 나은 참고용으로만 사용 가능한 퀄리티이다.
(5) 현재 문자표나 한자 부수처럼 테이블 기반으로 문자를 입력하는 입력 도구들에는 우측 상단에 '↔' 버튼이 있다. 얘를 누르면 문자를 본문에다 삽입하는 게 아니라, 반대로 본문의 cursor가 가리키고 있는 문자 그 표에서 찾아서 표시해 준다. 그래서 처음 보는 한자에 대해서 ↔를 누르면 이 한자의 부수와 획수를 바로 알 수 있다.
그런데 이 기능은 cursor의 글자를 얻어 올 수 없는 환경에서는 사용할 수 없다. 지금까지는 이때 에러 메시지만 출력하고 끝이었지만, 이제는 그런 환경에서는 ↔ 버튼 자체가 없어지고 표시되지 않도록 동작을 수정했다.
8. 버그 수정
(1) 이전 10.4 버전은 '고급 입력 스키마'의 고급 글쇠 인식 기능을 사용하다 보면 keydown 이벤트에서 앱이 뻗는 경우가 있었다. 이걸 사용하는 분이 계신다면 이 긴 시간 동안 분명히 버그 신고를 하셨을 텐데... 본인에게 지금까지 신고가 들어온 건 없었다. 이건 내가 자체적으로 발견해서 고쳤다.
(2) 편집기에서 문서 줄 수가 32767 줄을 초과해서 32K~64K 사이에 있을 때, Ctrl+G 줄 번호 대화상자를 열면 번호가 음수로 잘못 표시되던 문제가 있었다. 이걸 고쳤다.
9. 도움말
(1) 'I. 일러두기'와 '부록 - 예제 데이터 소개'를 세분화했다.
전자의 경우 '개발 방향', '책임 범위', '사용자의 참여'로 아이템들을 나눴으며, 후자는 '세벌식 한글, 두벌식 한글, 나머지 외국어/특수문자'로 나눴다. 이렇게 해 주니 보기가 훨씬 더 좋다.
(2) 입력 도구들 중에 '문자표'와 '부수로 한자 입력'은 지금까지 자신만의 도움말이 없었는데 이번에 추가했다.
사용법이 너무 자명해서 특별히 쓸 게 없다고 여겨져서 생략했던 건데.. 정작 도움말 글을 써 보니 그렇지 않았다. 고유한 동작 방식을 설명하다 보니 한 페이지 정도는 너끈히 분량이 나왔다. =_=;;
10. 예제 데이터의 수정· 보강
(1) 북한 표준 방식에 ㅓ+ㅣ=ㅔ, ㅏ+ㅣ=ㅐ 만 있지, ㅘ+ㅣ=ㅙ, ㅝ+ㅣ=ㅞ 는 빠져 있는 걸 확인해서 보충했다.
(2) 초성 ㄸㅃㅉ과 종성 ㄳㄶㄻ을 동일한 자음 글쇠로 모두 입력할 수 있는 변칙(?) 두벌식 예제를 추가했다. 몇 년 전에 이 블로그에서 다룬 적이 있었는데, 이걸 예제로도 정식으로 추가했다.
(3) 끝으로, Google 단모음은 초· 종성뿐만 아니라 중성도 일정 시간이 지나면 ㅏ+ㅏ=ㅑ, ㅓ+ㅓ=ㅕ처럼 동일한 낱자 연타는 되지 않게 하는 로직을 추가했다.
그러니 얘는 초중종 모든 입력 상태에 타이머가 필요해졌다. 중성의 동일 연타 차단은 오토마타 수식에서 B==E인 경우를 보면 되니 아주 간단히 할 수 있다.
Posted by 사무엘