Skip to content

Cycatz/GSoC2021-VT-IME

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GSoC’21: Input method in FreeBSD virtual terminal

Screenshot

assets/vt_ime_screenshot.png

Proposal

Under the proposal directory.

Wiki Page

The project page in the freebsd wiki: https://wiki.freebsd.org/SummerOfCode2021Projects/InputMethodInFreeBSDVirtualTerminal

The wiki page also contains my weekly reports during GSoC.

Description

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.

Deliverables

  • 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.

Results

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.

Code

Usage

  1. Set up the kernel patch (branch vt-ime): https://github.com/Cycatz/freebsd-src/tree/vt-ime
  2. Set up the backend: https://github.com/Cycatz/tmux-rime/blob/vt-rime/README.org
  3. Fire up the vt console and set the console font to b16.hex in fontstuff for displaying CJK characters correctly
  4. Press right ctrl key to toggle IME mode
  5. Press keys to compose CJK chars/words and use Space to commit the preedit string (Currently only support the input scheme bopomofo)