Skip to content

dpy22/typewriting

Repository files navigation

小鹤打字通

专为小鹤双拼设计的中文打字练习软件,帮助用户系统地学习和熟练小鹤双拼输入方案。


目录


项目简介

小鹤打字通 是一款基于 Qt 框架开发的桌面打字练习应用,版本 1.0.0,于 2022 年 12 月发布。

软件采用用户账户体系,可以保存每位用户的个人偏好设置;支持从剪贴板或本地文本文件导入练习内容;在打字过程中实时显示用时、速度、错字数和回改次数;并通过屏幕上的键盘示意图高亮提示下一个字所需按下的按键,帮助用户逐步建立小鹤双拼的肌肉记忆。


什么是小鹤双拼

双拼是一种汉语拼音输入方案,将每个汉字的声母和韵母各用一个按键表示,因此每个汉字只需按 2 个键即可完成输入,相比全拼大幅减少击键次数。

小鹤双拼(flypy)是目前流行的双拼方案之一,其键位布局经过精心设计,兼顾了手指舒适度与记忆便捷性。官方网站:https://www.flypy.com

小鹤双拼的典型键位对照(部分示例):

按键 声母 韵母
Q q iu(qiu→qi)
W w ua/ia
E e/ê
R r uan/er
T t ue/üe
Y y uai/v
U sh u
I ch in/uang
O ou
P p un

功能特性

用户账户系统

  • 注册:填写用户名与密码(两次确认)即可创建账户,密码经过 Base64 编码后存入本地 SQLite 数据库。
  • 登录:验证用户名与密码,登录成功后进入练习主界面。
  • 偏好持久化:每位用户的"显示速度信息"和"显示键盘提示"开关状态会自动保存,下次登录时恢复。

文本导入

  • 从剪贴板导入:将任意文本复制到剪贴板后,通过菜单一键导入作为练习内容。
  • 从文件导入:支持打开本地文件(.txt.php.dpl.m3u.m3u8.xspf 等),文件内容以 UTF-8 编码读取。

实时打字统计

指标 说明
用时 从开始输入第一个字符时自动计时,以 分:秒 格式显示(每 50ms 刷新)
速度 字/分钟(CPM),每 2 秒更新一次
错字数 与原文不一致的字符数量,实时统计
回改次数 按下 Backspace 键的总次数,用于衡量练习流畅度

实时纠错高亮

  • 下方输入区与上方原文区同步滚动。
  • 输入内容与原文实时对比:正确的字显示为黑色,错误的字标红显示,帮助用户立刻发现并纠正错误。

键盘双拼提示

  • 屏幕上显示 A–Z 共 26 个按键的示意图。
  • 软件根据当前光标位置的汉字自动解析其小鹤双拼编码:
    • 绿色高亮:需要先按下的按键(声母键)
    • 蓝色高亮:需要后按下的按键(韵母键)
  • 此功能可在"功能"菜单中随时开关。

菜单与帮助

  • 文件菜单:从剪贴板导入 / 从文件导入。
  • 功能菜单:显示/隐藏速度信息、显示/隐藏键盘提示(支持保持菜单展开状态)。
  • 帮助菜单:一键打开小鹤双拼官网 flypy.com

界面预览

软件包含三个主要界面:

  1. 登录界面signin.ui):输入用户名、密码,或跳转注册。
  2. 注册界面signup.ui):填写用户名、密码(两次输入),注册成功后返回登录。
  3. 打字练习主界面mainwindow.ui):
    • 上半区:原文显示文本框(只读)
    • 下半区:用户输入文本框(含实时纠错高亮)
    • 右侧/底部:计时器、速度、错字数、回改次数的 LCD 数字显示
    • 底部:26 键键盘示意图(提示当前需按下的键)

环境要求

依赖项 版本要求
Qt 5.x(推荐 Qt 5.15.2)
编译器 MinGW 64-bit 或 MSVC(支持 C++17)
Qt 模块 core gui widgets sql
操作系统 Windows(当前版本针对 Windows 开发)

注意:软件使用了 setlocale(LC_ALL, "chs")wcstombs 进行汉字转拼音,当前版本主要在 Windows 平台上测试运行。


编译与运行

使用 Qt Creator(推荐)

  1. 安装 Qt 5.15.2(包含 MinGW 64-bit 工具链)。
  2. 克隆本仓库:
    git clone https://github.com/dpy22/typewriting.git
    cd typewriting
  3. 用 Qt Creator 打开 typewriting.pro
  4. 选择 Desktop Qt 5.15.2 MinGW 64-bit 套件(Kit)。
  5. 点击"运行"(Ctrl+R)即可编译并启动。

使用命令行

cd typewriting
qmake typewriting.pro
make        # Windows 下使用 mingw32-make
./typewriting

首次运行时,软件会在当前目录自动创建 SQLite 数据库文件 user.db,用于存储用户信息。


使用说明

第一步:注册账户

  1. 启动软件,显示登录界面。
  2. 点击"注册"按钮,填写用户名和密码(需输入两次确认),点击注册。
  3. 注册成功后自动返回登录界面。

第二步:登录

  1. 输入注册时的用户名和密码,点击"登录"。
  2. 登录成功后进入打字练习主界面。

第三步:导入练习文本

  • 方式一(剪贴板):先复制好想练习的文章,然后点击菜单"文件 → 从剪贴板导入"。
  • 方式二(文件):点击菜单"文件 → 从文件导入",选择本地 .txt 文件。

第四步:开始练习

  1. 在下方输入框中使用小鹤双拼输入文字。
  2. 开始输入时计时器自动启动。
  3. 参考屏幕键盘提示:绿色键为声母,蓝色键为韵母。
  4. 错误字符会以红色标注,及时按 Backspace 回改。
  5. 右侧 LCD 面板实时显示用时、速度、错字数和回改次数。

功能菜单

选项 说明
显示速度信息 开/关速度和回改统计区域
显示键盘提示 开/关屏幕键盘提示区域

这两项设置会自动保存到数据库,下次登录时自动恢复。


项目结构

typewriting/
├── main.cpp            # 程序入口,启动登录界面
├── signin.cpp/.h/.ui   # 登录界面(含数据库初始化)
├── signup.cpp/.h/.ui   # 注册界面
├── mainwindow.cpp/.h/.ui # 打字练习主界面
├── text.cpp/.h         # 汉字转小鹤双拼核心逻辑
├── mytextedit.cpp/.h   # 自定义文本编辑框(监听 Backspace)
├── mymenu.cpp/.h       # 自定义菜单(点击不自动关闭)
├── images/
│   └── logo.jpg        # 软件图标
├── images.qrc          # Qt 资源文件
└── typewriting.pro     # Qt 项目文件

技术架构

核心模块说明

模块 文件 职责
登录/注册 signin, signup 用户身份验证、SQLite 数据库读写
主界面 mainwindow 文本对比、计时、速度统计、键盘提示调度
拼音转换 text 根据汉字 GBK 编码查表得到小鹤双拼编码
输入框 mytextedit 继承 QTextEdit,捕获 Backspace 事件并发出信号
菜单 mymenu 继承 QMenu,重写鼠标释放事件防止菜单自动关闭

数据库结构

CREATE TABLE user (
    id       INTEGER PRIMARY KEY AUTOINCREMENT,
    username NTEXT UNIQUE NOT NULL,  -- Base64 编码的用户名
    password NTEXT NOT NULL,         -- Base64 编码的密码
    speed    NTEXT,                  -- 'Y' 显示速度 / 'N' 隐藏速度
    prompt   NTEXT                   -- 'Y' 显示键盘提示 / 'N' 隐藏
);

双拼提示实现原理

  1. Text::findPy(int i) 取原文第 i 个汉字,通过 ChineseConvertPinYinAllSpell 将其 GBK 编码映射到小鹤双拼码表(如"啊→aa"、"爱→ai"、"把→ba")。
  2. MainWindow::setButtonColors(QString py) 根据返回的两字符双拼码,对键盘示意图中对应的按钮设置绿色(声母)和蓝色(韵母)背景。
  3. 用户每次输入字符后触发 findPrompt(),更新键盘高亮。

作者

  • 段培耀(Duan Peiyao)
  • 包戴宁(Bao Daining)

2022 年 12 月开发,编译环境:Desktop Qt 5.15.2 MinGW 64-bit。


License

详见 LICENSE 文件。

About

专为小鹤双拼设计的中文打字练习软件,帮助用户系统地学习和熟练小鹤双拼输入方案。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors