Skip to content

devsunb/semoim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

세모임 (Semoim)

나빌 입력기 for 맥을 수정하여 세벌식 모아치기 e 자판을 구현한 macOS 용 한글 입력기

이름은 세벌식 모아치기 e 자판을 부르는 약자인 세모이에 입력기(Input Method)를 뜻하는 IM을 붙여서 지었다.

지원하는 한글 자판

  • 세모이
  • 두벌식

배경

세벌식(특히 세벌식 모아치기 e 자판)에 관심이 생겼는데 macOS를 사용하고 있어서 날개셋 입력기 사용이 불가능한 상태였다. 구름 입력기나 Karabiner-Elements 기반으로 구현된 자판을 사용해보았는데 이어치기와 모아치기가 모두 잘 동작하면서 약어까지 잘 사용할 수 있는 상태는 아닌 것으로 보였다. 그러다 마침 세벌식 다음 카페에서 숨통님이 macOS 용 세벌식 한글 입력기인 팥알 입력기를 만드셨다는 게시물을 보게 되었다.

팥알 입력기가 세모이 자판은 지원하지 않는 것 같아서 추가해보려고 시도했다. 먼저 모아치기가 부분적으로 구현되어 있는 것 같아서 이걸 완성해보려고 시도했는데, 한글 조합 과정의 복잡한 논리를 구현하기가 쉽지 않았다. 팥알 입력기의 README를 읽다가 참고한 프로젝트로 나빌 입력기 for 맥이 링크되어 있길래 들어가서 코드를 읽어보니 여기서 출발하는 게 조금 더 쉬울 것 같다는 생각이 들었다.

그래서 나빌 입력기 for 맥을 바탕으로 세모이 자판과 몇 가지 필요하다고 느꼈던 기능을 구현하였다.

프로젝트를 분리한 이유

처음에는 나빌 입력기 for 맥을 수정하여 세모이 자판과 추가 기능을 구현하고자 하였는데 세벌식 318 및 390 자판에서의 동작을 확인하기 어려워서 사용하지 않는 자판을 삭제하고 프로젝트를 분리하였다.

프로젝트 구성과 핵심 코드 대부분을 나빌 입력기 for 맥에서 가져왔다. 위 레포지토리의 README에 코드에 관한 설명을 구체적으로 해두셔서 정말 큰 도움이 되었다.

추가한 기능

일단 날개셋 입력기에서 세모이 자판을 사용해본 적이 없어서 세모이를 만드신 신세기님이 의도하신대로 자판이 동작하는지 확인하지는 못했다. 그냥 구름 입력기, Karabiner-Elements로 구현된 세모이 자판을 사용해보면서 필요하다고 느꼈던 기능을 구현했다.

모아치기 종성 넘김

"서울"을 모아치기로 입력할 때, "서"를 입력한 상태에서 "울"의 종성인 "ㄹ"을 가장 먼저 입력하는 경우 "설우"가 될 수 있다. 이를 방지하기 위해서 다음과 같은 조건을 가지고 종성을 다음 글자로 넘기는 기능을 구현하였다.

  • 현재 입력 중인 글자에 종성이 존재하고,
  • 이번 입력된 낱자로 인해 다음 글자로 넘어가게 되는 시점에,
    • "서울" 예시에서는, "설"이 입력된 상태에서 "ㅇ" 이나 "ㅜ" 가 입력되는 시점이라고 보면 됨
  • 직전 키와 입력 시간 간격이 임계치(기본적으로 150 ms) 미만인 경우
  • 최근 연속 입력된 모든 종성을 다음 글자로 넘긴다.

약어

일단 IMKit 에서는 keyUp 이벤트를 기본적으로 처리하지 못하는 것으로 보인다.

그래서 기존과 같이 keyDown 시 입력을 처리하는 구조에서 약어 매칭을 진행하는 입력 대기열을 만들어서 약어를 구현했었다. 그리고 나니 keyDown 시 입력을 처리하면 약어 시퀀스를 포함하는 글자를 입력하는 게 어렵다는 것을 깨달았다.

예를 들어 jw 또는 wj를 입력하면 입니다. 로 확장되어야 하는데, jdw를 입력하면 이라는 글자가 입력되어야 한다. 근데 모아치기가 가능하니 을 입력할 때는 jdw가 아니라 jwddwj와 같이 입력해도 된다. 이때 jwd이 아니라 입니다.ㅣ가 되어 버리고, dwjㅇ입니다.가 되어 버리는 문제가 발생한다.

그래서 keyUp 시 입력 이벤트를 처리할 수 있도록 수정하였다. keyUp 이벤트를 정상적으로 모니터 하려면 손쉬운 사용 권한을 허용해야 한다.

About

macOS 용 한글 입력기

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages