Skip to content
YuMaoQiu-DongXvPublic

About

⌨️ KeyHeat — A local-only keyboard heatmap & usage tracker for Windows. Records per-key press counts and typing order across all 104 keys, visualized as a live 2.5D/3D keyboard with press animations. Data is encrypted (DPAPI) and never leaves your machine. Single portable exe, no dependencies.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KeyHeat — 键盘使用统计器

中文 | English

⌨️ 一个有趣的 Windows 小工具:记录键盘上 104 个键中每一个键的使用情况——按下次数、按下顺序,并以 2.5D 立体键盘热力图直观呈现你的打字习惯。

KeyHeat 3D 键盘热力图

  • 纯本地 + 加密存储:数据只保存在本机,并使用 Windows DPAPI 按你的账户加密,不上传任何服务器,文件被拷走也无法解密
  • 单文件绿色版:KeyHeat.exe 使用系统自带的 .NET Framework 编译,无需安装任何依赖,Windows 10/11 x64 直接双击运行
  • 全局记录:无论你在哪个程序里打字、打游戏、写代码,都会被统计(只记录"哪个键被按了几次",不看屏幕内容,也不碰剪贴板)

功能一览

功能 说明
3D 键盘 2.5D 立体键盘(浅色桌面 + 软阴影 + 圆角键帽),按频率着成键帽色(白→蓝→黄→橙→红),键帽上印键名和次数;按键时键帽实时下沉回弹;左上角大数字显示总按键
热力图 俯视平面热力图,按使用频率着色(蓝→绿→黄→红),实时闪白光;鼠标悬停查看某键精确次数和占比
按键顺序 按时间先后记录每一次按键(精确到秒),最新在最上面,本地保留最近 2000 条
统计排行 Top 20 最常用按键条形图,显示次数与占比
实时统计 总按键数、今日按键数、最近 1 分钟按键速度
长按只计一次 按住某键触发系统自动重复时只记录 1 次(看视频长按快进不会刷爆统计),快速连续敲击仍按真实次数记录
开机自启动 勾选后写入注册表 HKCU\...\Run,开机静默启动到系统托盘,不弹窗打扰
导出 CSV 一键把所有按键统计导出为 CSV(键名、次数、占比)
清空数据 一键清零重新开始记录

使用方法

  1. 双击 KeyHeat.exe(如果提示 SmartScreen,点"仍要运行"即可——程序是本机编译的,没有签名)。
  2. 主界面默认显示 3D 键盘;点右上角 隐藏到托盘 或最小化,它会缩到系统托盘继续记录。
  3. 双击托盘图标随时打开主界面;托盘右键菜单可以切换"开机自启动"或退出。
  4. 打字几分钟、几小时、几天后回来看热力图——你会发现自己最离不开的键(剧透:大概率是 Space 和 Backspace 😄)。

数据与文件位置

内容 位置
统计数据(加密) C:\Users\<你>\AppData\Roaming\KeyHeat\keydata.bin
错误日志 C:\Users\<你>\AppData\Roaming\KeyHeat\error.log(仅程序异常时产生)
开机自启动 注册表 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 下的 KeyHeat 项

数据加密说明:数据文件使用 Windows DPAPI(ProtectedData,CurrentUser 范围 + 附加熵)整体加密后落盘,密钥由你的 Windows 登录账户派生、由操作系统保管。文件被拷贝到其他电脑或其他账户下无法解密,可防止备份、网盘同步、他人拷贝导致的按键记录泄露;日常使用无需输入任何密码。请注意残余风险:加密保护的是磁盘文件,运行期内存中的数据无法加密保护。

从源码构建

无需安装 Visual Studio 或任何 SDK——仓库里的 build.bat 使用 Windows 自带的 .NET Framework 编译器(csc.exe):

git clone https://github.com/YuMaoQiu-DongXv/KeyHeat.git
cd KeyHeat
build.bat

生成的 KeyHeat.exe 即为单文件绿色版。

已知说明

  • 长按只计一次:按住某个键触发系统自动重复时只记录 1 次,松开后再次按下才重新计数(看视频长按快进/快退不会再刷爆统计);快速连续敲击仍按真实次数记录。
  • 主键盘 Enter 与小键盘 Enter、左/右 Shift、Ctrl、Alt、Win 都会分别统计。
  • 如果你移动了 KeyHeat.exe 的位置,请重新勾选一次"开机自启动",让注册表指向新路径。
  • 个别带驱动的高级键盘的多媒体键(音量、背光等)不属于标准 104 键,暂不统计。

技术实现(给好奇的人)

  • Win32 低级键盘钩子 SetWindowsHookEx(WH_KEYBOARD_LL) 全局捕获按键(按下 + 松开),回调委托必须保存在字段里防止被 GC 回收——这是最容易踩的崩溃坑,程序里已处理并带异常日志。
  • 3D 视图为 GDI+ 自绘 2.5D:正交轴测投影(仿射矩阵变换),每个键帽 = 顶面 + 可见侧面多边形,圆角用屏幕空间贝塞尔曲线切出;键帽文字用 GraphicsPath.AddString 以浮点字号贴在倾斜面上;按下动画为 30fps 的深度衰减。
  • 界面其余部分为 WinForms 自绘:多段渐变色热力映射(√count/max 归一化,避免 Space 一家独大导致其他键全是冷色)。
  • JSON 持久化用系统自带的 JavaScriptSerializer,每 30 秒和退出时原子写入(先写临时文件再替换);落盘前整体经 DPAPI 加密。

License

见 LICENSE。

About

⌨️ KeyHeat — A local-only keyboard heatmap & usage tracker for Windows. Records per-key press counts and typing order across all 104 keys, visualized as a live 2.5D/3D keyboard with press animations. Data is encrypted (DPAPI) and never leaves your machine. Single portable exe, no dependencies.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages