Skip to content

更新日志 / Release Notes ​

0.15.5 ​

  • 优化 UI Hint 对同一位置目标信息的更新,减少重复遍历和临时内存分配。

  • Reduced repeated traversal and temporary allocations when UI Hint updates information for a target at the same position.

0.15.3 ​

  • Grid、Recursive Grid 和 Bisect 中按 U 可在当前网格区域显示 UI Hint,按 I 可在该区域选择文字;文字可用 Alt+C 逐级细分。

  • 在区域 UI Hint 标签界面按 Tab 或 Backspace,可返回进入时的网格层级和位置。

  • 优化 macOS 上 UI Hint 的标签显示速度。

  • 优化 Windows 和 macOS 的扫描结果处理,减少临时内存分配。

  • In Grid, Recursive Grid, and Bisect, press U for UI Hint or I for Text Select within the current grid area. Use Alt+C to refine the text selection.

  • In the area UI Hint label view, press Tab or Backspace to return to the grid at the same depth and position.

  • Improved UI Hint label display speed on macOS.

  • Reduced temporary allocations when processing scan results on Windows and macOS.

https://github.com/user-attachments/assets/abc18585-0101-463f-9b4b-d47f70d76b97

0.15.2 ​

性能优化 / Performance

  • 优化 UI Hint 与文字选择的扫描结果合并,减少重复处理和临时内存分配。

  • 减少窗口模式在焦点更新、按键处理和按键帮助更新时的数据复制与重复状态。

  • Optimized scan-result merging in UI Hint and Text Select, reducing repeated work and temporary allocations.

  • Reduced data copying and redundant state during focus updates, key handling, and key-help updates in Window mode.

测量项 / Metric优化前 / Before优化后 / After减少 / Reduction
合并 CPU 耗时:512 个轮廓全部被过滤 / Merge CPU time: all 512 contours filtered out51.6 μs16.0 μs69%
合并 CPU 耗时:512 个轮廓一半被过滤 / Merge CPU time: half of 512 contours filtered out157.4 μs141.7 μs10%
临时分配:512 个轮廓全部被过滤 / Temporary allocations: all 512 contours filtered out1,024 / 43 KiB0 / 0 B100%

0.15.1 ​

优化

  • 优化配置加载与重载、自定义快捷键和应用切换。
  • 减少网格、UI 标签、文字选择和快速切换的重复处理与临时内存占用。

Improved

  • Improved configuration loading and reloading, custom shortcuts, and application switching.
  • Reduced repeated work and temporary memory use in grids, UI hints, Text Select, and Quick Switch.

0.15.0 ​

快捷键调整(Normal):G 网格 · F UI Hint · Primary+G 递归网格 · Primary+F Bisect。可在 [normal.bindings] 自定义。

新增

  • Bisect 二分定位:用 H/J/K/L 逐次缩小目标区域,无需输入标签。

优化

  • UI Hint 在全屏和多屏识别时优先显示鼠标附近标签,减少识别过程中的重复计算。
  • 改善多屏和缩放下的显示清晰度,减少模式切换、标签绘制和按键帮助的重复处理与临时内存占用。

修复

  • 修复临时模式的按键冲突和切换后移动、滚动不停的问题。
  • 修复 macOS 更新重启、权限及退出问题,以及 Windows 取消识别和退出清理问题。

Shortcut changes (Normal): G Grid · F UI Hint · Primary+G Recursive Grid · Primary+F Bisect. Customize in [normal.bindings].

Added

  • Bisect mode: narrow the target area with H/J/K/L, without typing labels.

Improved

  • UI Hint prioritizes labels near the pointer during full-screen and multi-display scans, with less repeated processing.
  • Clearer overlays across displays and scaling settings, with less repeated work and temporary memory use in mode switches, label rendering, and key help.

Fixed

  • Fixed temporary-mode shortcut conflicts and movement or scrolling continuing after mode switches.
  • Fixed update restarts, permissions, and exit issues on macOS, plus scan cancellation and shutdown cleanup on Windows.

0.12.9 ​

  • 优化 Windows 和 macOS 的按键处理与动作序列执行,减少临时内存分配。

  • 减少文字选择分词、编号及窗口模式面板更新的处理开销。

  • 优化 macOS 覆盖层刷新,减少未变化图形的重复更新。

  • 优化 OCR 段落分组、流式结果处理和覆盖层绘制,减少重复计算与临时内存分配。

  • Reduced temporary allocations during keyboard input handling and action-sequence execution on Windows and macOS.

  • Reduced processing overhead in Text Select segmentation and label numbering, and in Window mode panel updates.

  • Optimized macOS overlay refreshes to avoid updating unchanged shapes.

  • Optimized OCR paragraph grouping, streamed result handling, and overlay rendering to reduce redundant work and temporary allocations.

0.12.8 ​

  • 优化文字选择细分为词语时的预览响应,减少重复索引和临时内存分配。

  • 减少 UIHint 与文字选择中 ASCII 文本的搜索索引构建开销。

  • Improved preview responsiveness when refining text into words, with less repeated indexing and fewer temporary allocations.

  • Reduced search-index preparation overhead for ASCII text in UIHint and Text Select.

0.12.7 ​

UIHint 与文字选择模式的扫描资源复用,减少重复初始化。

Scan resource reuse for UIHint and Text Select to reduce repeated initialization.

0.12.6 ​

新增 文字选择(Text Select)模式,用键盘选择并复制屏幕文字,支持逐级细分到词语、字符。

Added Text Select mode to select and copy on-screen text, with refinement into words and characters.

toml
[normal.bindings]
c = "text_select"                  # 进入文字选择 / Enter Text Select

[text_select.bindings]
"alt+c" = "text_refine"            # 细分为词语、字符 / Refine into words, then characters
"alt+backspace" = "previous_level" # 返回上层 / Previous level
"ctrl+backspace" = "first_level"   # 重新识别 / Rescan
tab = "text_cycle_page"            # 循环翻页 / Cycle pages
"ctrl+a" = "text_select_all"       # 空输入时全选 / Select all when input is empty
backspace = "text_clear_selection" # 空输入时清空勾选 / Clear selection when input is empty
"ctrl+x" = "text_clear_input"      # 清空输入 / Clear input
"mod+c enter" = "text_copy"        # Ctrl+C(macOS 为 Cmd+C)或 Enter 复制 / Ctrl+C (Cmd+C on macOS) or Enter to copy
"primary+q" = "normal"             # 返回 Normal / Return to Normal
esc = "cancel_selection"           # 返回来源模式 / Return to previous mode
"?" = "key_help"                   # 按键帮助 / Key help

0.12.5 ​

  • 优化 Windows 和 macOS 的网格与 UIHint 绘制和标签切换,修复部分覆盖层刷新异常。

  • 改善 UIHint 连续扫描的响应与资源回收,减少临时内存占用。

  • 修复退出或重载配置时可能出现的短暂输入卡顿。

  • 修复重复触发更新检查或打开“关于”窗口时的状态异常。

  • Improved grid and UIHint rendering and label switching on Windows and macOS, and fixed overlay refresh issues.

  • Improved responsiveness and resource cleanup during repeated UIHint scans, reducing temporary memory use.

  • Fixed brief input stalls that could occur when quitting or reloading configuration.

  • Fixed state handling when repeatedly checking for updates or opening the About window.

0.12.3 ​

  • 修复 macOS UIHint 中文识别错误。

  • 优化 UIHint 结果融合、文字补全、搜索索引和重叠层规划,减少重复处理和临时内存分配,并修复识别过程中标签闪烁的问题。

  • 优化配置保存,连续修改时处理耗时减少约 8%,内存分配量减少约 26%。

  • 改进 UIHint 轮廓识别,补全浅色空心控件并减少不必要的像素处理和临时内存分配。

  • 鼠标左右键、中键和两个侧键均支持改绑,也能通过可配置按键模拟鼠标点击。

  • 支持改绑左键,但不建议。 给左键安排新动作后,它就不再负责普通点击了。小心“赛博灯泡”:改配置时很潇洒,想点“改回去”才发现左键已经下班 😵。尝试前请先为模拟左键点击配置一个备用按键;模拟点击不会再次触发鼠标绑定,不会套娃。

  • ⚠️ 误绑后,可在 Normal 模式使用可配置按键进入临时输入模式(Text Input),临时恢复普通点击,再修改绑定;若无法进入,可用键盘打开任务管理器(macOS 为活动监视器),结束 KeySteer 后修正配置。

  • Fixed Chinese text recognition in macOS UIHint.

  • Optimized UIHint fusion, text completion, search indexing, and overlap planning to reduce repeated work and temporary allocations. Fixed label flickering during recognition.

  • Optimized configuration saves, reducing processing time by about 8% and allocated bytes by about 26% during repeated edits.

  • Improved UIHint contour detection for faint outlined controls while reducing redundant pixel processing and temporary allocations.

  • All five mouse buttons can now be remapped, and configurable keybindings can simulate mouse clicks.

  • Left-click remapping is supported, but not recommended. Once remapped, left-click performs its new action instead of clicking. A classic “Congratulations, you played yourself” moment: you finish the clever setup, then realize you need left-click to change it back 😵. Before experimenting, configure a backup keybinding for left-click; simulated clicks do not retrigger mouse bindings, so there is no loop.

  • ⚠️ If you lose left-click, use your configured keybinding in Normal mode to enter Text Input and temporarily restore normal clicking, then fix the binding. If that is unavailable, use the keyboard to open Task Manager (Activity Monitor on macOS), stop KeySteer, and correct the configuration.

0.12.2 ​

  • UIHint 新增多屏识别:双 4K、800 控件,约 0.28 秒显示首批标签(Windows / Hybrid,本机实测中位数)。

  • UIHint adds multi-display scanning: first labels in about 0.28 s with 800 controls on two 4K displays (Windows / Hybrid, local median).

toml
[ui_hint]
# window(默认/default):优先鼠标下窗口 / pointer window first
# active:优先激活窗口 / active window first
# screen:鼠标所在屏幕 / pointer's display
# all(新增/new):全部显示器 / all displays
scan_scope = "all"

0.12.1 ​

  • 优化 Windows 和 macOS 的鼠标移动与滚动响应。

  • Improved pointer movement and scrolling responsiveness on Windows and macOS

0.12.0 ​

  • 闲时更安静,操作更跟手。 核心循环改为事件驱动,告别常规空闲轮询,输入和任务到来时按需唤醒。

  • UIHint 搜索分批预热、输入优先,目标更新只重建变化部分,让复杂界面下的搜索更流畅。

  • 日志改为异步写入,减少磁盘操作对交互的干扰。

  • ⚠️ 配置变更提醒: [ui_hint.search_input_ui] 搜索框略微上移,[ui_hint.search_info_ui] 信息面板默认跟随其上方并留出间距,可在网页模拟器调整位置、间距和样式。这两个配置段的旧 x_offset / y_offset 仍兼容读取,但不再生效,不影响启动。

  • Quieter at idle, quicker to respond. The core loop now wakes for events and scheduled work, eliminating routine idle polling.

  • UIHint search prepares work in small batches with input taking priority, rebuilding only changed entries for smoother searches on complex screens.

  • Logging now runs asynchronously, reducing disk I/O on the interaction thread.

  • ⚠️ Configuration changes: The search input in [ui_hint.search_input_ui] sits slightly higher, with the information panel in [ui_hint.search_info_ui] following above it with a gap. Adjust positions, spacing and appearance in the web simulator. Legacy x_offset / y_offset fields in these two sections remain accepted but have no effect and do not prevent startup.

0.11.9 ​

  • 支持读取和保存符号链接配置文件。

  • 修复 Windows 带参数启动时残留命令行窗口的问题。

  • Added support for reading and saving configuration files through symbolic links.

  • Fixed leftover console windows when launching with arguments on Windows.

0.11.8 ​

  • 改进桌面程序的 UIHint 识别,减少列表、表格中文字被错误合并或漏掉的情况

  • 识别结果陆续补全时,已有标签更稳定,减少标签跳变和重复刷新。

  • 网页配置模拟器支持直接映射按键,例如将 T 映射为 Home,也可映射为组合键。

  • Improved UIHint recognition in the desktop app, reducing incorrectly merged or missing text targets in lists and tables.

  • Labels stay more stable as recognition results arrive, with fewer label changes and unnecessary redraws.

  • The web configuration simulator now supports direct key remapping, such as mapping T to Home or a key combination.

0.11.7 ​

  • ⚠️ 配置升级提醒: [ui_hint.search_edit_keys] 已改为「按键 = 动作」格式。新旧格式混用或按键冲突可能导致程序无法启动。请从新版 keysteer.default.toml 中复制完整的 [ui_hint.search_edit_keys] 段,替换用户配置中的旧段,不要直接追加,再按需修改按键。

  • UIHint 搜索有多个结果时,会自动显示最匹配结果的信息面板。默认按 Tab 切换,Enter 或 / 确认当前结果,Esc 取消;按键均可修改。

  • 搜索会优先展示更符合输入的结果。匹配程度相同时,默认按「简拼 → 文字 → 标签」选择,也可以在配置中调整顺序。

  • ⚠️ Configuration migration: [ui_hint.search_edit_keys] now uses key = action. Mixing old and new formats or conflicting key bindings may prevent KeySteer from starting. Copy the entire [ui_hint.search_edit_keys] section from the new keysteer.default.toml and replace the old section in your user configuration; do not append it. Then customize the keys as needed.

  • UIHint search now automatically previews the best match when several results are found. By default, press Tab to switch, Enter or / to confirm the current result, or Esc to cancel. These keys are customizable.

  • Search shows the closest matches first. Equally close matches default to Chinese initials → text → labels; you can change this order in settings.

https://github.com/user-attachments/assets/84d0872d-81f6-4e42-aa7f-767061cef646

0.11.6 ​

  • Windows 提供三种 x64 构建:默认 AVX2(x86-64-v3)版、旧 CPU 兼容版、AVX-512(x86-64-v4)版。固定编译指令集,避免构建机器变化导致启动即退出。

  • 一般下载默认版即可;无法启动时尝试兼容版。网页与发布说明提供简明提醒,启动后交给「检查更新」自动选包。

  • 无论最初下载兼容版、AVX2 版还是 AVX-512 版,「检查更新」都会自动选择 CPU 和系统支持的最高等级。同一版本也可切换构建,无需自行判断;保留签名校验、安装与失败回滚,网络回退统一使用 gh-proxy。

  • Windows x64 now offers three builds: the default AVX2 (x86-64-v3) build, a compatible build for older CPUs, and an AVX-512 (x86-64-v4) build. Fixed instruction-set targets prevent startup crashes caused by changes to the build machine.

  • Use the default build for most PCs; if it will not start, try the compatible build. The website and release notes offer brief guidance: once running, let Check for Updates choose the build automatically.

  • Regardless of the initially downloaded build, Check for Updates automatically selects the highest level supported by your CPU and OS, including switching builds within the same version. Signature verification, installation, and rollback on failure remain in place. Network fallback consistently uses gh-proxy.

0.11.5 ​

优化 Windows 和 macOS 的 UIHint 响应,让标签显示更及时、多标签界面更流畅。下表三个规模的结果处理 CPU 耗时平均降低约 48%,最高降低约 67%。

Improved UIHint responsiveness on Windows and macOS, with labels appearing more promptly and fewer pauses on screens with many targets. Across the three target counts below, CPU processing time dropped by 48% on average, with a reduction of up to 67%.

CPU 处理耗时(p50) / CPU processing time (p50)优化前 / Before优化后 / After降低 / Reduction
UIHint(300 个目标) / UIHint (300 targets)0.3310 ms0.2642 ms20.2%
UIHint(2000 个目标) / UIHint (2000 targets)4.9206 ms2.0797 ms57.7%
UIHint(10000 个目标) / UIHint (10000 targets)60.0125 ms19.9858 ms66.7%

0.11.4 ​

  • 修复 Window 模式调整音量、切换静音或音频输出设备时的提示闪烁。
  • Fixed flickering feedback when adjusting volume, toggling mute, or switching audio output devices in Window mode.

0.11.3 ​

  • UIHint 搜索新增点位微调:轻触 Ctrl 切换输入与调整,沿用 Normal 的移动键;多点从平均中心开始,按 Tab 逐个切换。

  • 搜索信息面板支持查看和复制 OCR、辅助功能文字、坐标及实时颜色,支持 HEX、RGB、HSL;四栏均可独立配置为拼接多点信息或跟随当前点。默认用 Ctrl+1/2/3/4 复制,Ctrl+Shift+4 切换颜色格式。

  • 改善长按连续滚动与同时移动鼠标的响应,支持独立调整持续滚动速度,松键后取消尚未执行的滚动。

  • 网页配置模拟器补齐点位、信息栏和滚动速度设置。macOS 取色需要屏幕录制权限。

  • UIHint search now supports point adjustment: tap Ctrl to switch between typing and adjustment, using your Normal movement keys. Multiple points start at their average center; press Tab to cycle through them.

  • Inspect and copy OCR text, accessibility text, coordinates, and live color in HEX, RGB, or HSL. Each of the four fields can independently concatenate selected points or follow the current point. Default shortcuts are Ctrl+1/2/3/4 to copy and Ctrl+Shift+4 to change the color format.

  • Improved responsiveness when holding scroll keys and moving the pointer at the same time. Continuous scrolling has its own speed setting, and releasing the key cancels pending scroll frames.

  • The web configuration simulator adds point, information-panel, and scroll-speed settings. Color sampling on macOS requires Screen Recording permission.

0.11.2 ​

  • 修复长按滚动时先滚一下、停顿后才连续滚动的问题。按下立即执行。

  • 新增持续滚动速度配置,可按需要调整滚动速度。

  • 网页配置模拟器增加相应的滚动速度设置。

  • Fixed the pause between the first scroll step and continuous scrolling when holding a key. A press scrolls immediately.

  • Added a setting to adjust continuous scrolling speed.

  • Added the corresponding scroll speed setting to the web configuration simulator.

0.11.0 ​

  • 新增窗口多选,可批量移动、缩放、最大化/最小化和关闭窗口,选中窗口会高亮显示。

  • 默认按 Alt+W 进入窗口模式,再按 Ctrl 开始多选(macOS 同样使用 Control,当前窗口默认选中);输入 234 切换选择窗口 2、3、4,多位编号先按空格再输入,按 Enter 或再次按 Ctrl 确认。

  • 确认后沿用原有操作键,按 E 只平铺选中窗口,按 T 将它们组成标签组;Ctrl+X 清除多选并回到最初窗口。

  • Added window multi-selection for moving, resizing, maximizing/minimizing, and closing multiple windows together, with highlighted selections.

  • With default bindings, press Alt+W, then Ctrl to start selecting (Control on macOS too; the current window starts selected). Type 234 to toggle windows 2, 3, and 4; press Space before entering multi-digit labels. Press Enter or Ctrl again to confirm.

  • Use the usual action keys after confirming: E tiles only selected windows, T combines them into a tab group, and Ctrl+X clears the selection and returns to the original window.

0.10.30 ​

优化窗口移动、缩放和 UI Hint 搜索响应,减少重复计算与临时内存分配。

Improved window movement, resizing, and UI Hint search responsiveness, reducing repeated work and temporary allocations.

CPU 处理耗时(p50) / CPU processing time (p50)优化前 / Before优化后 / After降低 / Reduction
窗口移动请求处理(40 个窗口) / Move request handling (40 windows)71.85 μs0.10 μs99.9%
UI Hint 搜索确认(2000 个目标) / UI Hint search acceptance (2000 targets)241.60 μs127.65 μs47.2%

0.10.29 ​

  • 改善 Windows 和 macOS 输入超时后的按键状态恢复,并修复 macOS 切换输入法时保存布局备注被意外关闭的问题。

  • 窗口自动平铺遇到无法调整的窗口时会跳过该窗口,继续完成其他窗口布局。

  • Improved key-state recovery after input timeouts on Windows and macOS, and fixed layout-note editing during macOS input-method switching.

  • Automatic window tiling now skips windows that cannot be adjusted and continues arranging the remaining windows.

0.10.28 ​

  • 优化 OCR 文字预览与复制,清理中文间的多余空格,减少分块接缝处的重复文字。

  • Windows 与 macOS 共用文字拼接逻辑,复用扫描缓冲,减少内存分配并及时释放资源。

  • Improved OCR previews and copying by removing extra spaces between Chinese characters and reducing duplicate text at tile seams.

  • Windows and macOS share text stitching logic, with reusable scan buffers, fewer allocations, and prompt resource cleanup.

0.10.27 ​

  • UIHint 新增搜索与信息复制:按 / 搜索标签、OCR 和辅助功能内容,并用快捷键复制结果。

  • 窗口入口目标在激活窗口或鼠标下窗口不可用时自动回退,macOS 的 Tab 保存支持 Cmd+S。

  • UIHint now supports searching labels, OCR and accessibility information with /, then copying results with shortcuts.

  • Window entry targets fall back when the preferred window is unavailable, and Tab saving now supports Cmd+S on macOS.

0.10.26 ​

Window、Quick、Editor、Restore 和 Tabs 现在支持配置入口目标:active 选择激活窗口,mouse 选择鼠标下窗口;单条快捷键也可追加目标后缀。未配置时保持原有行为。

Window, Quick, Editor, Restore, and Tabs now support configurable entry targets: active selects the focused window and mouse selects the window under the pointer. Individual bindings can also append a target suffix; omitting it preserves the existing behavior.

0.10.25 ​

优化 UI Hint。

优化按键响应,按键处理耗时降低约 15%。

配置模拟器新增 TOML 文件对比和导入/导出变更预览,清晰展示新增、删除与修改,忽略注释和格式差异。

Reload Configuration 现在会完整重启程序并重新加载配置;配置有误时保持原状态。

Improved UI Hint.

Improved keyboard responsiveness, reducing key processing time by about 15%.

The configuration simulator now compares TOML files and previews import/export changes, highlighting added, removed and modified values while ignoring comments and formatting.

Reload Configuration now fully restarts the app with the new configuration; invalid configuration leaves the current session unchanged.

按键处理耗时 / Key processing time优化前 / Before优化后 / After降低 / Reduction
p50160 ns136 ns15.0%
p95163 ns138 ns15.3%
p99205 ns180 ns12.2%

0.10.24 ​

  • 优化 UI Hint 扫描的内存占用。

  • Optimized memory usage during UI Hint scans.

0.10.23 ​

  • 修复盲操定位在字符与物理键不一致的键盘布局下吞掉 Cmd/Ctrl/Alt 应用快捷键的问题,避免字符匹配去掉修饰键后误触发裸定位键。

  • Fixed blind targeting intercepting Cmd/Ctrl/Alt application shortcuts when the produced character differs from the physical key, preventing character lookup from treating those shortcuts as bare selection keys.

  • Normal 新增可选的盲操定位:无需切换模式或显示网格,直接用 Grid/Recursive Grid 的选格键粗定位鼠标,仍可用 H/J/K/L 细调。Tab/Backspace 返回上一层,Space 重置;选到最后一层后仍留在 Normal。

  • [normal.targeting] 可独立覆盖列数、行数、按键和最大层数;使用 Recursive Grid 时还可覆盖最小尺寸和按深度设置的 layers。未写的字段继承所选网格模式,独立 Grid/Recursive Grid 的配置和显示不受影响。reset_on 可选择细调、点击、两者或都不重置。

  • 定位键与 Normal 现有绑定冲突时,配置检查会列出键、动作和来源;请先移除、改绑或用 none 让出冲突键。未配置 [normal.targeting] 时保持原有行为。

  • 网页模拟器的 Normal → 行为 页可启用和编辑盲操定位,并在无网格的预览中试按选格键;借用 Normal 的按键标签只在按住配置的 temporary_mode_keys 时高亮。

  • Normal now offers optional blind positioning: use Grid or Recursive Grid selection keys to move the pointer without changing mode or displaying a grid, then fine-tune with H/J/K/L. Tab/Backspace step back, Space resets, and completing a selection stays in Normal.

  • [normal.targeting] can override columns, rows, keys, and depth independently; Recursive Grid also supports minimum-size and per-depth layers overrides. Omitted values inherit from the selected grid mode without changing that mode. Choose whether fine movement, clicks, both, or neither reset the selection with reset_on.

  • Conflicting Normal bindings are reported with their key, action, and source during configuration checking. Remove or rebind them, or use none to release a key. Existing behavior is unchanged when [normal.targeting] is absent.

  • The web simulator adds a switch and settings under Normal → Behavior, a grid-free pointer preview, and borrowed Normal key highlights that appear only while temporary_mode_keys are held.

启用示例 / Enable example ​

下面的数字键布局避开了发布默认配置中的 Normal 单键冲突;现有自定义绑定仍需按实际配置检查。保存后运行 keysteer --config keysteer.user.toml --check。

The digit-key layout below avoids single-key Normal conflicts in the shipped defaults. Check any custom bindings in your own configuration with keysteer --config keysteer.user.toml --check after saving.

toml
[normal.targeting]
method = "grid"
grid_cols = 3
grid_rows = 2
keys = "asdzxc"
max_depth = 1
reset_on = ["move", "click"]

0.10.22 ​

  • 破坏性改动: 模式标识符移除 position、indicator_x_offset、indicator_y_offset,全局 [mode_indicator.ui] 和单模式 [mode_indicator.modes.<模式>.ui] 均只使用 indicator_offset = [X, Y]。旧字段会导致配置校验失败,请在升级前删除并迁移;即使已配置新数组,也必须删除旧字段。

  • 偏移以鼠标热点为原点,定位标识符的右上角;正 X 向右、正 Y 向下,范围为 -32768~32767。全局未配置时默认 [-12, 18],单模式未配置时继承全局值。可在网页模拟器拖动锚点调整并导出配置。

  • 补齐代码内置 Normal 默认绑定:. 向左滚动、/ 向右滚动,与发布的默认配置保持一致。

  • Breaking change: Removed mode-badge position, indicator_x_offset, and indicator_y_offset. Both [mode_indicator.ui] and [mode_indicator.modes.<mode>.ui] now use only indicator_offset = [X, Y]. Old fields fail configuration validation; remove and migrate them before upgrading, even if the new pair is already present.

  • The offset places the badge's top-right corner relative to the cursor hotspot. Positive X moves right and positive Y moves down; each integer ranges from -32768 to 32767. The global default is [-12, 18]; omitted per-mode offsets inherit it. Drag the anchor in the web simulator and export the result.

  • Added the missing embedded Normal defaults: . scrolls left and / scrolls right, matching the shipped configuration.

迁移示例 / Migration example ​

将旧的 position = "bottom_left"、indicator_x_offset = -12、indicator_y_offset = 18 三项删除,替换为下方配置。

旧 bottom_left 可直接使用原 X/Y;旧 bottom_right 需在 X 上加标识符宽度,top_left 需从 Y 减标识符总高度,top_right 同时调整两者。宽高受字体、内边距和第二行按键提示影响,建议用网页拖动重新定位。单模式覆盖使用相同格式。其他样式字段不变。

Remove position = "bottom_left", indicator_x_offset = -12, and indicator_y_offset = 18, then use the shared configuration below.

For old bottom_left placement, reuse X/Y directly. For bottom_right, add the badge width to X; for top_left, subtract the total badge height from Y; for top_right, apply both adjustments. Dimensions depend on font, padding, and the second held-input line, so dragging in the web editor is recommended. Per-mode overrides use the same format. Other style fields are unchanged.

toml
[mode_indicator.ui]
indicator_offset = [-12, 18]

0.10.21 ​

  • 网页模拟器新增「全局设置 → 模式标识符」,支持实时修改位置、偏移、字号、颜色和边框;各模式外观页保留可选覆盖,修改可导出为 TOML。

  • 模式标识符新增 indicator_offset = [-12, 18] 二维偏移(i16),网页可拖动右上角锚点;程序与网页统一尺寸和定位规则,消除 Windows 二次缩放造成的位置差异。保留全局及模式独立样式覆盖和旧配置兼容。配置示例见 模式标识符样式与位置。

  • The web simulator adds Global settings → Mode badge, with live placement, offset, font, color, and border editing. Optional per-mode overrides remain available in Appearance, and changes export to TOML.

  • Mode badges add indicator_offset = [-12, 18] (an i16 pair) and a draggable top-right anchor in the web editor. Shared geometry removes Windows double-scaling placement differences. Global/per-mode styles and legacy placement settings remain supported. See Mode badge style and position.

0.10.20 ​

  • 新增 Text Input 临时文本输入模式:从 Normal 一键进入,普通文字透传,输入结束后直接返回 Normal;进入、返回和编辑映射均使用普通按键绑定。

  • 支持通过 primary 临时借用 Normal,也可配置绑定继承;修复临时 Normal 中 screen next 等切屏指令的结果未交给临时模式处理的问题。

  • Text Input 默认隐藏模式文字提示。默认配置提供方向键、Backspace、Delete、Insert、Home/End 及 Ctrl/Shift 组合的注释示例,按需启用。

  • Added Text Input for temporary typing from Normal. Ordinary typing passes through, and standard bindings configure entry, exit, and editing shortcuts.

  • Supports borrowing Normal with primary and optional binding inheritance. Fixed screen-switch commands such as screen next delivering their results to the base mode instead of the temporary mode.

  • Text Input hides its text badge by default. Arrow, Backspace, Delete, Insert, Home/End, and Ctrl/Shift mappings are provided as commented, opt-in examples.

简单启用与使用 / Enable and use ​

使用新版默认配置时,Normal 中按 \ 即可进入。已有用户配置请将下面的入口加入现有 [normal.bindings],其他配置合并到对应表中;不要重复创建同名表或覆盖原有绑定。

With the new default configuration, press \ in Normal. For an existing profile, add the entry to your current [normal.bindings] and merge the other settings into their corresponding tables. Do not create duplicate tables or replace your existing bindings.

toml
[normal.bindings]
'\' = "text_input"

[text_input]
inherits = []
temporary_mode = "normal"
temporary_mode_keys = ["primary"]

[text_input.bindings]
'enter \ esc' = "normal"

# 可选:先向应用发送 Enter,再返回 Normal。
# 用下面两行替换上面的合并绑定:
# Optional: send Enter to the app before returning to Normal.
# Replace the grouped binding above with these two lines:
# '\ esc' = "normal"
# enter = ["send enter", "normal"]

[mode_indicator.modes.text_input]
enabled = false
  1. 保存配置,从托盘/状态栏菜单重载配置。
  2. 按 Primary+E 进入 Normal,再按 \ 输入文字;按 Enter、\ 或 Esc 返回 Normal。
  3. 输入期间按住 Primary 可临时使用 Normal,例如用 H/J/K/L 移动鼠标;松开继续输入。Primary 使用现有 key_aliases 配置。

默认返回键会被消费,Enter 不会提交给应用;需要提交时使用上面的注释序列。多行编辑或输入法需要 Enter 时,可把返回绑定改为 '\ esc' = "normal"。编辑组合键示例默认全部注释,取消所需行的注释即可启用。详见 Normal 的临时文本输入。

  1. Save the configuration and reload it from the tray/status-bar menu.
  2. Press Primary+E to enter Normal, then \ to type; press Enter, \, or Esc to return to Normal.
  3. While typing, hold Primary to borrow Normal, for example H/J/K/L to move the pointer; release it to resume typing. Primary follows your existing key_aliases configuration.

The default return keys are consumed, so Enter does not submit to the app. Use the commented sequence above when submission is needed. For multiline editing or an input method that needs Enter, use '\ esc' = "normal" instead. Editing chord examples are commented out by default; uncomment the ones you need. See Temporary text input.

0.10.19 ​

  • 优化 Windows 和 macOS 的窗口调整、最大化、布局及撤销/重做,分批异步确认,减少慢窗口对其他窗口操作的影响。

  • 优化 Normal 模式指针计算,复用窗口快照与卡片文字,减少重复查询和内存分配。

  • 改进工作区后台保存、操作取消与恢复,合并重复错误日志,并完善异常时的按键释放和原生资源管理。

  • Improved window adjustments, maximization, layouts, and undo/redo on Windows and macOS with batched asynchronous confirmation, reducing interference from slow windows.

  • Optimized Normal-mode pointer calculations and reused window snapshots and card text to reduce repeated queries and memory allocations.

  • Improved background workspace saves, cancellation and recovery, deduplicated error logs, and refined key release during error recovery and native resource management.

0.10.18 ​

  • 改进 Windows 和 macOS 的跨屏窗口识别与切换,支持更多窗口并减少多屏、标题变化或鼠标跳转导致的选窗错误和窗口误移动。

  • Improved cross-display window detection and switching on Windows and macOS, supporting more windows while reducing wrong selections and unintended window moves caused by multiple displays, title changes, or pointer warps.

0.10.17 ​

  • 临时模式现在优先匹配完整组合键,并支持 temporary_mode_passthrough_keys 让指定按键交给当前模式处理,减少临时层快捷键冲突。

  • Quick Switch 的触发键会先立即执行原有绑定,只有持续按住达到 hold_ms 才显示切换面板,不再拖慢普通按键响应。

  • 修复 macOS 多屏覆盖层定位,跨屏显示时面板和窗口标识不再被错误限制到单个屏幕。

  • Temporary modes now resolve full chords first and support temporary_mode_passthrough_keys so selected keys can fall through to the active mode, reducing shortcut conflicts.

  • Quick Switch triggers now execute their original binding immediately and show the switcher only after being held for hold_ms, keeping normal key response fast.

  • Fixed macOS multi-display overlay positioning so panels and window indicators are no longer incorrectly constrained to a single screen.

0.10.16 ​

  • 优化相交窗口切换(window_overlap_next / window_overlap_previous),减少重复计算。

  • Improved overlapping-window switching (window_overlap_next / window_overlap_previous) with less repeated work.

0.10.15 ​

  • 新增可配置的 window_overlap_next / window_overlap_previous,可在 Normal 模式中只切换到与当前窗口有重叠的窗口,并将鼠标移到目标窗口中心。

  • Added configurable window_overlap_next / window_overlap_previous actions to switch between overlapping windows from Normal mode and center the pointer on the selected window.

0.10.12 ​

  • 新增可配置的 window_activate_next / window_activate_previous 动作,可在 Normal 模式中直接切换前后窗口并将鼠标移到目标窗口中心,无需进入 Window 模式。

  • Added configurable window_activate_next and window_activate_previous actions to switch between windows from Normal mode and center the pointer on the target without entering Window mode.

0.10.11 ​

  • Window 移动现在支持 Grid 和 Recursive Grid 精确定位窗口,可使用已配置的快捷键在不同屏幕间快速放置窗口。

  • Window Move now supports Grid and Recursive Grid targeting, so you can precisely place windows across displays with your configured keyboard shortcuts.

0.10.10 ​

  • 优化 Windows 和 macOS 的 Window 模式资源回收。

  • Improved resource cleanup in Window mode on Windows and macOS.

0.10.9 ​

  • 优化 Windows 和 macOS 上的键盘映射,让组合键不再误带入正在按住的 Ctrl、Alt、Shift 或 Command,使用更稳定流畅。

  • Improved keyboard mappings on Windows and macOS so shortcuts no longer accidentally inherit held Ctrl, Alt, Shift, or Command keys and feel smoother and more reliable.

0.10.8 ​

  • 修复自定义组合键的前缀字符提前透传的问题,

  • Fixed premature passthrough of custom chord prefixes.

0.10.7 ​

  • 修复 macOS Retina 屏幕上快速切换面板过大、模式名称对齐错位的问题。

  • 调整快速切换面板宽度,并根据名称长度分布平衡左右留白,保持名称左对齐,让内容在视觉上更居中。

  • Fixed oversized quick-switch panels and misaligned mode names on macOS Retina displays.

  • Refined quick-switch panel width and balanced side padding based on mode-name lengths for better visual centering while keeping names left-aligned.

0.10.6 ​

  • 新增常用模式快速切换:操作模式中长按 Q 查看面板,按数字切换;支持使用统计、黑名单及面板样式配置。

  • 修复快速切换面板在高 DPI 下的重叠与边框异常;递归网格默认使用自动大字号。

  • 窗口卡片引导线支持开关、线宽、颜色和透明度配置,网页编辑器同步支持。

  • Added quick switching by mode usage: hold Q in an operating mode and press a number to switch, with usage statistics, a blacklist, and configurable panel styling.

  • Fixed overlapping text and unwanted borders in the quick-switch panel at high DPI; Recursive Grid now uses large automatic font sizing by default.

  • Added window card guide-line visibility, width, color, and opacity settings, also available in the web editor.

0.10.5 ​

  • 拆分窗口最大化与最小化操作:F 切换最大化/还原,Shift+F 切换最小化/还原,不再经过三态循环。按键提示仍合并在一行。

  • 窗口卡片支持自定义颜色、字体、边框和百分比定位;Editor 可独立覆盖位置,自动避让。

  • 模拟器新增卡片可视化编辑,支持拖动定位、样式预览及配置导出。

  • Split window maximization and minimization into separate toggles: F maximizes/restores, while Shift+F minimizes/restores, replacing the three-state cycle. Both shortcuts remain on one help row.

  • Customize window card colors, fonts, borders, and percentage positioning, with an independent Editor position override and automatic collision avoidance.

  • Added visual card editing in the simulator, including drag positioning, live style previews, and configuration export.

0.10.4 ​

  • 按键提示支持配置默认显示状态:mouse_key_help 控制鼠标操作模式,window_key_help 控制窗口模式;均可通过 ? 随时显示或隐藏。

  • Configure the initial key-help visibility with mouse_key_help for pointer modes and window_key_help for window modes. Press ? to show or hide either panel regardless of its default.

0.10.3 ​

修复 macOS 上的窗口布局、最大化和按键提示问题。

Fixed window layout, maximization, and key hint issues on macOS.

0.10.2 ​

修复关闭窗口后,边框、编号等状态仍可能残留的问题。

Fixed an issue where borders, window numbers, and other window state could remain after closing a window.

0.10.1 ​

改进窗口移动、关闭

  • 移动更稳定:连续移动和缩放窗口时不再反复拉动鼠标;细小位移跨帧累积,避免高刷新率下取整丢失。
  • 关闭后及时清理:修复按 X 关闭窗口后,边框和编号仍可能残留的问题。

Improved window movement and closing

  • Steadier movement: continuously moving or resizing a window no longer repeatedly repositions the pointer. Small movements accumulate across frames instead of being lost to rounding at high refresh rates.
  • Cleanup after closing: fixed an issue where borders and window numbers could remain after closing a window with X.

0.10.0 ​

重要功能更新:从操控鼠标,到安排整个工作区。 KeySteer 新增完整的窗口管理模式,移动、分屏、平铺、标签分组与布局复用,都可以留在键盘上完成。

  • Window 窗口管理:按 Alt+W 进入(macOS 为 Option+W),移动、调整大小、居中、最大化/最小化、跨屏移动或关闭窗口,也能调整应用与系统的音量、静音和音频输出设备。
  • 按任务选择整理方式:Quick 快捷分屏;Editor 自动平铺、交换窗口、切分和调整区域;Tabs 自动整理同应用窗口,也能自由组合标签组。通过 Restore 复用已保存的布局和标签模板;保存时备注可留空,模板记住的是安排,不绑定应用名单。所有模式的按键与入口均可自定义。

同时,面向从旧版本升级的用户,回顾两项自 0.9.20 起提供的配置能力:

  • key_help 实时快捷键提示:忘记按键时,打开面板查看当前模式的按键与动作。在现有 [normal.bindings] 中加入 "?" = "key_help",重载配置后即可按 ? 切换显示。
  • Shift 层符号绑定:?、!、+ 等符号可以直接写成绑定键,按实际输入的字符匹配,让常用动作有更多顺手的入口。

详细操作与视频请看 窗口管理总览;提示面板与符号绑定见 配置参考。已有自定义绑定表的用户,请对照最新默认配置补入需要的新绑定。

Major feature update: from pointer control to a complete keyboard-driven workspace. Window adds movement, resizing, window-state and audio controls; Quick, Editor, and Tabs provide split layouts, tiling, and tab groups. Restore reuses saved arrangements with your current windows. All mode bindings and entry points are configurable. Also highlighted for users upgrading from older versions: live key_help hints and direct Shift-layer symbol bindings, available since 0.9.20. See the window management guide for instructions and demos.

0.9.21 ​

新增键盘模拟鼠标侧键点击,支持 Windows 和 macOS。在现有 [normal.bindings] 中加入以下配置,重载后进入 Normal 模式,点按 T / Y 即可模拟两个侧键:

toml
t = "mouse_x1"
y = "mouse_x2"

侧键通常用于后退 / 前进,具体行为由应用决定;也支持 press mouse_x1、release mouse_x1 和 toggle mouse_x2 等按下、释放及锁定操作。

Added keyboard-triggered mouse side-button clicks on Windows and macOS. Add the bindings above to your existing [normal.bindings], reload the configuration, then tap T / Y in Normal mode. Side buttons usually navigate Back / Forward, depending on the application. Explicit press, release, and toggle actions also support these buttons.

0.9.20 ​

  • 新增实时按键提示面板,可查看当前模式可用的按键与动作,并自定义面板样式。
  • 新增鼠标侧键绑定,支持组合键及按住执行动作。
  • 支持直接绑定 ?、!、+ 等符号;网页配置模拟器新增完整符号键位和按键提示预览。

Added a live key-help panel with customizable styling, mouse side-button bindings with chord and hold support, and direct symbol bindings such as ?, !, and +. The web configuration simulator now includes all shifted symbol keys and a key-help preview.

0.9.19 ​

  • Window Mover 默认快捷键改为 Primary+D,可在配置中自定义;Primary+S 独立切换鼠标所在显示器。
  • 网页配置模拟器新增窗口移动和 precision_toggle、slow_toggle、fast_toggle 动作配置,支持导入、编辑和导出。

Window Mover now defaults to Primary+D, with configurable bindings and independent Primary+S pointer-display switching. The web configuration simulator now supports importing, editing, and exporting window-movement and speed-toggle actions.

0.9.18 ​

修复状态栏 Reload Configuration 后新配置的按键路由丢失,保存并重载后无需退出程序。

Fixed lost key routes after Reload Configuration, so saved settings take effect without quitting.

0.9.17 ​

新增 precision_toggle、slow_toggle 和 fast_toggle 速度模式切换功能,按下即可进入速度模式,无需持续按住。

Added precision_toggle, slow_toggle, and fast_toggle speed-mode toggles. Press once to enter a speed mode without holding the key down.

0.9.16 ​

改进 Window Mover:最大化窗口现在可直接移到另一块显示器。

Improved Window Mover: maximized windows now move directly to another display while staying maximized。

0.9.15 ​

新增 Window Mover 插件:将鼠标放在应用窗口上,按 Primary+S+D 即可把窗口和鼠标一起移到下一块显示器,并保持窗口内的相对位置。单独按 Primary+S 仍只切换鼠标所在显示器;可使用 move_window previous 或 move_window <显示器编号> 自定义其他目标。

Added the Window Mover plugin: point at an application window and press Primary+S+D to move both the window and pointer to the next display while preserving the pointer's relative position. Primary+S alone still switches the pointer display. Configure move_window previous or move_window <display number> for other destinations.

0.9.13 ​

重整内部配置、模式与运行时边界并优化大批量 UI Hint 标签生成,在保持原有匹配、遮挡和显示层切换语义的同时减少分配;Windows 正式签名版现在支持下载后验证同一发布者、自动替换和重启,启动失败会恢复旧版本。

Reorganized the internal configuration, mode, and runtime boundaries and optimized large UI Hint label batches without changing matching, occlusion, or display-layer switching semantics. Signed Windows releases can now verify the same publisher, replace and restart automatically after downloading, and restore the previous version if startup fails.

0.9.12 ​

修复 macOS 上 UI Hint 视觉识别失败、状态栏图标不显示、运行中撤销辅助功能权限可能造成输入卡住,以及滚动列表的窗口外元素仍生成标签的问题。

Fixed UI Hint visual recognition failures, missing top status icons, input becoming unresponsive after Accessibility access was revoked, and hints appearing for off-screen list items on macOS.

0.9.11 ​

提升输入与 UI Hint 的响应速度,减少 OCR 扫描等待,并加强 Windows 与 macOS 的取消和资源清理,让连续使用更流畅稳定。

Improved input and UI Hint responsiveness, reduced OCR scan waits, and strengthened cancellation and resource cleanup on Windows and macOS for smoother, more reliable repeated use.

0.9.10 ​

修复拖拽自动释放后鼠标按住提示和按下颜色可能残留的问题,并减少模式指示器刷新时的临时分配与重复处理,让输入状态清理和指针提示更稳定、轻快。

Fixed held-mouse text and pressed colors sometimes remaining after automatic drag release, while reducing temporary allocations and duplicate work in shared indicator and input-state handling.

0.9.9 ​

新增可选的修饰键拖拽自动释放:长按鼠标键后可透传任意组合的修饰键,并在指针停止移动后自动松开鼠标键;默认关闭。

Added optional automatic release for modifier-assisted dragging: after holding a mouse button, any modifier combination can pass through and the button is released when pointer movement stops; disabled by default.

0.9.8 ​

修复与此前鼠标长按同类的键盘 toggle 状态问题:多个修饰键现在可在激活键前后立即锁定,松开物理键后仍保持按下,且不会把 toggle 激活键组合透传给当前窗口。

Fixed the keyboard toggle state issue caused by the same kind of input transition as the earlier mouse long-press bug: multiple modifiers can now latch immediately in either order, remain held after their physical keys are released, and no longer pass the toggle activation chord to the focused window.

0.9.7 ​

修复 Issue #1:鼠标按键进入按下状态前可能意外触发一次点击;同时将 Rust 工具链升级至 1.98。

Fixed Issue #1, where a click could be triggered accidentally before a mouse button entered its held state, and upgraded the Rust toolchain to 1.98.

0.9.6 ​

UI Hint 针对常见的 129–256 个标签新增会话级复用工作区、精确的 X 轴扫描和二元重叠组快速路径,

UI Hint now uses a reusable session workspace, an exact X-axis sweep, and a fast path for two-label overlap groups in the common 129–256-label range while preserving the inline path through 128 labels.

0.9.5 ​

Windows UI Hint 现在扫描每轮提交时鼠标下的窗口组,窗口上下文变化会立即清除旧标签并重新定位,不占用失败重试次数;Hybrid 同时共享单份扫描计划,并在返回 Normal 或 Idle 时完整取消识别与释放本轮资源。

Windows UI Hint now scans the window group under the pointer at submission time. Window-context changes immediately clear stale hints and retarget without consuming retries, while Hybrid shares one scan plan and fully cancels recognition and releases generation resources when returning to Normal or Idle.

0.9.4 ​

跨平台 UI Hint 统一使用零分配文字分析和精确前缀高亮,并修正最终视觉层切换。

Cross-platform UI Hint now shares allocation-free text analysis and exact prefix highlighting, with corrected final visual-layer cycling.

0.9.3 ​

UI Hint 标签进一步收紧边距并校正跨平台文字垂直居中,输入前缀现在按实际字符范围精确变色;macOS 同时减少每个标签的原生图层,避免窄字母高亮残缺或溢出。

UI Hint labels now use tighter spacing and improved cross-platform vertical centering, while exact typed-prefix coloring on macOS also uses fewer native layers to prevent incomplete or overflowing highlights.

0.9.2 ​

Windows UI Hint 默认改用 Hybrid,并行合并 UI Automation 与视觉结果以补足窗口控制按钮;标签更紧凑易读且位置略微上移,同时进一步加快分块 OCR 的首批显示与覆盖层响应,修复重扫位置更新竞态,并收紧资源清理与安全边界。

Windows UI Hint now defaults to Hybrid, merging UI Automation and visual results in parallel to cover window controls, with more compact, readable, and slightly higher labels, earlier tiled OCR results, faster overlay response, a rescan position-race fix, and tighter cleanup and safety boundaries.

0.9.1 ​

Windows 系统 OCR 会按 CPU 与图片尺寸自动并行切分、流式显示每块结果,并按实际可用能力跳过不需要的识别资源。

Windows system OCR now tiles by CPU and image size, streams completed regions, and skips unavailable OCR resources entirely.

0.9.0 ​

Windows UI Hint 新增按需双 OCR,扫描结果更完整;同时降低截图延迟与峰值内存,退出后立即清理识别资源。

Windows UI Hint adds on-demand dual OCR with lower capture latency, lower peak memory, and immediate cleanup after scanning.

0.8.14 ​

进一步降低普通输入与 UI Hint 的尾延迟和临时分配,并收紧 Windows/macOS 原生线程与 Unsafe 安全边界。

Further reduce input and UI Hint tail latency and temporary allocations while tightening native thread and unsafe boundaries on Windows and macOS.

0.8.13 ​

UI Hint 扫描结果改为零拷贝传递,快捷键注入减少临时分配,并进一步收紧跨平台 Unsafe 边界。

UI Hint now consumes scan results without cloning, chord injection avoids temporary allocations, and cross-platform unsafe boundaries are tighter.

0.8.12 ​

修复 Windows/macOS 检查更新失败、Windows 模拟器入口误开文件管理器及更新线程退出清理问题。

Fix update checks on Windows and macOS, open the simulator in the Windows browser, and clean up update workers reliably.

0.8.11 ​

新增从 Windows 托盘或 macOS 顶部状态图标一键将当前配置安全带入网页模拟器,并修复 macOS 检查更新闪退及更新线程退出清理问题。

Open the current configuration safely in the web simulator from the Windows tray or macOS top status icon, and fix macOS update-check crashes and worker cleanup on exit.

0.8.10 ​

UI Hint 退出后会立即取消过期扫描、重复进入依然快速,并修复 macOS 撤销辅助功能权限时可能卡住的问题。

UI Hint now cancels stale scans immediately on exit, keeps repeated entry fast, and fixes a potential hang when macOS Accessibility permission is revoked.

0.8.9 ​

UI Hint 扫描与重叠切换更稳定,启动和输入响应更快、内存占用更低,并进一步收紧原生资源与 Unsafe 安全边界。

UI Hint scanning and overlap switching are more reliable, startup and input are faster with lower memory use, and native resource and unsafe boundaries are tighter.

0.8.8 ​

输入响应和 UI Hint 扫描更快、内存与安装体积更小。

Input response and UI Hint scanning are faster with lower memory use and a smaller package.

0.8.7 ​

Windows 和 macOS 的光标与提示移动更加流畅,组合按键和长按操作也更快、更省内存。

Cursor and indicator movement is now smoother on Windows and macOS, while key combinations and hold actions are faster and use less memory.

0.8.6 ​

修复 n = "toggle":可单独长按 n 让它保持按下,和键盘或鼠标按键组合时无论先后顺序都能正确锁定,短按 n 仍会全部松开。

Fixed n = "toggle": hold n alone to keep it pressed, use it with keyboard or mouse keys in either order to lock them correctly, and tap n to release everything.

0.8.5 ​

Windows 和 macOS 的移动、显示、按键响应及界面查找更快、更省内存,同时保持原有配置和操作方式不变。

Windows and macOS now feel faster and use less memory for movement, display, keyboard input, and UI search, with no changes to existing configuration or controls.