🔧 背景介绍

众所周知,小企鹅输入法(Fcitx5 for Android,简称 f5a)在体验方面表现优秀,尤其是对 Rime 的支持非常稳定。但有一个长期未解决的问题:官方版本并不支持用户自定义按键布局,以及无法进行字体自定义。
想要自定义键盘(比如调整键位、长按符号、符号面板等),就必须:
  1. 修改源码;
  1. 编译生成 APK;
  1. 安装测试,每次调整都要重复这些步骤。
这不仅耗时耗力,而且门槛较高。

🎉 新发现:支持 JSON 自定义的修改版 f5a

幸运的是,近期由 fxliang 大佬 制作的 f5a 修改版本 实现了键盘布局的 JSON 自定义功能,极大降低了定制成本。
该版本支持读取特定的 JSON 文件,直接控制主键盘布局和长按弹出的符号菜单——无需编译源码!

🚀 快速上手:一步步教你定制键盘

1. 下载修改版 Fcitx5 Android

前往项目发布页下载:
你需要下载两个 APK:
  • 主程序(fcitx5-android)
  • Rime 插件(fcitx5-rime)
notion image
💡
⚠️ 注意:
  • 安装之前,请卸载原来的官方版本 f5a!
  • 记得提前备份用户数据!
  • 导出的数据也可以导入到 fxliang 的版本中使用。

2. 安装完成后,创建配置文件

安装完毕插件之后,打开用户数据目录,新建两个文件 config/PopupPreset.json 与 config/TextKeyboardLayout.json 。
代表在 config 目录下新建 PopupPreset.json (管理长按弹出的符号)与 TextKeyboardLayout.json (管理主键盘布局)这两个文件。

3. 修改生效方式

💡
在正式修改之前,需要明确提示一下,你的配置文件的生效方式:
每次修改完 JSON 文件后,需要:
  1. 切换到另一个输入法;
  1. 再切换回 f5a(梁佬版);
这样 f5a 才会重新加载配置文件,更新键盘布局。

4. 修改定制主键盘

💡
限制:只有IME之间的显示文本可以不同
键 displayText 可以是 ime.submode.label 和 targetDisplayText 的字符串或映射
textkeyboardlayout.json 示例用于自定义 cangjie5 displayTexts
点击查看 TextKeyboardLayout.json 默认示例
你可以按以下示例格式进行修改和尝试。JSON 中的 key 值以及对应的具体效果,你可以通过下面的几张截图与演示进行了解。
  • main:实际输入内容;
  • displayText:按键上显示的文字(可与输入内容不同);
  • alt:下滑输入的符号(如数字、符号、在键盘上下角按键显示的小符号);
  • 其他类型的按键如 CapsKey、BackspaceKey 等代表特殊功能键。
  • 支持根据显示的方案名称来定制键盘显示字符。
在这里我进行了两种的修改测试,一种是修改 main 一种是修改 displayText。
  1. 修改 main,这个时候上屏的就是 木
修改 main key
notion image
切换输入法触发配置加载
notion image
上屏测试
  1. 修改 displayText 只影响显示,不影响实际按键发送的值。
修改 displayText
notion image
切换输入法重载配置
notion image
上屏测试
  1. 不同方案的键盘显示测试演示(来自梁佬)

5. 修改定制长按弹出

💡
注意:弹出是区分大小写的,如果你修改后发现没有生效,请确认是否修改了正确的部分!
点击查看 PopupPreset.json 默认示例

🎊自定义字体支持

你需要在 f5a 的用户资料文件夹中新建一个 fonts 文件夹,然后将你想要配置的字体放置在这个文件夹中。
在字体文件放置完毕之后,需要创建 fontset.json 配置文件,此时这个文件夹的完整路径为 fonts/fontset.json ,具体的示例配置如下:

📌 小结

fxliang 的这个改动非常实用,让 Android 上的 Fcitx5 输入法第一次具备了“无需编译即可自定义键盘布局”的能力。对于重度输入法用户、自定义需求较高的 Rime 用户来说,是一个质的提升。
建议结合 Rime 的同步机制(例如导入包工具)和这个修改版的键盘定制,一起使用,打造一个完全可控、高度定制的移动输入体验。

感谢

非常感谢 fxliang 佬的改版项目
Linux PCI 驱动框架分析(一)Fcitx5 for Android 方案导入包生成工具
Loading...