English | 简体中文
KeyStats 是一款轻量级的 macOS/Windows 原生菜单栏应用,用于统计用户每日的键盘敲击次数、鼠标点击次数、鼠标移动距离和滚动距离。
# 订阅 tap
brew tap debugtheworldbot/keystats
# 安装应用
brew install keystats更新应用:
brew upgrade keystats从 GitHub Release 下载 Windows 版本安装包
无需安装任何依赖:Windows 版本使用 .NET Framework 4.8,Windows 10 (1903+) 和 Windows 11 已预装,开箱即用。如果你的 Windows 10 版本较旧(早于 1903),可以升级系统或手动安装 .NET Framework 4.8。
- 键盘敲击统计:实时统计每日键盘按键次数
- 鼠标点击统计:分别统计左键和右键点击次数
- 鼠标移动距离:追踪鼠标移动的总距离
- 滚动距离统计:记录页面滚动的累计距离
- 菜单栏显示:核心数据直接显示在 macOS 菜单栏
- 详细面板:点击菜单栏图标查看完整统计信息
- 每日自动重置:午夜自动重置统计数据
- 数据持久化:应用重启后数据不丢失
- macOS 13.0 (Ventura) 或更高版本
- Windows 10 (1903+) 或 Windows 11
- 无需安装任何依赖:使用 .NET Framework 4.8(Windows 10/11 已预装,开箱即用)
- 应用大小:约 5-10 MB(轻量级,无需额外运行时)
注意:如果你的 Windows 10 版本较旧(早于 1903),可以:
- 升级到 Windows 10 1903 或更高版本(推荐)
- 或手动安装 .NET Framework 4.8:下载链接
KeyStats 需要辅助功能权限才能监听键盘和鼠标事件。首次运行时:
- 应用会弹出权限请求对话框
- 点击"打开系统设置"
- 在"隐私与安全性" > "辅助功能"中找到 KeyStats
- 开启 KeyStats 的权限开关
- 授权后应用将自动开始统计
注意:如果没有授予权限,应用将无法统计任何数据。
重新安装/升级app提示:由于应用未进行签名,每次重新安装后 macOS 不会自动更新辅助功能授权。请先在"隐私与安全性">"辅助功能"中移除 KeyStats 的旧授权,再回到应用点击"获取权限"按钮重新授权即可。
Windows 版本无需额外权限设置,应用启动后会自动开始统计。
注意:首次启动时,Windows 可能会弹出安全警告,点击"仍要运行"即可。
应用运行后,菜单栏会显示:
123
45
- 上面的数字表示今日键盘按下的总次数
- 下面的数字表示今日鼠标点击的总次数(包含左右键)
当数字较大时会自动格式化:
- 1,000+ 显示为
1.0K - 1,000,000+ 显示为
1.0M
点击菜单栏图标会弹出详细统计面板,显示:
| 统计项 | 说明 |
|---|---|
| 键盘敲击 | 今日按键总次数 |
| 左键点击 | 鼠标左键点击次数 |
| 右键点击 | 鼠标右键点击次数 |
| 鼠标移动 | 鼠标移动的总距离 |
| 滚动距离 | 页面滚动的累计距离 |
- 重置统计:手动清零今日所有统计数据
- 退出应用:关闭 KeyStats
KeyStats/
├── KeyStats.xcodeproj/ # Xcode 项目文件
├── KeyStats/
│ ├── AppDelegate.swift # 应用入口,权限管理
│ ├── InputMonitor.swift # 输入事件监听器
│ ├── StatsManager.swift # 统计数据管理
│ ├── MenuBarController.swift # 菜单栏控制器
│ ├── StatsPopoverViewController.swift # 详细面板视图
│ ├── Info.plist # 应用配置
│ ├── KeyStats.entitlements # 权限配置
│ ├── Main.storyboard # 主界面
│ └── Assets.xcassets/ # 资源文件
└── README.md
KeyStats.Windows/
├── KeyStats.sln # Visual Studio 解决方案文件
├── KeyStats/
│ ├── App.xaml # 应用入口定义
│ ├── App.xaml.cs # 应用入口逻辑
│ ├── Services/
│ │ ├── InputMonitorService.cs # 输入事件监听服务
│ │ ├── StatsManager.cs # 统计数据管理
│ │ ├── NotificationService.cs # 通知服务
│ │ └── StartupManager.cs # 开机启动管理
│ ├── ViewModels/
│ │ ├── TrayIconViewModel.cs # 托盘图标视图模型
│ │ └── StatsPopupViewModel.cs # 统计面板视图模型
│ ├── Views/
│ │ └── StatsPopupWindow.xaml # 统计面板界面
│ ├── Models/ # 数据模型
│ ├── Helpers/ # 工具类
│ └── Resources/ # 资源文件
└── build.ps1 # 构建脚本
- 语言:Swift 5.0
- 框架:AppKit, CoreGraphics
- 事件监听:使用
CGEvent.tapCreate创建全局事件监听器 - 数据存储:使用
UserDefaults进行本地持久化 - UI 模式:纯菜单栏应用(LSUIElement = true)
- 语言:C# 10
- 框架:WPF (.NET Framework 4.8)
- 架构模式:MVVM (Model-View-ViewModel)
- 事件监听:使用 Windows 低级键盘/鼠标钩子 (SetWindowsHookEx)
- 数据存储:使用 JSON 文件进行本地持久化
- UI 模式:系统托盘应用
- 优势:无需安装运行时,Windows 10/11 开箱即用,应用体积小(5-10 MB)
KeyStats 仅统计按键和点击的次数,不会记录:
- 具体按下了哪些键
- 输入的文字内容
- 点击的具体位置或应用
所有数据仅存储在本地,不会上传到任何服务器。
MIT License