21 个版本 (4 个破坏性更新)

0.9.0 2024 年 8 月 10 日
0.9.0-rc.32024 年 7 月 27 日
0.8.5 2024 年 7 月 8 日
0.7.0-beta.22024 年 3 月 31 日
0.5.1-alpha.12022 年 5 月 7 日

89文本处理

Download history 350/week @ 2024-04-29 127/week @ 2024-05-06 258/week @ 2024-05-13 325/week @ 2024-05-20 210/week @ 2024-05-27 30/week @ 2024-06-03 13/week @ 2024-06-10 218/week @ 2024-07-01 139/week @ 2024-07-08 129/week @ 2024-07-15 128/week @ 2024-07-22 162/week @ 2024-07-29 108/week @ 2024-08-05 31/week @ 2024-08-12

每月 458 次下载
用于 2 crates

LGPL-2.1-or-later

2MB
10K SLoC

	           _                   _
	       ___| |__   _____      _(_)_ __   __ _
	      / __| '_ \ / _ \ \ /\ / / | '_ \ / _` |
	     | (__| | | |  __/\ V  V /| | | | | (_| |
	      \___|_| |_|\___| \_/\_/ |_|_| |_|\__, |
	                                       |___/
	               https://chewing.im/

libchewing - 智能音标输入法库

Chewing(酷音)是一种智能音标输入法(注音/拼音),是传统中文用户最受欢迎的选择之一。Chewing 受到微软 Windows 上其他专有智能注音输入法的启发,如 Eten 的王新、微软新注音和自然注音(又称行)。Chewing 开发者将项目作为一个完全开源的努力来维护,将其定位为主要操作系统中的领先自由智能音标解决方案。

libchewing 发布可以使用以下 minisign 公钥验证

RWRzJFnXiLZleAyCIv1talBjyRewelcy9gzYQq9pd3SKSFBPoy57sf5s

状态

1. 系统桥接集成

Chewing 已集成到各种类 Unix 系统的输入框架中,甚至在微软 Windows 和 Android 上。在这些系统中,Chewing 软件包通常分为两部分:libchewing,负责管理实际的字符选择逻辑,以及用于显示和首选项设置的输入框架接口。

2. 支持音节键盘布局

  • 大陈(默认)
  • 许氏
  • IBM
  • 金宜杰
  • 亿泰
  • 亿泰26键
  • Dvorak
  • Dvorak 许氏
  • 汉宇拼音
  • 台湾华语罗马拼音
  • MPS2 拼音
  • Colemak-DH ANSI
  • Colemak-DH 直线型

3. 外部和未合并的项目

libchewing提供了一个简单的API和设计,使第三方项目能够部署创新功能。以下是一些示例

构建和安装

先决条件

以下工具用于构建libchewing。并非所有工具在构建过程中都是必需的。例如,如果您使用的编译器是clang,则不需要gcc & Visual Studio。这里列出的版本是构建libchewing所需的最小版本。如果您使用的工具版本低于此版本,则libchewing可能无法构建。

  • 构建工具
    • cmake >= 3.21.0
  • 工具链 / 集成开发环境
    • clang >= 3.2 OR gcc >= 4.6.3
    • Rust >= 1.77
    • Visual Studio 2022的MSVC构建工具
  • 文档工具
    • texinfo >= 4.8

通过CMake构建

使用默认预设置

cmake --preset default --install-prefix /usr
cmake --build build
cmake --build build -t test
cmake --build build -t install

构建rust实现

cmake --preset rust-release --install-prefix /usr
cmake --build build
cmake --build build -t test
cmake --build build -t install

检查其他支持的预设置

cmake --list-presets

交叉构建

定义一个cmake-toolchains文件以进行交叉编译。

示例交叉构建说明

cmake --preset default --toolchain arm-none-linux-gnueabi.cmake
cmake --build build

使用Visual Studio 2022构建工具在Windows上构建

要在Windows上构建libchewing并将其链接到由MSVC构建的其他程序,您需要使用MSVC工具链。要安装构建环境

打开管理员命令提示符 cmd.exe

winget install Microsoft.VisualStudio.2022.BuildTools
winget install Ninja-build.Ninja
winget install Kitware.CMake
winget install Rustlang.Rustup

可选的开发工具

winget install Git.Git
winget install VSCodium.VSCodium

重启,然后打开 Visual Studio Installer 并安装C/C++组件。

打开 x64 Native Tools Command Prompt for VS 2022

rustup default stable
cmake -G Ninja --preset rust

现在您已经有了libchewing的构建环境。您可以按照安装步骤使用cmake进行构建。

在macOS上构建

要在macOS上构建libchewing,您将需要列在要求中的工具。由于macOS没有附带这些工具,从源代码构建它们可能是一项棘手的任务。

安装这些工具的一个简单方法是使用Homebrew,它是macOS的软件包管理器。一旦安装了Homebrew,运行以下命令以安装所需的工具

brew install cmake
brew install rustup
rustup default stable

最低支持的Rust版本

为确保libchewing可以构建在各种Linux发行版上,我们使用主要发行版下一个发布分支中可用的最低rust版本。数据来源:https://repology.org/project/rust/versions

  • 当前MSRV:1.77.0(Debian不稳定版)

用法

Chewing 允许用户通过发音输入中文,可以使用注音/注音符号汉语拼音。它还支持中文标点符号,以及普通和全角数字以及英文字母。

以下部分基于假设您正在使用默认配置。这包括在 en_US 键盘上默认/大陈注音键盘布局以及默认按键绑定。

术语表

预编辑缓冲区:这是在将输入发送到您正在使用的应用程序(如 Firefox)之前存储输入的地方。

模式:这决定了 Chewing 如何响应键盘输入。

编辑模式

此模式便于输入普通中文字符和标点,通常是默认的工作模式。

在此模式中,字母数字字符和标点符号被解释为注音符号或标点符号。当这些符号形成中文字符时,系统将根据预编辑缓冲区中的上下文选择最合适的字符。

输入完整的中文句子是有优势的,因为它允许系统执行自动更正。要确认输出,请按 Enter 键将预编辑缓冲区中的字符提交。

如果发生错误,可以通过使用 {Left} 或 {Right} 移动光标来选择字符,然后按 {Down} 键进入候选选择模式以选择单词。

可以通过在句尾按 {Tab} 键来覆盖特定短语的自动更正。

可以通过在短语的末尾按 {Ctrl-2}、{Ctrl-3} 或 {Ctrl-4} 来记忆 2、3 或 4 个单词的短语。

在此模式中,Shift 键的行为会改变。使用 Shift 键与字母数字键结合,如果启用了“简易符号输入”,则输出相应的全角中文符号,如果没有启用“简易符号输入”,则输出相应的半角英文字母。

除了启用“简易符号输入”模式外,按 {Ctrl-1} 或 {}` 可以打开符号选择对话框。选择类别后,可以使用 {Down} 键选择符号,就像选择字符一样。

Key binding   API name                   Functionality
-----------   --------                   -------------
Caps Lock     chewing_handle_Capslock    Toggle Temporary English sub-mode
Down          chewing_handle_Down        Enter Candidate Selection mode
Shift-Space   chewing_handle_ShiftSpace  Toggle Half/Full Shape sub-mode
Enter         chewing_handle_Enter       Commit the content in preedit buffer
                                         to active application window
Tab           chewing_handle_Tab         Break the auto-correction.
Ctrl-1        chewing_handle_CtrlNum     Open symbol selection dialog
Ctrl-2        chewing_handle_CtrlNum     Remember 2-word phrase.
Ctrl-3        chewing_handle_CtrlNum     Remember 3-word phrase.
Ctrl-4        chewing_handle_CtrlNum     Remember 4-word phrase.

半角/全角子模式

此子模式用于输入半角和全角字符。半角字符实际上是正常的英文字符,而全角字符是类似于英文字符的较大、更突出的符号。

Key binding   API name                   Functionality
-----------   --------                   -------------
Shift-Space   chewing_handle_ShiftSpace  Toggle Half/Full Shape sub-mode

临时英文子模式

此子模式用于临时输入英文。

Key binding   API name                   Functionality
-----------   --------                   -------------
Caps Lock     chewing_handle_Capslock    Toggle Temporary English sub-mode

候选选择模式

此模式用于选择候选。它首先显示与发音匹配的最长短语,然后是越来越短的短语,直至单个字符。按 {Down} 键循环回到最长短语。

例如,输入 "w91o3g4" 并按 {Down} 键后,Chewing 显示 3 个单词候选 "台北市"。再次按 {Down} 键显示 2 个单词候选 "北市"。再次按 {Down} 键显示 1 个单词候选 "市" 和 "是"。再次按 {Down} 键将循环回到 3 个单词候选 "台北市"。

Key binding   API name                   Functionality
-----------   --------                   -------------
Down          chewing_handle_Down        Next bunch of candidates in
                                         different length
Left          chewing_handle_Left        Previous page of candidates
Right         chewing_handle_Right       Next page of candidates
1, 2, ...0    chewing_handle_Default     Select 1st, 2nd, ... 10th candidate

绕过模式

当预编辑缓冲区为空时,此模式处于活动状态。它允许使用移动键(如光标键和页面上下键)和常用键绑定(如 Ctrl-A、Ctrl-S)。

有关使用 libchewing API 的简要概述,请参阅文件 contrib/simple-select.c 中的简化示例。

历史

Libchewing 是从原始的 Chewing 输入法派生而来,这是 XCIN 中的一个模块,专注于智能音韵(注音/注音符号)处理,最初旨在与 X Window System 一起使用。此输入法模块由 Lu-chuan Kung(lckung)和 Kang-pen Chen(kpchen)开发,1999 年至 2001 年期间由 Academia Sinica 的 Tsan-sheng Hsu 赞助。

然而,原始作者最终停止了Chewing的开发,并且它与XCIN的紧密耦合限制了其在更广泛环境中的应用。此外,还有一个类似的输入法,bimsphone,它包含在XCIN服务器中。与Chewing类似,bimsphone也缺少方便的API以供进一步开发。2002年,Jim Huang与其他人一起组成了Chewing核心团队,并扩展了Kung和Chen的工作。Chewing核心团队将项目重命名为“新Chewing”,以区分他们的工作与原始版本。尽管如此,英语名称仍然是“Chewing”,它被各种输入法框架所认可。

许可证

除了以下源代码外,所有其他源代码都受GNU LGPL v2.1(较小的通用公共许可证v2.1)或(根据您的选择)任何后续版本的许可。有关详细信息,请参阅“COPYING”。

  • 目录“thirdparty/sqlite-amalgamation”包含SQLite3源代码,属于公共领域。有关更多信息,请参阅https://www.sqlite.org/copyright.html
  • 文件“cmake/FindCurses.cmake”是从CMake源代码修改而来,并受BSD 3-Clause许可证的许可。

作者及联系方式

有关详细信息,请参阅“AUTHORS”。

依赖项

~0.5–14MB
~121K SLoC