libhangul / libhangul

A library to support hangul input method logic

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

한글 조합과 관련 없는 키 모두에 대해 사용하지 않도록 처리

changwoo opened this issue · comments

현재 hangul_ic_process()에서 한글 조합과 관련없는 키 중에서 스페이스나 탭은 false를 리턴하고 숫자나 기호는 true를 리턴하면서 hangul_ic_get_commit_string() 결과에 그 숫자나 기호가 포함되어 버리는데요.

처음에 저는 어떻게 되든 상관있나 생각했는데, libhangul/ibus-hangul#15 ibus-hangul 이슈를 보니 다른 숫자나 기호의 경우에도 false를 리턴하게 하는 게 맞는 것 같습니다. 그러면 숫자나 기호 키는 설정된 XKB 키맵에 따라 클라이언트에서 처리할 수 있을 겁니다.

예. 그렇게 하는 편이 좋을 것 같습니다.
전에 다른 입력기 구현에서 반대의 경우로 문제가 있었던 것 같은데 잘 기억이 나지 않네요.
지금은 그렇게 바꿔도 별 문제가 없겠죠.

다시 보니 두벌식의 경우에는 관련 없는 키를 무시하는 게 확실한데, 세벌식의 경우에는 기호 키 일부를 다른 기호로 정의한 부분이 있는데 QWERTY 키를 가정해서 무슨 기호를 한글키로 쓰는 대신 다른 위치로 바꾼다라든지 그렇게 정했을 테니 QWERTY 그대로 입력되는 키라고 해서 사용하지 않는 것으로 처리하면 문제가 될 것 같습니다. 세벌식에서는 숫자/기호 키를 계속 사용하도록 해야 할까요?

예를 들어 일본어PC98레이아웃에서 세벌식을 쓸 때 그대로 입력되는 숫자나 기호를 사용하지 않는 것으로 처리한다고 가정하면.. QWERTY에서 Shift-; (:) 키가 세벌식최종에서는 "4"인데, 이렇게 정의한 건 콜론 문자가 일반 텍스트에서 잘 쓰이지 않는다는 가정에서 희생했을텐데요. 하지만 일본어 PC98 키보드에서는 Shift-; 키 위치에는 "+" 문자가 있기 때문에 ":"이 아니라 "+"를 입력할 방법이 없어지게 됩니다. (QWERTY의 "+" 키 위치에 PC98에서는 "_" 문자가 있습니다.)

세벌식 두벌배열은 특이하게 "~" (Shift-`) 기호만 "※" 당구장 표시로 만들었는데 이것도 애매하네요.

세벌식은 숫자판과 일부 기호를 재정의해서 사용합니다. 따라서 일괄적으로 한글을 제외하고 처리할 수는 없고 자판별로 다르게 해야 합니다.
세벌식 두벌배열은 제가 임의로 만든 것이라서 아스키 영역 밖의 글자 입력 테스트를 위해서 "※"를 추가한 것 뿐입니다.

일단 두벌식에만 관련 내용을 적용해 보았습니다.
이 방식은 위 기능을 제공할 수는 있지만 다른 위험성이 증가하게 됩니다.
libhangul/ibus-hangul#42 와 같은 문제가 스페이스에서만 발생했다면
이후에는 모든 영문자에서 발생하게되어 오작동 가능성이 높아지는 문제가 좀 있습니다.

이전에 왜 이런 결정을 내렸는지 잘 기억도 나지 않고 추적도 좀 어렵게 되었습니다만,
일단 이 방식으로 사용을 좀 해보고 결정하는 것도 좋을 것 같습니다.

관련된 것으로 보이는 리포트가 있어 공유합니다. gureum#14