Skip to content

Releases: Mikachu2333/KeyCastOW

2.3.2 Fix

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 29 Jul 06:11
  1. 并发与定时器

    • 将线程池定时器改为基于 SetTimer 的 UI 消息线程定时器。
    • 避免工作线程直接访问 HWND、GDI/GDI+ 对象和全局 GUI 状态。
    • 消除了退出阶段定时器回调访问已释放资源的主要风险。
    • 禁止复制 CTimer,并修复定时器注册表容量不足时的失败处理。
  2. 指针、越界与内存

    • 标签文本由共享裸指针缓冲区改为 std::wstring。
    • 移除 textBuffer、内部指针移动、重叠覆盖和手工空间回收逻辑。
    • 修复 labelCount - 1 在零值时下溢的问题。
    • 修复 prepareLabels() 中零行时 offset 无符号下溢。
    • 限制标签文本最大长度和标签数量。
    • 增加标签索引、对象和画布有效性检查。
    • 延迟鼠标标签改为 std::wstring,避免固定数组操作。
  3. Hook 安全和逻辑

    • 在解引用 Hook 的 lParam 之前检查 nCode 和空指针。
    • 使用只读 Hook 数据视图。
    • 修复键盘或鼠标 Hook 仅安装成功一个时状态不一致的问题。
    • 重新启用 Hook 失败时回滚已安装的 Hook。
    • 初始化点击动画类型,消除可能使用未初始化变量的问题。
    • 修复有符号/无符号比较警告。
  4. GDI/GDI+ 资源

    • 检查 GetDC、CreateCompatibleDC、CreateCompatibleBitmap、
      SelectObject、CreateFontIndirect 和 GDI+ 对象状态。
    • 检查画布和窗口尺寸,防止向 UpdateLayeredWindow 传入无效参数。
    • 修复部分失败路径上的 GDI 资源清理。
    • Debug 日志文件现在仅在成功打开后关闭。
  5. 设置窗口

    • 修复 modeless dialog 错误使用 EndDialog 的问题。
    • 保存、取消和关闭现在隐藏窗口,使句柄可安全复用。
    • 关闭设置窗口时停止预览定时器。
    • 修复设置窗口在负坐标和非主显示器工作区上的定位计算。
  6. 热键

    • 新热键注册失败时恢复旧热键及旧配置。
    • 避免新热键注册失败后程序永久失去切换热键。
  7. 初始化和错误处理

    • 检查单实例互斥体创建失败。
    • 使用当前用户会话范围的 Local\ 互斥体。
    • 检查 GetModuleFileNameW 失败或路径截断。
    • 检查 GdiplusStartup 返回状态。
    • 正确处理 GetMessage 返回 -1。
    • 检查设置写入结果,并在调试输出中报告保存失败。
  8. DPI、权限与构建安全

    • 改为 Per-Monitor DPI Awareness V2。
    • Manifest 明确设置:
      • asInvoker
      • uiAccess=false
    • 增加 MSVC 安全和兼容性选项:
      • /W4
      • /permissive-
      • /sdl
      • /DYNAMICBASE
      • /HIGHENTROPYVA
      • /NXCOMPAT
      • /GUARD:CF

2.3.1 Fix and improvement

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 01 May 03:50

Features | 新功能

  • feat: Add launch and tasks configuration for debugging x64 and x86
    新增用于 x64 和 x86 环境调试的 launch 和 tasks 配置文件
  • feat: Add refreshLastLabel function to update the last key label
    新增 refreshLastLabel 函数,支持动态更新最后一次按键的显示标签

Bug Fixes | 修复

  • fix: Fix latent log error
    修复潜在的日志记录错误问题
  • fix: Fix annoying window size set requests
    *修复频繁且烦人的窗口尺寸调整请求问题

2.3.0 Improvements

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 28 Apr 15:58
  1. 将语言文件集成到程序内,不再释放 Embed lang files in exe
  2. 改进默认配置 Improve default settings

2.2.2 Fix and Improvements

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 27 Apr 06:13
  1. 修复了潜在的内存安全问题
  2. 改进了设置GUI的布局
  3. 换用cmake编译
  4. 格式化文件
  5. 修复警告
  1. Fixed a potential memory security issue
  2. Improved the layout of the settings GUI
  3. Switch to cmake compilation
  4. Format the file
  5. Fix the warning

2.2.1 Fix settings

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 16 Apr 19:18

Fix missing settings for mouse animation.
修复了设置GUI中缺少的鼠标动画大小项目

2.2.0 Add mouse anime 增加鼠标点击动画

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 08 Mar 14:26

New Features

  • Mouse click animation: Visual feedback on mouse clicks with distinct shapes/colors for left, right, middle, side buttons, and scroll directions. Configurable radius and toggle in settings.

Improvements

  • Clamp all settings values to valid ranges on load and from dialog input
  • Preview area now uses dialog units for proper high-DPI scaling
  • Default font changed from "Microsoft YaHei" to "Microsoft YaHei UI"
  • LocaleManager now handles UTF-8 BOM files correctly
  • Tray tooltip unified to "KeyCastOW: Show Key Log"
  • Extracted updateMainWindowTransparency() helper to eliminate duplicate code

Bug Fixes

  • Fixed ColorDialog return value logic (early return on cancel)
  • Added fread return value checks in replay thread to prevent out-of-bounds reads
  • Fixed GDI resource leaks: properly restore old bitmap/font before cleanup
  • Added null-pointer guard in timer callbacks
  • Fixed swprintf format specifier warnings (%d → %lu for unsigned values)
  • Initialize FILE *stream to NULL with proper open-failure handling

2.1.0.0 Ground-Breaking Updates

Choose a tag to compare

@Mikachu2333 Mikachu2333 released this 02 Jan 15:06
  1. Prevent Duplicate Instances (fix brookhong#27)
  2. Correct Readme (@RokeJulianLockhart)
  3. Bump MSVC to v145 (@Crazy-A2)
  4. Support both x86 and x64 builds (@KimBioInfoStudio)
  5. Add gitignore (@dbratell)
  6. Support keyboards with AltGr (@dbratell)
  7. Bump version to 2.1.0.0
  8. Format code with LLVM style using clang-format
  9. Standardlize project struct
  10. Add localization support (fix brookhong#11)
  11. Fix memory leaks, dangling pointers, uncollected handles, and unreleased resources, etc..
  12. Add releases (fix brookhong#6, brookhong#7, brookhong#13, brookhong#22)
  13. Add MIT License (fix brookhong#19)
  14. Avoid create duplicate msg when wheel up/down (fix brookhong#21 @RuBing-Yang)