Code Monkey home page Code Monkey logo

gsoc2021-vt-ime's Introduction

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)

gsoc2021-vt-ime's People

Contributors

cycatz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

00mjk

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.