Skip to content

Releases: dccif/KeySteer

KeySteer v0.10.26

Choose a tag to compare

@github-actions github-actions released this 27 Sep 15:59
67526bd

更新内容 / What's Changed

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.

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.25...v0.10.26

KeySteer v0.10.25

Choose a tag to compare

@github-actions github-actions released this 27 Sep 05:29
86ea8df

更新内容 / What's Changed

优化 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
p50 160 ns 136 ns 15.0%
p95 163 ns 138 ns 15.3%
p99 205 ns 180 ns 12.2%

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.24...v0.10.25

KeySteer v0.10.24

Choose a tag to compare

@github-actions github-actions released this 24 Sep 04:51
c2d718d

更新内容 / What's Changed

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

  • Optimized memory usage during UI Hint scans.

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.23...v0.10.24

KeySteer v0.10.23

Choose a tag to compare

@github-actions github-actions released this 23 Sep 14:37
e72ce57

更新内容 / What's Changed

  • 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.

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

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.22...v0.10.23

KeySteer v0.10.22

Choose a tag to compare

@github-actions github-actions released this 23 Sep 03:23
eae9ffd

更新内容 / What's Changed

  • 破坏性改动: 模式标识符移除 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.

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

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.21...v0.10.22

KeySteer v0.10.21

Choose a tag to compare

@github-actions github-actions released this 22 Sep 15:48
2311ba7

更新内容 / What's Changed

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

  • 模式标识符支持按模式配置鼠标左下/右下/左上/右上位置和任意有符号偏移,并可独立覆盖字号、颜色等样式;默认保持原位置。配置示例见 模式标识符样式与位置。

  • 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 support per-mode placement at any of the four pointer corners, signed offsets, and independent font/color overrides, preserving the original default location. See mode-badge-style-and-position for configuration.

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.20...v0.10.21

KeySteer v0.10.20

Choose a tag to compare

@github-actions github-actions released this 22 Sep 13:48
5e1f6f6

更新内容 / What's Changed

  • 新增 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, with configurable entry, exit, and editing bindings.

  • Supports borrowing Normal with primary and optional binding inheritance; fixed screen-switch results being delivered to the base mode instead of the temporary mode.

  • Text Input hides its text badge by default. Home-row editing mappings and Ctrl/Shift variants are provided as commented, opt-in examples.

简单启用与使用

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

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

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

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

# 可选:先向应用发送 Enter,再返回 Normal。
# 用下面两行替换上面的合并绑定:
# '\ 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 的临时文本输入。

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.19...v0.10.20

KeySteer v0.10.19

Choose a tag to compare

@github-actions github-actions released this 22 Sep 10:08
0f37508

更新内容 / What's Changed

  • 优化 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.

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.18...v0.10.19

KeySteer v0.10.18

Choose a tag to compare

@github-actions github-actions released this 21 Sep 04:22
135b5f4

更新内容 / What's Changed

  • 改进 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.

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.17...v0.10.18

KeySteer v0.10.17

Choose a tag to compare

@github-actions github-actions released this 20 Sep 13:08
3bce69c

更新内容 / What's Changed

  • 临时模式现在优先匹配完整组合键,并支持 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.

macOS manual installation

If you install KeySteer.app manually from this official GitHub Release and macOS Gatekeeper refuses to open it, move the app to /Applications and run:

如果你从本项目的官方 GitHub Release 手动安装 KeySteer.app,但 macOS Gatekeeper 阻止打开,请先将应用移到 /Applications,然后执行:

sudo xattr -cr /Applications/KeySteer.app

Full Changelog: v0.10.16...v0.10.17