按应用配置
在 config.toml 中编写按应用覆盖层,让 OpenLogi 根据前台应用自动切换按键绑定。
按应用配置让 OpenLogi 根据前台应用自动切换设备的按键绑定。后台监视器每秒读取一次前台应用的标识(macOS 上是 bundle id,如 com.microsoft.VSCode);当它变化时,你为该应用编写的覆盖层会叠加到设备的全局 bindings 之上——按应用条目优先,未列出的按键回落到全局映射。其作用范围严格限于按键绑定——手势、DPI 预设与灯效仍是按设备生效,不随应用切换。
在 GUI 中
GUI 目前还没有按应用编辑器。动作选择器只能编辑设备的全局 bindings;覆盖层需要在 config.toml 中手写。界面上呈现了两处:
- 当前配置(Active profile) —— 配置卡上的只读一行,把前台应用标识显示为当前配置;没有前台应用时显示 Default profile 标签。它只是状态展示,并非编辑器。
- 自动切换 —— 完全自动,无任何控件。当监视器报告新的应用标识时,OpenLogi 会重建内存中的绑定映射并交给事件钩子,因此无论哪个窗口拥有焦点,按下按键都会立即套用新应用的覆盖层。
编写覆盖层
在 [devices.<key>.per_app_bindings."<app-id>"] 下添加一个表,以确切的应用标识为键,保存一份局部的「按键 → 动作」映射。你列出的按键会在该应用处于前台时覆盖全局绑定;你省略的按键则保留其全局值。
[devices.2b042.bindings]
Back = "BrowserBack"
Forward = "BrowserForward"
# 当 VS Code 在前台时,Back 变为 Undo,Forward 变为 Redo。
[devices.2b042.per_app_bindings."com.microsoft.VSCode"]
Back = "Undo"
Forward = "Redo"值是原样书写的动作名。覆盖层只会新增或覆盖键——绝不会移除键,所以若想让某按键在某应用中不做任何事,应将其设为 None,而不是省略它。
匹配按应用标识精确进行——没有通配符或模式匹配,因此前台标识必须与某个 per_app_bindings 键逐字符一致。切换采用轮询,间隔约 1 秒,所以切换应用后可能有最多一秒的延迟。
在 macOS 上,应用键是 bundle id(com.microsoft.VSCode);在 Linux 上则是活动窗口的 X11 WM_CLASS 类名,因此覆盖层在 X11 下可用——在 Wayland 下仅对 XWayland 窗口生效;原生 Wayland 窗口不报告类名,会回落到 Default profile。Windows 的前台监视器尚未接通。此外,与当前所有重映射一样,操作系统钩子接管侧边的 Back / Forward 键;中键、模式切换键与拇指轮的捕获已可配置,但硬件层面的捕获仍在开发中,手势键的分方向绑定正在落地(见路线图)。
状态: macOS 已发布;Linux 在 X11 下已发布(Wayland 仅经 XWayland)。在 config.toml 中编写;由操作系统前台应用 API 驱动,而非某个 HID++ 功能。