OpenLogi

按应用配置

让鼠标绑定跟随指针或焦点,并为焦点应用选择完整的 Actions Ring 布局。

按应用配置让 OpenLogi 根据目标应用自动切换设备的按键绑定。鼠标配置默认跟随指针下的应用,键盘配置跟随焦点应用。目标应用的稀疏叠加会覆盖到设备的全局 bindings 之上:按应用的条目优先,未列出的按键回落到全局映射。Actions Ring 跟随焦点应用,选择的是完整布局而非叠加。DPI 预设、滚动与灯光始终是设备级的。

选择鼠标的目标应用

在 Settings → General → Mouse button profiles 中选择 Mouse pointer(默认值)或 Focused application。同一项偏好也保存在 config.toml 中:

[app_settings]
mouse_profile_target = "pointer" # 也可以设为 "focused"。

macOS、Windows 与 X11 支持按指针选择目标。指针位于桌面时,OpenLogi 使用设备的全局绑定。Wayland 等不支持的会话会使用焦点应用。旧配置若省略这项偏好,也会使用 pointer。

OpenLogi 不会为了发送快捷键而让后台窗口获得焦点。按指针选择目标时,鼠标绑定若产生按键输入或执行工作流,只有指针下的窗口获得焦点时才会执行;否则会跳过。切换桌面等全局动作无需改变焦点即可执行。暂时无法识别指针目标时,不会将目标当作桌面。

应用标识符

标识符就是各平台为目标应用上报的值;除下文说明的 Windows exe: 兜底外,必须与配置键完全一致,没有通配符,也没有模式匹配。

平台标识符示例
macOSBundle idcom.microsoft.VSCode
Linux(X11 / XWayland、GNOME Shell)WM_CLASS 类名Code
Linux(wlroots 合成器)xdg-shell app_idcode
Windows小写的可执行文件路径,或 exe:<name>.exeexe:sharex.exe

Linux 各后端并不共用同一套命名空间:在 wlroots 合成器下(按 app_id)编写的配置在 GNOME 或 X11(按 WM_CLASS)下不会匹配,反之亦然。请按你当前会话实际上报的形式编写。

在 Windows 上,两种形式同时存在时以精确路径优先,因此 exe: 适合作为商店应用和会自更新、路径会变的安装方式的稳定兜底。

在 GUI 中

选择鼠标、打开 Buttons,再使用编辑器上方的 Profile 栏:

  1. Default 编辑设备级绑定。
  2. Add App 会先列出代理最近观察到的前台应用;展开 All Applications 可搜索已安装应用目录。优先选择观察到的标识符,因为它就是运行时会匹配的值;已安装应用的标识符只是针对当前平台的尽力推断,尤其在 Linux 上如此。
  3. 选择应用,只修改需要不同表现的按键。继承的按键会标记为继承自 Default。Use the Default profile 会删除该按键的覆盖;删除整个配置档会让全部按键恢复继承。

仅选择应用不会在磁盘上创建空配置档;第一次修改按键时才会写入稀疏叠加。运行时仍会自动切换,不受编辑器当前打开哪个配置档影响。

编写叠加

在 [devices.<key>.per_app_bindings."<app-id>"] 下添加一张表,内容是部分「按键 → 动作」映射。该应用成为鼠标或键盘的目标应用时,列出的按键会覆盖全局绑定;未列出的按键保持全局取值。

[devices."unit:6be9d300".bindings]
Back = "BrowserBack"
Forward = "BrowserForward"

# VS Code 是目标应用时,Back 变成撤销、Forward 变成重做。
[devices."unit:6be9d300".per_app_bindings."com.microsoft.VSCode"]
Back = "Undo"
Forward = "Redo"

取值是原样书写的动作名。叠加只会新增或覆盖键,永远不会删除键,因此若要让某个按键在特定应用中什么都不做,请把它设为 None,而不是省略它。按应用的叠加总是把按键映射到单个动作;按方向的手势映射与短按 / 长按组合始终是设备级的。若在某个应用中给手势键覆盖一个动作,该应用里就不再执行各方向手势;清除覆盖即可重新继承全局手势图。因此按应用编辑器只提供单动作选择器,不提供手势模式控件。

状态: macOS、Linux 与 Windows 均可用。在 Linux 上标识符取决于会话后端(X11 / XWayland、GNOME Shell 或 wlroots 合成器);三者都不可用的会话不会上报任何应用,一切回落到 Default profile。应用识别由操作系统 API 驱动,而非某个 HID++ 特性;同一组稀疏表仍可在 config.toml 中编辑。

本页目录