Files
msime-windows/engine/contracts/tests/input_state_shortcuts.json
chr331andfanlusky 1c3bd7cb83 feat(server,ui-html,windows): 支持自定义“输入状态切换”中的快捷键 (#985)
* fix(windows): 支持标点切换快捷键改绑与取消绑定

* fix(shortcut): 对齐虚拟键并处理语音与窗口快捷键冲突

* fix(ui-html): 绑定标点快捷键前提示应用快捷键占用

* fix(ui-html): 仅对已知快捷键冲突提示确认

* feat(shortcuts): 支持自定义输入状态切换快捷键

* fix: keep shortcut editor buttons on one row

* fix(shortcuts): 限定输入状态快捷键为 Ctrl 组合

* fix: clarify shortcut override and punctuation lock behavior

* perf(server,windows): 提前筛选输入状态快捷键

* fix(windows,server,ui-html): 修正输入状态快捷键的兼容与保存问题

- windows: 未协商 InputStateShortcuts 时回退到旧的 Ctrl+Shift+E KeyEvent,
  新 DLL 配旧 Server 时英文候选快捷键不再失效
- windows: 全角快捷键与标点快捷键一样可在待处理按键后排队,不再漏给应用
- windows: Server 不可用时排队的英文候选切换按 FUNCTION_CANCEL 离线回放,
  不再丢弃其后的按键
- server: 非字符串配置值不再以 "!invalid" 作为 binding 发给设置页
- server: 仅三个输入状态快捷键路径强制回传配置快照;去掉 worker 中与
  reader 重复的协商检查;抽出 InputStateShortcutViews 去除重复转换
- ui-html: 保存后 5 秒未收到快照则恢复编辑器并提示重试

---------

Co-authored-by: fanlusky <1730976608@qq.com>
2026-10-16 03:31:19 +08:00

2 lines
2.3 KiB
JSON

{"actions":[{"key":"toggle_english_candidates","label":"英文候选","defaultBinding":"Ctrl+Shift+KeyE","editor":"englishCandidatesHotkey","binding":"Ctrl+Shift+KeyE","problem":""},{"key":"toggle_full_width","label":"全角 / 半角","defaultBinding":"Ctrl+Shift+Space","editor":"fullWidthHotkey","binding":"Ctrl+Shift+Space","problem":""},{"key":"toggle_punctuation","label":"中英文标点","defaultBinding":"Ctrl+Period","editor":"punctuationHotkey","binding":"Ctrl+Period","problem":""}],"reserved":[{"binding":"Ctrl+Shift+KeyF","label":"简繁切换"},{"binding":"Ctrl+F9","label":"语音输入"},{"binding":"Ctrl+Shift+F9","label":"语音输入"}],"warnings":[{"binding":"Ctrl+KeyA","label":"全选"},{"binding":"Ctrl+KeyC","label":"复制"},{"binding":"Ctrl+KeyV","label":"粘贴"},{"binding":"Ctrl+KeyX","label":"剪切"},{"binding":"Ctrl+KeyZ","label":"撤销"},{"binding":"Ctrl+KeyY","label":"重做"},{"binding":"Ctrl+KeyS","label":"保存"},{"binding":"Ctrl+KeyF","label":"查找"},{"binding":"Ctrl+KeyH","label":"替换"},{"binding":"Ctrl+KeyP","label":"打印"},{"binding":"Ctrl+KeyO","label":"打开"},{"binding":"Ctrl+KeyN","label":"新建"},{"binding":"Ctrl+KeyW","label":"关闭标签页或文档"},{"binding":"Ctrl+F4","label":"关闭文档"},{"binding":"Ctrl+KeyT","label":"新建标签页"},{"binding":"Ctrl+KeyL","label":"定位地址栏"},{"binding":"Ctrl+KeyR","label":"刷新"},{"binding":"Ctrl+KeyB","label":"加粗"},{"binding":"Ctrl+KeyI","label":"斜体"},{"binding":"Ctrl+KeyU","label":"下划线"},{"binding":"Ctrl+Shift+KeyV","label":"粘贴为纯文本"},{"binding":"Ctrl+Shift+KeyZ","label":"重做"},{"binding":"Ctrl+Shift+KeyS","label":"另存为"},{"binding":"Ctrl+Shift+KeyT","label":"重新打开关闭的标签页"},{"binding":"Ctrl+Space","label":"Windows 输入法切换"}],"keys":[{"code":"Space","vk":32,"label":"Space"},{"code":"Semicolon","vk":186,"label":";"},{"code":"Equal","vk":187,"label":"="},{"code":"Comma","vk":188,"label":","},{"code":"Minus","vk":189,"label":"-"},{"code":"Period","vk":190,"label":"."},{"code":"Slash","vk":191,"label":"/"},{"code":"Backquote","vk":192,"label":"`"},{"code":"BracketLeft","vk":219,"label":"["},{"code":"Backslash","vk":220,"label":"\\"},{"code":"BracketRight","vk":221,"label":"]"},{"code":"Quote","vk":222,"label":"'"}]}