Under the proposal
directory.
The project page in the freebsd wiki: https://wiki.freebsd.org/SummerOfCode2021Projects/InputMethodInFreeBSDVirtualTerminal
The wiki page also contains my weekly reports during GSoC.
VT-IME is a input method editor for FreeBSD virtual terminal vt(4), developed under Google Summer of Code 2021.
The VT-IME framework, specifically designed to enable direct CJK (Chinese, Japanese, and Korean) character input in FreeBSD’s virtual terminal, vt(4), addresses a significant functionality gap. Despite vt(4)’s advancements, including Unicode support and the capability to display double-width CJK characters, direct CJK character input capability was still lacking.
The VT-IME framework, integrating both backend and frontend components, addresses this gap by providing seamless CJK and non-ASCII character input, thereby enhancing vt(4)’s functionality and usability, especially for users who rely on non-ASCII characters. The backend component is tasked with efficient input processing and character encoding, ensuring both compatibility and performance. Concurrently, the frontend offers an intuitive interface for user interaction. This blend of backend robustness and frontend usability establishes VT-IME as a significant development in FreeBSD, meeting the needs of multilingual environments.
- Backend: An IME API server for communicating with the IME library
- Use librime as the input method engine library to translate keys into valid CJK characters.
- Create APIs for accessing the IME library functions.
- Provide extra features like schema selection, data deployment, and data synchronization.
- Frontend: A graphical frontend for showing the current input status and characters/words candidates.
- First stage: Implement the frontend in tmux.
- Design an IME client for interacting with the backend IME API server.
- Display IME components on the tmux status bar.
- Final stage: Implement the frontend in vt(4).
- Handle keys in the kernel and send them to the backend.
- Display IME components on the screen.
- First stage: Implement the frontend in tmux.
This project was completed successfully during Google Summer of Code 2021, and you can access the report under the report
directory.
However, if you want to see more detailed background, introduction and future goals of this project, please access my paper, which is published at AsiaBSDCon 2023, under AsiaBSDCon2023
directory; you can also access on FreeBSD paper website.
- Tmux-rime: https://github.com/Cycatz/tmux-rime
- Cloned source code:
- Branch
vt-ime
: https://github.com/Cycatz/freebsd-src/tree/vt-ime - Branch
vt-ime-13.0
(Branching fromreleng/13.0
): https://github.com/Cycatz/freebsd-src/tree/vt-ime-13.0 - A single patch: https://github.com/Cycatz/freebsd-src/commit/32d4627e00157a84677afe00dfdfd1d051c7db38.patch
- Branch
- Set up the kernel patch (branch
vt-ime
): https://github.com/Cycatz/freebsd-src/tree/vt-ime - Set up the backend: https://github.com/Cycatz/tmux-rime/blob/vt-rime/README.org
- Fire up the
vt
console and set the console font tob16.hex
in fontstuff for displaying CJK characters correctly - Press right ctrl key to toggle IME mode
- Press keys to compose CJK chars/words and use
Space
to commit the preedit string (Currently only support the input scheme bopomofo)