emacs 한글입력기를 만들어봤습니다.

sylphong의 이미지

기존에 포함되어 있는 한글 입력기는 한글입력에 제한이 있어 alee님의 aim을 참고하여 새로 만들어봤습니다.
emacs가 인식하는 디렉토리(예: ~/.emacs.d/)에 첨부파일을 복사한후 설정파일에 아래와 같이 추가하시면 기존의 korean-hangul입력기를 오버라이딩합니다.
(require 'hangul)
3벌식 입력기 korean-hangul3도 포함되어 있습니다.

File attachments: 
첨부파일 크기
Image icon hangul3.png18.29 KB
Binary Data hangul.el_.gz2.93 KB
peccavi의 이미지

이맥스에 한걸음 더 가까워 질 수 있을것 같습니다. 정말 고맙습니다.

----
jai guru deva om...

----
jai guru deva om...

antz의 이미지

시간이 지나서 묻혀지지 않게
kldp.net과 같은 곳에서 관리되었으면 좋겠습니다.

좋은 프로그램 고맙습니다.
잘 쓰겠습니다. :-)

---


Blog : http://lum7671.egloos.com

hexascii의 이미지

정말 좋은 프로그램 감사합니다.

그런데, emacs를 사용한지 얼마 안되서 드리는 질문입니다.
(검색은 해 봤는데, 확신이 가지 않습니다.)

~/.emacs 파일에
(require `hangul)

~/.emacs.d/ dir에
첨부 파일 복사가 맞습니까?

File error: Cannot open load file, hangul 

라고 에러가 발생합니다.

sylphong의 이미지

네..맞습니다.
load-path에 ~/.emacs.d/ 가 추가되어 있는지 확인해보세요.
추가되어 있지 않다면 추가해야 됩니다.
(setq load-path (cons (expand-file-name "~/.emacs.d/") load-path))
아..그리고 기존의 것을 오버라이딩 하기때문에 설정파일 마지막에 넣는편이 좋습니다.

M.W.Park의 이미지

작은(홑) 따옴표가 좀 이상한듯합니다만...

(require `hangul) --> (require 'hangul)

-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

hexascii의 이미지

초보가 고생시켜 드리는군요^^;;;;

(setq load-path (cons (expand-file-name "~/.emacs.d/") load-path))
(require 'hangul)

요것만 현재 ~/.emacs에 쓰여져 있고
~/.emacs.d/에 다운받은 패치가 되어 있는 상황입니다.

lisp은 알겠는데,
emacs의 customizing load가 어떻게 되는 건지 모르겠네요.ㅡㅡ;;;

여전히 로딩 에러가 납니다만.ㅡㅡ;;;

emacs의 customizing에 관련된 문서 추천 좀 해주세요.ㅡㅜ

sylphong의 이미지

혹시 mule패키지가 설치되어있는지 확인해보세요..
quail이 있어야됩니다.
보통은 emacs가 설치된 디렉토리 아래의 lisp/international/quail.el.gz 로 존재합니다.

hexascii의 이미지

/usr/share/emacs/22.1/lisp/international/에

/quail.elc가 존재합니다.

혹시나 해서 이전 버전인 21.4도 설치해 봤는데, 역시나

/usr/share/emacs/21.4/lisp/international/에

/quail.elc만 존재합니다.

이거 괜히 첨 써서 짐만 안겨드리는게 아닌가 하네요 ㅡㅡ;;;

아무것도 세팅되지 않은 emacs입니다.

sylphong의 이미지

글쎄요..뭐가 문제인지 모르겠군요..;

oppor의 이미지

압축을 풀어보세요.~~~~~

catz의 이미지

세벌사랑,한글사랑
글이 살아야 나라가 산다.

세벌사랑,한글사랑
글이 살아야 나라가 산다.

sylphong의 이미지

포함된 버전이 3벌식 최종입니다.

dreamstorm의 이미지

Emacs 최고의 문제점이 해결되었네요.
EmacsWiki 등에 올리셔서 kldp 외의 분들도 볼수 있도록 해주실수는 없을까요?

sylphong의 이미지

emacs-devel에는 보냈습니다. 어떻게 될지는 모르겠네요.

hermian의 이미지

한영변환키는 뭔가요?
저는 여전히 예전 입력기가 동작하는군요?(Shift-space)
modeline에 한2u로 나오네요 맨 위그림은 한2U 인데

sylphong의 이미지

U부분은 입력기에서 구현하는 부분이 아닙니다.
한2가 나오는게 맞습니다. 입력이 안되면 현재 터미널 코딩을 확인해보시기 바랍니다.
터미널 코딩에서 인식못하는 글자는 분리해서 나타내어집니다.
예를들어 euc-kr에서 '햏'을 입력하면 '해ㅎ'가 입력되는거죠.

이준환의 이미지

저는 390 사용자인데요,
좋은 확장을 만들어 주신 것 같은데.... 좀 휘청하는 얘기지만,
기존의 입력에 문제가 있다는 것이 햏 같은 글짜가 이전에 안나오는 그런 문제를 해결하신건가요?

또, 저는 지금껏, 윈도우에서 emacs를 사용해 왔는데, 사실, 한글입력기에 큰 불만 없이 그냥 그럭저럭 사용해 왔습니다만(390 사용자라 그런가..?)
한가지 문제가 기본 한글 입력 상태에서 "[" 나 "]" 를 입력하면, 이상한 꺽쇠가 찍히더군요. "{" 나 "}" 의 경우도 마찬가지였던것 같고..

근데. 만드신 hangul.el 은 정확하게 3벌식 최종의 부호가 찍히더군요.. emacs 기본 3벌식 입력방식에서 그러한 것들을 어떻게 하면 제가 원하는 데로
수정할 수 있는지... 좀 힌트라도 주시면 안되겠습니까? elisp은 아주 기본...만 알아서...
무슨 table 같은게 있을 것 같은데...

부탁드려봅니당.

blablabla...

sylphong의 이미지

390유저가 생각보다 많아서 390입력기도 추가했습니다. :)
input method명은 korean-hangul390 입니다.
제가 2벌식 유저라서 3벌식 최종이나 390은 버그가 있을지도 모르겠네요.

kaisyu의 이미지

새로운 한글 입력기를 유용하게 잘 사용하고 있습니다. ^^
그런데, 두 음절에 걸쳐서 반복되는 초성이 있을 경우
앞 음절에 된소리로 되어 버리는 현상이 있는 걸 발견했습니다.
예를 들어서, '저자'라고 입력을 하려 하면 '쩌ㅏ'가 되어 버립니다.
우선은 ntemacs 22.1 버전에서만 확인이 된 것인데,
저만 그런 것인지 다른 분들도 그런 것인지 궁금하네요.

sylphong의 이미지

수정했습니다. :)
사용하다 문제점이 있으면 알려주세요.

댓글 첨부 파일: 
첨부파일 크기
Binary Data hangul.el_.gz3.3 KB
kaisyu의 이미지

감사합니다.
이제 잘 됩니다. ^^

oppor의 이미지

cond: Symbol's function definition is void: setf

이렇게 나오고 한글이 아예 안써지네요.

require 'hangul 을 없애면 그냥 한글이 써지긴 하는데요. 뭥미, 햏 이런건 안써지네요.

저게 무슨 오류인지 아시나요?

sylphong의 이미지

hangul.el이나 .emacs파일에 (require 'cl) 을 한번 추가해보세요.

이준환의 이미지

새로 올리신 내용 가지고 해보니, 심벌들이 제가 원하는데로 찍히는 것을 확인했습니다.
이제 더이상 [] 나 {} 문자를 위해서 영문으로 굳이 변환해야 할 필요가 없어져서 너무 기분이 좋네요.

그리고...

slyphong 님의 package가 emacswiki.org 에 올라왔는데, 여기에 대한 소개가 없어서
제가 그냥 아래 링크에 추가했습니다.

http://www.emacswiki.org/cgi-bin/wiki/WritingKorean

slyphong님 혹시 시간되시면, 나중에 방문하셔서 상세 설명좀 부탁드려요.
다음번 emacs에 꼭 채택되었으면 하는 바램입니다.

blablabla...

pdlkpdlk의 이미지

새로운 입력기 설치는 잘 된것 같은데
여전히 햏 입력하면 해ㅎ 이라구 찍히면서 안되네요.
fontset으로 ksc5601이외의 글자체를 지정해야 되는건지?
xft방식으로 넘어가지 않으면 입력기상 지원해도 햏 을 입력하면 안되는건가요?

M.W.Park의 이미지

유니코드 지원되는 버전(snapshot 버전이던가?)을 한번 설치해보세요.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

sylphong의 이미지


입력기를 확장하여 한자와 특수문자도 입력가능하도록 했습니다.
사실 만든지 꽤됐는데 KLDP에 업로드가 안되서 링크를 걸었습니다. 아래의 파일들을 받아서 .emacs.d에 넣으시면 됩니다.
F9를 누르시면 위 스크린샷처럼 한자를 선택할 수 있습니다. 현재 입력중인 글자에 대해서만 작동을 하며 입력중이지 않을때는 기존의 한자입력기로 전환될겁니다.
hangul.el.gz
hanja-util.el.gz

sylphong의 이미지

드디어 emacs 한글입력기가 커밋됐습니다.
다음 릴리즈에 반영될 것 같네요.

antz의 이미지

축하드리고요.
덕분에 편해지겠네요. :-)
고맙습니다~


Blog : http://lum7671.blogspot.com, http://lum7671.egloos.com

토끼아빠의 이미지

좋은 하루 되세요!!

좋은 하루 되세요!!

exsider의 이미지

안녕하세요. 올리신 파일은 드보락 자판에서는 제대로 동작하지 않는 것 같습니다. 파일 앞쪽에 있는 hangul-djamo-table 이나 *-keymap 을 수정하면 될 것 같기는 한데 각 숫자가 뭘의미하는지 모르겠네요.
가르침을 주시면 열심히 삽질해보겠습니다...

sylphong의 이미지

각 keymap에 있는 숫자는 한글자모의 인덱스를 나타냅니다. 그리고 djamo-table은 자모 중에 쌍자모가 존재할 경우를 나타내고 그 인덱스를 자모의 원래 인덱스에 더합니다.

기존의 입력기에서는 한글입력에 문제가 없었는지요?

exsider의 이미지

emacs 에 원래 포함되어있던 입력기는 영문시퀀스에 각 글자가 매핑되는 식이어서
영문시퀀스를 드보락에 맞게 변환하는 프로그램을 만들어서 변환하여 사용했습니다.

keymap 의 숫자는 한글자모의 인덱스를 나타낸다고 하셨는데,
unicode 테이블의 특정 지점을 기준으로한 인덱스인가요?

그럼 "a 는 ㅁ 에 대응한다" 는 식의 정보는 어디에 있나요?

sylphong의 이미지

hangul2-keymap은 처음부터 차례대로 a~z에 대응됩니다. 예를 들면 제일처음에 나오는 숫자 17은 a가 17에 대응되는것을 나타냅니다. 여기서 17은 유니코드의 '한글 호환 자모' 영역내에서의 인덱스를 뜻합니다. 0x3130부터 시작했을때 17번째 있는 글자는 'ㅁ'이 되죠.
드보락 자판을 사용하신다면 알파벳 순서에 맞게 위치를 바꾸시면 될듯합니다.
만약 3벌식을 쓰신다면 좀더 복잡해집니다. 이때는 제어코드를 제외한 아스키코드 영역을 재정의해야 됩니다.

exsider의 이미지

답변 감사합니다.
hangul3-keymap 은 어떤 순서로 되어있는지 알고싶습니다.(저는 세벌식씁니다.)
그리고 세벌식 최종과 390을 모두 지원하는데 같은 keymap 을 쓰는 건가요?

sylphong의 이미지

세벌식은 아스키코드에서 제어코드에 해당하는 0x00~0x20, 0x7F를 제외한 부분, 즉 0x21~0x7E영역이 차례대로 저장되어 있습니다. 세벌식 최종과 390 모두 같은 방식으로 저장되어 있지만 서로 레이아웃이 다르므로 다른 keymap을 사용합니다.
dvorak을 써보지 않아서 잘모르겠지만 제 생각에는 keymap을 바꾸는거보다는 dvorak으로 입력된 것을 qwerty로 변환하는 함수를 만들어서 hangul2-input-method, hangul3-input-method, hangul390-input-method에서 처리하기 전에 변환하는 편이 나아보이네요.

exsider의 이미지

감사합니다.
지금 확인해보니 새로 올리신 파일에는 최종과 390용 keymap 이 별도로 되어있군요.

제가 ELisp 를 겉만 핧아봐서 코드를 수정하는 건 힘들것 같구요,
그냥 keymap 부분을 dvorak 에 맞게 수정한 파일을 따로 만드는게 편할 것 같습니다.

만들어서 테스트해보고 잘 되면 여기에 올리겠습니다.

exsider의 이미지

벌써 3년이 지났군요.
기능은 완성을 했는데, 그동안 까먹고 있었습니다.
늦게라도 만든 파일을 올려봅니다.

이 파일은 ylphong 님이 2번째로 올린 파일에서
앞쪽에 키매핑 부분만 드보락에 맞춰 수정한 것입니다.

문제점으로는 두벌식이 똑바로 동작하지 않습니다.
관심있으신분이 혹시 있으면 좀 수정해주세요.

세벌식최종과 세벌식390은 잘 동작합니다.

사용하려면 (require 'hangul_d)
를 넣고 설정하시면 됩니다.

댓글 첨부 파일: 
첨부파일 크기
Binary Data hangul_d.tar.gz4.63 KB
oppor의 이미지

이건 이맥스 23버젼에서부터 되는거죠??
22버전은 아무리 해도 안되네요.

sylphong의 이미지

네. 22에서는 몇가지 함수가 완전히 구현되지 않아서 안될겁니다.

oppor의 이미지

ㅋㅋㅋ 괜히 삽질 했네요~~^^;;

23버젼 제대로 나올때까지 기다려야겠어요.^^

hang의 이미지

입력기 감사히 잘 쓰고 있습니다.

시스템 자판이 dvorak이나 colemak일때의 keymap을 몇줄 추가해봤습니다.

(require 'hangul_m)
(setq hangul-system-keymap 'dvorak)

혹은

(setq hangul-system-keymap 'colemak)

patch는 같은 내용입니다.

댓글 첨부 파일: 
첨부파일 크기
Binary Data hangul_m.el_.gz5.23 KB
파일 hangul_kbd_layout.patch3.86 KB
joonro의 이미지

이것 때문에 고생하고 있었는데 잘 되는군요. 감사합니다.

klenui의 이미지

프로그래머 드보락 추가해보았습니다.

감사합니다.

댓글 첨부 파일: 
첨부파일 크기
Binary Data hangul_m.el_.gz5.33 KB
klenui의 이미지

hangul-delete-backward-char 에서 delete-char 1 이 아니라 delete-backward-char 1 이어야 되네요.
emacs 24만 그런건지는 모르겠습니다만..

sephiron의 이미지

최신버전의 hangul.el에 이중모음 중 ㅔ를 연타하면 ㅖ가, ㅐ를 연타하면 ㅒ가 되는 입력방식을 추가하였습니다.
제가 두벌식, QWERTY자판에서만 테스트 해봐서 다른 자판에서는 제대로 작동하지 않을 수 있습니다.

hangul-djamo-table 부분만 발췌해서 올립니다.

(defconst hangul-djamo-table
  '((cho . ((1 . [1])                   ; Choseong
            (7 . [7])
            (18 . [18])
            (21 . [21])
            (24 . [24])))
    (jung . ((32 . [-1 32])             ; 'ae' to 'yae' 
             (36 . [-1 36])             ; 'e' to 'ye'
             (39 . [31 32 51])          ; Jungseong
             (44 . [35 36 51])
             (49 . [51])))
    (jong . ((1 . [1 21])               ; Jongseong
             (4 . [24 30])
             (9 . [1 17 18 21 28 29 30])
             (18 . [18 21])
             (21 . [21])))))