快捷键训练比赛系统
这是一个独立的小程序。学生账号直接使用原分组系统的 selfgroup.db;训练相关数据表也创建在同一个数据库里,但都带 trainer_ 前缀,不会改动原来的分组表。
启动
在本仓库根目录执行:
python3 shortcut_trainer/app.py
程序默认用 IPv4/IPv6 双栈监听所有网卡。启动日志会尽量列出本机可访问地址;学生从局域网访问时,选择老师电脑的局域网 IPv4,例如 http://192.168.1.20:8010/。
训练页使用 6 种高区分度整屏背景色,并显示超大页码水印,老师从学生屏幕缩略图即可快速确认是否切到了指定页面。
共享数据库
程序默认直接使用项目根目录:
selfgroup.db
它读取其中的 students 表,登录会话写入原来的 sessions 表;训练数据保存在这些新表:
trainer_presence
trainer_rounds
trainer_scores
trainer_events
所以你在原分组系统教师后台修改学生密码后,学生立刻可以用新密码登录快捷键训练系统。
如果你把 selfgroup.db 拷贝到了 shortcut_trainer/ 目录,这个拷贝文件不会再被使用。可以移走它,避免以后混淆。如需指定其它共享数据库,可这样启动:
SHARED_DB=/path/to/selfgroup.db python3 shortcut_trainer/app.py
学生账号
教师端「学生账号」面板可以搜索学生、重置密码、添加新账号,改动直接写入共享的 selfgroup.db。
程序启动时会自动补齐这些测试账号(若学号已存在则跳过):
| 学号 | 姓名 | 班级 | 密码 |
|---|---|---|---|
| test01 | 测试甲 | 测试 | test1234 |
| test02 | 测试乙 | 测试 | test1234 |
| test03 | 测试丙 | 测试 | test1234 |
| test04 | 测试丁 | 测试 | test1234 |
| test05 | 测试戊 | 测试 | test1234 |
程序启动时会自动读取学生名单库,优先使用:
shortcut_trainer/selfgroup.db(如果你把数据库拷贝到了这里)- 项目根目录的
selfgroup.db
教师端使用同一个 settings 表里的 teacher_username 和 teacher_password。如果原分组系统已修改过教师密码,快捷键教师端也使用修改后的密码。
课堂流程
- 学生登录首页,允许 Chrome 弹出窗口。
- 学生打开 4–6 个训练页;也可按
Alt+P/Q/R/T/Y/U。 - 教师端用可视化表单发布指令:先选目标页面,再选“点击指定按钮”“多步快捷键”“右键菜单”“窗口操作”或“演示链接”,最后选具体目标;不需要手写 JSON。
- 学生完成操作后,教师端实时显示前 10 名。
训练页按钮做成 Word 式功能面板:Alt+K 展开检测面板(C 燃料检查、D 系统诊断),Alt+H 展开推进面板(R 火箭准备、T 通讯开启),Alt+B 展开保障面板(P 备用电源、L 外部链接)。L 之后再按 A 打开百度,或按 B 打开 Bilibili。也可以继续用 Alt+1 到 Alt+6 或鼠标点击,判定相同。
可自动判定的操作
- 打开指定训练页;
- 点击指定页面按钮(支持按钮序号或名称:火箭准备、燃料检查、通讯开启、系统诊断、备用电源、外部链接);
- 页面自定义右键菜单 +
E/R/C; - 外部链接菜单:
Alt+B后按L,再按A打开百度或B打开 Bilibili。
浏览器限制
Chrome/Windows 会优先处理 Ctrl+T、Ctrl+W、Ctrl+N、Alt+F4、Win+D 等系统级快捷键;普通网页通常无法可靠拦截这些按键,也无法检测学生手工输入网址或真实窗口菜单。这些内容适合演示和人工观察。训练系统用自定义组合键和模拟窗口完成可计分练习。