-
-
Notifications
You must be signed in to change notification settings - Fork 53
개발 정보
kime을 확장하거나 버그를 수정할려고 생각하시는 개발자 분들을 위한 자료입니다.
kime은 대략 이런식의 흐름을 갖습니다
보통 끝글자 버그같이 GUI 라이브러리와 관련된 내용은 frontend, 새로운 입력방식이나 언어같은건 backend, 설정에 관련된건 config, kime을 외부에서 사용하고 싶으시면 capi를 보시면 됩니다.
리눅스에서 키보드 입력은 먼저 하드웨어가 scancode를 주고 그걸 커널이 keycode로 매핑한 다음 Xorg나 xkb에서 keysym을 만듭니다
쿼티나 드보락등의 레이아웃을 교체하면 보통 keycode는 그대로지만 keysym이 바뀌게 되는데
kime은 현재 keycode만을 입력으로 받고 있어서 영어 자판에 영향은 받지 않지만 한글 자판을 바꾸고 싶을때도 그대로인 단점이 있습니다 나중에는 두 입력을 절충해서 사용하게 될 것 같습니다
입력창은 한자와 이모지등의 입력을 위해 꼭 필요한 기능입니다만 입력기 안에서 GUI 창을 띄우고 그 안에서 입력을 또 받는 희한한 구조기도 하고 저의 실력 부족으로 현재 개발버전에 있는건 아직 불완전합니다
현시점에선 입력창이 떠있는중엔 press_key가 InputResult::NOT_READY를 반환하고 그걸 받은 frontend들은 포커스 이밴트때 다시 engine에 입력결과를 요청해서 마무리하는 비동기 방식으로 진행됩니다
kime은 바이너리 크기를 줄이기 위해서 engine을 동적 라이브러리로 만들어서 frontend들이 공유합니다
capi는 libkime_engine.so 파일과 kime.h를 생성하는 라이브러리고(Rust -> C) cffi는 그걸 다시 Rust에서 쓸려고 있는 바인딩 라이브러리 입니다(C -> Rust)