# rime/librime

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rime-librime).**

4,211 stars · 666 forks · C++ · bsd-3-clause

## Links

- GitHub: https://github.com/rime/librime
- Homepage: https://rime.im
- awesome-repositories: https://awesome-repositories.com/repository/rime-librime.md

## Description

Librime is an input method engine library that translates keystrokes into Chinese characters using phonetic and shape-based rules defined in YAML schemas. It processes keyboard input through a modular pipeline of configurable translation modules, supporting both phonetic mapping and structural shape-based decomposition methods like Cangjie or Wubi.

The engine distinguishes itself through its YAML-driven schema system, which allows users to define custom input method behaviors and key mappings in external configuration files without recompiling the engine. It supports runtime switching between multiple installed input schemas, enabling multilingual typing workflows that can include Pinyin, Zhuyin, or Cangjie. The engine also applies algebraic spelling transformations to handle dialects and alternative romanizations, and supports chorded key combinations for simultaneous multi-key input on standard keyboards.

Additional capabilities include converting between Traditional and Simplified Chinese scripts using the OpenCC library, and the ability to design custom input methods by composing phonetic and shape-based rules. The engine is extensible through its open-source C++ codebase, allowing developers to modify keystroke-processing logic or add new input challenges.

## Tags

### Business & Productivity Software

- [Chinese Text Input](https://awesome-repositories.com/f/business-productivity-software/chinese-text-input.md) — Core engine that converts keyboard input into Chinese characters using phonetic and shape-based rules. ([source](https://cdn.jsdelivr.net/gh/rime/librime@master/README.md))
- [Multilingual Input Methods](https://awesome-repositories.com/f/business-productivity-software/chinese-text-input/multilingual-input-methods.md) — Switches between input methods like Pinyin, Zhuyin, or Cangjie via hotkey menus for multilingual typing.

### Artificial Intelligence & ML

- [Input Routing Schemas](https://awesome-repositories.com/f/artificial-intelligence-ml/input-routing-strategies/input-routing-schemas.md) — Defines phonetic and shape-based input rules in YAML files to tailor keystroke translation behavior. ([source](https://rime.im/docs))

### Data & Databases

- [Custom Input Method Builders](https://awesome-repositories.com/f/data-databases/input-method-dictionaries/custom-input-method-builders.md) — Enables users to design custom input methods by composing phonetic and shape-based rules in YAML files. ([source](https://rime.im/docs))
- [Input Schema Switching](https://awesome-repositories.com/f/data-databases/runtime-backend-switching/input-schema-switching.md) — Allows users to switch between installed input schemas like Pinyin, Zhuyin, or Cangjie at runtime via hotkey.
- [Chinese Character Simplifiers](https://awesome-repositories.com/f/data-databases/text-processing-utilities/text-extraction/text-segmentation/chinese-language-segmenters/traditional-chinese-support/chinese-character-simplifiers.md) — Converts between Traditional and Simplified Chinese characters using the OpenCC library with configurable mapping tables.

### Development Tools & Productivity

- [Input Scheme Switching](https://awesome-repositories.com/f/development-tools-productivity/input-pointer-automation/input-customization/input-scheme-switching.md) — Switches between installed input schemas like Pinyin, Zhuyin, or Cangjie using a hotkey menu. ([source](https://rime.im/))
- [Custom Input Method Designers](https://awesome-repositories.com/f/development-tools-productivity/input-pointer-automation/input-utilities/input-method-editors/input-method-engine-configurations/custom-input-method-designers.md) — Allows creation of personalized typing systems by defining phonetic and shape-based rules in YAML files.
- [Input Scheme Configurations](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/cli-tooling/argument-configuration-management/command-argument-parsers/input-behavior-configurations/input-scheme-configurations.md) — Edits YAML configuration files to change how input behaves and appears without recompiling the engine. ([source](https://rime.im/docs))

### Operating Systems & Systems Programming

- [Input Method Text Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/c-based-text-engines/input-method-text-engines.md) — Core engine library that translates keystrokes into Chinese characters using phonetic and shape-based rules.
- [Phonetic Input Systems](https://awesome-repositories.com/f/operating-systems-systems-programming/phonetic-input-systems.md) — Translates keystrokes into characters using phonetic mapping or shape-based decomposition rules defined in schemas.
- [Phonetic Rule Typing](https://awesome-repositories.com/f/operating-systems-systems-programming/phonetic-input-systems/phonetic-rule-typing.md) — Translates keystrokes into Chinese characters using configurable phonetic and shape-based input rules. ([source](https://rime.im/docs))
- [Translation Pipelines](https://awesome-repositories.com/f/operating-systems-systems-programming/phonetic-input-systems/translation-pipelines.md) — Provides a modular processing chain that maps phonetic input strings to character candidates for Chinese text entry.
- [Input Processing Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/input-processing-engines.md) — Modifies the open-source engine's source code to add features or fix input challenges. ([source](https://rime.im/))
- [Engine Extensions](https://awesome-repositories.com/f/operating-systems-systems-programming/input-processing-engines/engine-extensions.md) — Modifies the open-source C++ engine to add new keystroke-processing capabilities or fix existing input challenges. ([source](https://rime.im/))

### Software Engineering & Architecture

- [YAML Configuration Schemas](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/configuration-formats-and-schemas/yaml-configuration-schemas.md) — Defines input method behavior and key mappings using external YAML configuration files without recompiling the engine.
- [Input Method Schema Definitions](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/configuration-formats-and-schemas/yaml-configuration-schemas/input-method-schema-definitions.md) — Allows custom input method behaviors and schemas to be defined through external YAML files without recompilation.
- [Phonetic Spelling Algebra](https://awesome-repositories.com/f/software-engineering-architecture/phonetic-spelling-algebra.md) — Applies algebraic rules to rewrite input spellings for handling dialects and phonetic variants.
- [Input Method Schema Systems](https://awesome-repositories.com/f/software-engineering-architecture/schema-based-type-systems/input-method-schema-systems.md) — Creates new input methods by writing YAML-based schema files that specify translation rules and behavior. ([source](https://cdn.jsdelivr.net/gh/rime/librime@master/README.md))
- [Input Processing Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/transformation-pipelines/input-processing-pipelines.md) — Processes keystrokes through a chain of configurable translation modules that transform input into character candidates.

### Part of an Awesome List

- [Shape Based Input](https://awesome-repositories.com/f/awesome-lists/devtools/shape-based-input.md) — Translates keystrokes into characters based on structural shape rules like Cangjie or Wubi.

### Programming Languages & Runtimes

- [Chorded Key Mappings](https://awesome-repositories.com/f/programming-languages-runtimes/input-key-mappings/configurable-key-to-command-mappings/chorded-key-mappings.md) — Supports simultaneous multi-key presses on standard keyboards to produce characters via chorded typing rules.
