The repository implements Trime, a fully functional Android input method (IME) based on the Rime input engine. It provides a highly customizable keyboard with YAML-based themes, color schemes, key layouts, and gesture support. The core architecture is a Kotlin/JNI bridge to the native librime library, with a service-based IME lifecycle (`TrimeInputMethodService`), a daemon for Rime session management, and a rich UI layer for candidate display, clipboard, popups, and liquid keyboards. The application also includes a settings interface for schema management, user dictionaries, sync via Storage Access Framework, and clipboard history. The codebase is modular, with clear separation between Rime interaction, theme management, UI delegates, and data persistence, using modern Android patterns (Room, Paging, WorkManager, Coroutines, Kodein DI). It is actively maintained with frequent commits and extensive test coverage for core components. The YAML theme system is particularly sophisticated, featuring typed color resolution with fallback chains and a custom parser that handles anchors and aliases.
ibus-typing-booster is a Linux IBus input method engine that provides intelligent text completion, emoji/Unicode symbol input, and multi-language transliteration to speed up typing. It functions as a daemon (ibus-engine-typing-booster) that intercepts keyboard input and provides candidate suggestions based on hunspell dictionaries, user learning history (SQLite), m17n input methods, and optional AI chat models (Ollama). It includes a GTK-based setup tool for configuration and a standalone emoji picker application. The architecture is a monolithic Python application tightly integrated with the IBus framework via D-Bus and PyGObject. It is event-driven (GLib main loop) and supports both GTK3 and GTK4 through a comprehensive compatibility layer. Key data flows involve querying multiple backends (hunspell, m17n, emoji matcher, user database) on each key event and presenting a unified candidate list to the user. The system learns from user selections and stores contextual bigram/trigram data in a local SQLite database. The codebase exhibits high craftsmanship in several self-contained modules. The GTK3/GTK4 compatibility helpers (g_compat_helpers.py) provide a robust abstraction layer for cross-version GUI development. The m17n transliteration module (m17n_translit.py) is a sophisticated ctypes wrapper around a C library. The emoji matching engine (itb_emoji.py) parses multiple Unicode and CLDR data sources to provide comprehensive emoji search. The user learning database (tabsqlitedb.py) implements a well-designed contextual prediction storage system. Maintenance is active with recent commits and responsive issue tracking. Technical drift is medium; while the project actively manages GTK3/4 compatibility, it retains a legacy Autotools build system alongside pyproject.toml, and some CI infrastructure (Ubuntu 18.04) is outdated. The large number of external dependencies (hunspell, m17n-lib, libvoikko, rapidfuzz) and the fragile ctypes bindings to libm17n represent ongoing maintenance risks.
This repository is a comprehensive configuration package for the Rime input method engine, providing a curated set of input schemas, dictionaries, Lua scripts, and OpenCC conversion data. It is not a standalone application but a template package that users copy or integrate into their Rime setup (on Windows, macOS, Linux, Android, iOS). The project offers multiple Chinese input methods including full pinyin, various double pinyin layouts, Wubi 86/98, stroke, and T9, along with extensive English and emoji support. Its key value lies in the integration of high-quality dictionaries (rime-ice, Wanxiang, rime-frost) and advanced Lua extensions that add features like date/time, lunar calendar, calculator, unicode translation, automatic capitalization, and corrector filters. The configuration follows the Rime convention of custom.yaml overrides, allowing users to upgrade without losing personalizations. While the core is a set of configuration files, the Lua scripts and OpenCC data are reusable assets demonstrating strong craftsmanship.
This repository provides Chinese input method addons for the Fcitx5 input method framework. It implements Pinyin (including Shuangpin, fuzzy pinyin, stroke filtering, cloud pinyin, prediction) and table-based input methods (Wubi, Cangjie, Erbi, etc.) as Fcitx5 modules. The architecture follows a plugin/addon pattern, with engines handling key events, candidate generation, and text commit. Supporting modules handle punctuation, fullwidth characters, simplified/traditional Chinese conversion (via OpenCC), cloud pinyin (with pluggable backends like Google and Baidu), and pinyin helper (stroke lookup). GUI tools for custom phrase editing and dictionary management are included. The codebase is well-structured, uses modern C++17, and integrates tightly with Fcitx5's event and configuration systems. External dependencies include libime, Qt6 (for GUI), OpenCC, curl, nlohmann_json, and optionally Lua. The project is actively maintained with a comprehensive test suite.
FlorisBoard is a free and open-source Android keyboard (IME) application written in Kotlin with Jetpack Compose. In production it functions as a fully-featured soft keyboard service (FlorisImeService extends InputMethodService) with clipboard history management (Room-backed), emoji input with search and history, multi-language keyboard layouts (50+ locale JSON layouts), a custom extensions system for themes/keyboards/language packs, and a custom stylesheet-based theming engine called Snygg that powers all IME UI styling. The app also includes a settings activity (FlorisAppActivity) with ~30 configuration screens, a spell-checker service, backup/restore infrastructure, incognito mode, and a native Rust/JNI library scaffold for performance-critical work. The architecture is a multi-module Gradle build (:app, :lib:android, :lib:compose, :lib:kotlin, :lib:native, :lib:snygg) with a clear separation between the Android-specific app layer and reusable common KMP libraries.
Rime 输入法官方项目网站 (rime.im),基于 Zola 静态站点生成器构建。系统使用 Markdown 内容、TOML 数据文件、Bootstrap 3 前端框架和 jQuery 实现页面渲染,通过 GitHub Actions CI/CD 自动构建并部署到 GitHub Pages。核心功能包括:提供 Windows (小狼毫)、macOS (鼠鬚管)、Linux 等平台的 Rime 输入法下载链接与版本信息;维护博客、帮助文档、输入方案配方目录;通过 fcitx5-rime.js 实现浏览器内在线输入法演示;以及自动更新 appcast.xml 用于 Sparkle 框架的软件更新推送。项目还包含一个 Python 脚本 (update_weasel_appcast.py) 自动从 GitHub API 拉取最新 release 并更新网站元数据。整体上是一个功能完备的开源软件项目门户,但核心逻辑分散在外部子仓库(如 librime、plum)中。
ADBKeyBoard is an Android virtual keyboard (InputMethodService) designed to receive text input and key events via system broadcast intents sent from ADB. It overcomes the limitation of `adb shell input text` which cannot handle Unicode characters. The app listens for intents like ADB_INPUT_TEXT, ADB_INPUT_B64 (base64-encoded text), ADB_INPUT_CODE (keyevent), ADB_EDITOR_CODE (editor actions), ADB_INPUT_CHARS (Unicode codepoints), ADB_CLEAR_TEXT, and direct IME actions (SEARCH, GO, DONE, NEXT, SEND). The single Java source file (AdbIME.java) implements the entire logic: registering a BroadcastReceiver, parsing intent extras, and using InputConnection to inject text or keys into the current input field. The code is straightforward and minimal, with no external libraries beyond the Android SDK. It has been widely used for device automation and testing (nearly 2000 stars). However, the codebase is monolithic, lacks tests, and shows signs of gradual maintenance (e.g., Android 13 compatibility fixes, but still targets older API levels). It is not designed for reuse outside of Android, but the broadcast-receiver-command pattern is clean and could serve as a reference for similar automation keyboards.