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