Skip to content

Latest commit

 

History

History
133 lines (86 loc) · 6.05 KB

File metadata and controls

133 lines (86 loc) · 6.05 KB

showKeyBoard

English | 简体中文

功能简介

  1. 按键统计,可自定义键盘,查看统计数据
  2. 按键显示,实时显示按键状态,支持多种按键显示风格,圆角、渐变消失、自定义移动方向等,支持多屏,类似 Carnac 功能
  3. 支持中英文切换和主题切换
  4. 支持参数导入导出
  5. 可支持远程统计和设置
  6. 为了隐私安全,只记录统计信息,不记录具体内容,且内容保存在本地
  7. 支持应用程序的鼠标和键盘使用统计
  8. 支持每个应用的使用时间分析。基本原理:统计每分钟使用应用的清单,然后分摊后汇总到每个应用,注意:应用需要有鼠标或键盘操作才算使用
  9. 实时显示控制键/状态键状态,包括大小写状态,scroll状态,数字键,Ctrl,Shift,Atl等键。
  10. 显示最近N个按键(不保存)
  11. 支持游戏手柄摇杆和按键检测
  12. 支持通过第三方工具(推荐FreeFileSync)实现多台设备记录的同步
  13. 支持历史应用时长统计和每日使用时长和应用数量趋势分析
  14. 支持通过Web页面实时查看按键信息,方法:设置->按键界面->Web按键显示,从而可以支持OBS(Open Broadcaster Software)中独立显示按键,也可关闭桌面按键显示只在web中显示。
  15. 支持根据键位(可自定义)分析各个手指的使用率

系统要求

  1. Windows 64 位系统,推荐 Windows10 或 Windows11
  2. 有现代浏览器(Edge/Chrome/FireFox 等)

使用方法

第一次安装或没有 node10 以上环境,安装

ShowKeyBoard_Setup_版本_日期.exe

直接解压可用如下版本,但是此版本升级时需要手工备份还原数据

ShowKeyBoard_portable_版本_日期.exe

如果有 node10 及以上环境或已经安装过一次,安装

ShowKeyBoard_Setup_版本_日期(node).exeShowKeyBoard_Setup_版本_日期.node.exe

安装时根据提示进行选择,如是否保留配置,是否创建快捷方式等,一般使用默认配置即可

注意

  1. 由于使用了系统钩子,可能部分电脑上会误报病毒,需要信任。
  2. 部分系统上可能需要使用管理员方式运行,否则不能监听到按键
  3. 有些公司可能安装了加密软件,将对配置文件进行加密,将导致参数全部失效,此时可以修改安装目录下的 ./httpdist/dist/node.exe 重命名为 ./httpdist/dist/chrome.exe(策略允许) ,修改安装目录的 showKeyBoard.ini 文件,增加参数 serverExecName=./httpdist/dist/chrome.exe
  4. 如果系统时间不正确,比如某一天的时间变成了N年后,可能导致之后的应用时长数据丢失,请运行安装目录的 fixStat修复统计数据.bat

同步说明

此处以 FreeFileSync 同步FTP举例

  1. 首先设定共享文件的保存目录,默认为安装目录下的 share
  2. 在 FreeFileSync 中配置本地share 和 FTP服务器双向同步,将同步文件生成为 ffs_batch文件,比如 Keyboard.ffs_batch
  3. 设定"生成共享文件间隔小时数" ,表示每隔多久将本地的记录打包
  4. 设置打包完成后自动执行的命令,如果安装了 FreeFileSync ,则可以直接执行 ffs_batch文件,比如命令可配置为上面的 Keyboard.ffs_batch
  5. 共享名默认为计算机名,可自行更改,将会在 历史和统计模块显示
  6. 系统每分钟会检查 共享文件目录的文件,解压到dbs目录中,如果有更新则会重新解压
  7. 在 历史和统计模块 可选择和查看本地解压后的其他设备的记录

截图演示

实时显示按键状态和内容

历史按键趋势

实时按键热力图 手指按键使用率

image-20250324183940491

自定义键盘

setting

data

keymap

dialogsetting

appStat

appHistory

技术架构

按键监控客户端采用 AutoHotkey v2.1alpha.18 + Windows API

界面显示用 HTML,node 做 WebSocket 和 HTTP 通讯

客户端程序只管读取配置文件和发送数据,一般不写配置文件

客户端有一个底层钩子进程,用于将进程和数据处理界面显示分离

HTTP 端负责写配置文件,接收 HTML 前端数据

graph LR
Client -->|Post/Launch|NodeServer ---|WebSocket/Post/Get|Web
NodeServer -->|WebSocket|Client
NodeServer ---|R/W|ConfigFile
ConfigFile -->|Reload|Client
HookKey -->|SendMessage|Client
Client -->|Launch|HookKey
Loading

编译说明

  1. http 里面的是服务器端代码,使用 npm run build 打包,生成 httpdist 目录
  2. ui-helper 是客户端配置页面 npm run build 生成 dist 目录,发布时候要放到 httpdist/dist/ui 目录中
  3. 根目录是 AutoHotkey v2.1alpha.18 脚本,需要用 AutoHotkey 工具对 showKeyBoard.ahk 打包为 exe,对应的 exe 文件需要放到和 httpdist 同级目录

目录说明

  1. 根目录下的 KeyList.txt 键盘映射关系,showKeyBoard.ini 是客户端配置信息
  2. 目录 httpdist/dist/records.db 文件保存按键的统计信息和统计的相关配置信息
  3. 文件 httpdist/dist/node.exe 用于启动后端 http/websocket 服务

二次开发

每个目录下均有 readme.md或readme.txt提供相关说明,相关开发接口见 [接口说明](./ interface.md)

已知问题

在快速输入的时候,由于通过队列处理,所以界面显示可能会有一定延时

感谢

客户端功能参考 KMCounterCarnac 的部分设计

UI 界面使用 Naive UI 框架