(同步) 自制: 7 天手搓一个拼音输入法

同步: 最近刚来掘金平台, 计划将自己之前在别的地方发的文章搬运 (同步) 过来.

首发日期 2024-03-06, 以下为原文内容.


同志们好, 欢迎点进这篇文章 !

是的, 你没有看错, 这篇文章确实是标题党. 窝实际上用了 11 天 (因为中间陪老公去过了情人节). 但是, 在窝的基础之上, 窝觉的, 聪明的读者, 7 天做出来应该问题不大吧.

7 天, 只要 7 天 ! 7 天你买不了吃亏, 7 天你买不了上当 .. . 试一试吧, 就当是做个小玩具, 那也是极好的.

下面这就把一切安排的明明白白:

第 1 天: 获取拼音数据

相关文章: 《从 Unicode 标准提取拼音数据》 juejin.cn/post/734390...

要做一个拼音输入法, 你首先需要一个拼音输入法 .. . (不对, 删掉重说)

要做一个拼音输入法, 你首先需要 拼音和汉字的对应关系. 一种很方便的做法, 就是从 Unicode 数据库 (Unihan) 中获取拼音数据.

第 2 天: 实现双拼 (自然码)

相关文章: 《双拼 (自然码) 的简单实现》 juejin.cn/post/734388...

拼音输入法可以分为 全拼双拼 . 全拼就是输入完整的拼音, 比如 qiong. 双拼就是每个拼音对应两个按键, 比如 qs. 双拼有多种不同的具体方案, 比如 自然码. 不同的双拼方案之间没有显著的好坏之分, 选择一种自己喜欢的即可.

双拼能够显著减少击键次数, 保持均匀的打字节奏, 让手更轻松 .. . 等会儿, 为啥要做双拼呢 ?

嗯, 那当然是因为双拼输入法在技术实现上更简单啦 ~~ 我们要先从简单的做起, 对吧.

第 3 天: 制作词库

词库当然也可以手搓 .. . 也可以在网上随便找个, 比如:

zhuanlan.zhihu.com/p/146270990

这部分就留给读者自由发挥了.

一种比较简单的词库格式, 包括 权重 (频率), 比如:

sql 复制代码
sqlite> select * from dict_2017 order by c desc limit 10;
自己|10000768
什么|8271971
没有|7657341
一个|7578341
知道|6134567
怎么|4655979
这个|4578240
他们|4321784
我们|4012100
已经|3846160

第 4 天: 实现 ibus 输入法接口

相关文章: 《ibus 源代码阅读 (1)》 juejin.cn/post/734390...

GNU/Linux 平台的输入法框架有 ibus 和 fcitx.

通过输入法框架, 可以获取键盘按键事件, 并向应用输入文本 (CommitText).

如果不想做 GNU/Linux 的输入法, 可以跳过这一部分.

第 5 天: 实现输入法的用户界面

相关文章: 《使用 electronjs 实现 ibus 输入法的用户界面》 juejin.cn/post/734390...

用户界面建议使用 vue 框架开发 (web 技术: js + HTML + CSS). 这样比较简单, 开发速度快效率高.

第 6 天: 实现 Android 输入法

相关文章: 《Android 输入法框架简介》 juejin.cn/post/734390...

这部分是制作一个 Android 应用 (apk), 使用 Android 输入法框架, 并使用 WebView 显示用户界面.

如果不想做 Android 输入法, 可以跳过这一部分.

第 7 天: 测试, 拍照, 发朋友圈 .. .

相关文章: 《多平台拼音输入法软件的开发》 juejin.cn/post/734390...

把上述这些组装起来, 就能获得一个基本可用的拼音 (双拼) 输入法啦 ~

总结与展望

这个输入法十分简陋, 但是它便宜啊 ! 只要 7 天, 还要什么自行车. 便宜, 能用, 就是好.

(开发本输入法的实际成本: 两袋土豆)

窝真心的希望每个人都有能力手搓一个自己的输入法, 就像在家自己做饭一样.

这个输入法基于跨平台的 web 技术, 支持 GNU/Linux 和 Android 平台.

什么 ? 你说还有 Windows ? (1) 窝很少使用 Windows. (2) 窝使用 Windows 的时候也很少打字. (3) 微软是良心公司, 在 Windows 建议使用微软拼音. (4) 实在不行 .. . 支持 Windows 平台就作为留给读者的家庭作业了. 完美.

什么 ? 你说还有苹果 ? 啊, 抱歉, 请看窝的网名.

备注: 本拼音输入法 2 月 9 日开始准备, 2 月 11 日正式开始开发, 11 天后获得了最初可用版本 (GNU/Linux, ibus). 然后支持 Android 又用了几天时间.


本文使用 CC-BY-SA 4.0 许可发布.

相关推荐
qiyi.sky几秒前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
杨荧32 分钟前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
Front思1 小时前
vue使用高德地图
javascript·vue.js·ecmascript
花花鱼4 小时前
@antv/x6 导出图片下载,或者导出图片为base64由后端去处理。
vue.js
流烟默4 小时前
Vue中watch监听属性的一些应用总结
前端·javascript·vue.js·watch
蒲公英10016 小时前
vue3学习:axios输入城市名称查询该城市天气
前端·vue.js·学习
杨荧8 小时前
【JAVA开源】基于Vue和SpringBoot的旅游管理系统
java·vue.js·spring boot·spring cloud·开源·旅游
一 乐13 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
小御姐@stella14 小时前
Vue 之组件插槽Slot用法(组件间通信一种方式)
前端·javascript·vue.js
万叶学编程17 小时前
Day02-JavaScript-Vue
前端·javascript·vue.js