进阶
进阶
全局覆盖
defoverrides 可选配置项允许您创建全局密钥覆盖,无论使用什么操作来生成这些密钥。它接受成对的列表:
- 被替换的输入键列表
- 用于替换输入键的输出键列表
输入和输出列表都接受 0 个或多个修饰键(例如 lctl、rsft)和 1 个非修饰键(例如 1、bspc)。
配置文件中只允许零个或一个解覆盖。
笔记 | 根据您的用例,您可能需要调整 defcfg 中的 override-release-on-activation 。 |
例子:
;; Swap numbers and their symbols with respect to shift
(defoverrides
(1) (lsft 1)
(2) (lsft 2)
;; repeat for all remaining numbers
(lsft 1) (1)
(lsft 2) (2)
;; repeat for all remaining numbers
)
包含其他文件
include 可选配置项允许您将其他文件包含到配置中。此配置接受单个字符串,即文件路径。文件路径可以是绝对路径或相对路径。该路径将相对于定义的配置文件。
在撰写本文时,包含只能放置在顶层。包含的文件也不能包含包含本身。
不存在的文件将被忽略。
例子:
;; This is in the file initially read by kanata, e.g. kanata.kbd
(include other-file.kbd)
;; This is in the other file
(defalias
included-alias XX
;; ...
)
;; This is in the other file
(deflayer included-layer
;; ...
)
特定于平台的配置
如果您将任何顶级配置项放入以平台开头的列表中,它将成为特定于平台的配置,仅对指定平台有效。
句法:
(platform (applicable-platforms) ...)
适用平台的有效值为:
win
winiov2
wintercept
linux
macos
例子:
(platform (macos)
;; Only on macos, use command arrows to jump/delete words
;; because command is used for so many other things
;; and it's weird that these cases use alt.
(defoverrides
(lmet bspc) (lalt bspc)
(lmet left) (lalt left)
(lmet right) (lalt right)
)
)
(platform (win winiov2 wintercept)
(defalias run-my-script (cmd #| something involving powershell |#))
)
(platform (macos linux)
(defalias run-my-script (cmd #| something involving bash |#))
)
环境条件配置
句法:
(environment (env-var-name env-var-value) ...)
env-var-name 和 env-var-value 项可以是任意字符串。该名称是读取的环境变量,用于确定是否使用配置。如果环境变量的值(仅在 kanata 启动时设置)与 env-var-value 匹配,则使用该配置;否则它会被忽略。如果环境变量是空字符串并且该变量完全未设置/丢失,则 env-var-value 的空字符串(“”)将使用该配置。
例子:
(environment (LAPTOP lp1)
(defalias met @lp1met)
)
(environment (LAPTOP lp2)
(defalias met @lp2met)
)
在当前终端进程中设置环境变量:
# powershell
$env:VAR_NAME = "var_value"
# bash
VAR_NAME=var_value
输入和弦/组合 (v2)
您可以定义单个 defchordsv2 配置项。这使您能够定义全局输入和弦行为。人们可能还会发现此功能在其他项目中被称为“组合”的另一个名称。
输入和弦使您能够快速连续按下两个或更多键来激活与通常与这些键关联的不同操作。激活和弦时,按下的顺序并不重要;重要的是按下的顺序。当按下属于和弦的所有琴键时,无论按下顺序如何,都会激活该动作。
defchordsv2 功能的配置如下所示:
语法示例
(defchordsv2
(participating-keys1) action1 timeout1 release-behaviour1 (disabled-layers1)
...
(participating-keysN) actionN timeoutN release-behaviourN (disabled-layersN)
)
该配置由 5 元组组成:
$参与键 | 这些是您将在 defsrc 中使用的键名称。每个和弦必须至少定义两个调。每个和弦列表必须是唯一的。 |
$行动 | 这些是您在 deflayer 或 defalias 中配置的操作。如果在超时时间内所有参与键都被激活,则该操作将激活。 |
$超时 | 如果按下所有参与键,则激活和弦动作的时间(单位:毫秒);否则按键将由活动层处理。当第一个参与者被按下时,时间开始。 |
$release-behavior | 这必须是首次发布或全部发布; first-release 表示当第一个参与者被释放时,该和弦动作才会被释放,而 all-released 表示只有当所有参与者被释放时,该和弦动作才会被释放。 |
$disabled-layers | 禁用此和弦的图层名称列表。 |
输入和弦有一个相关的 defcfg 项:chords-v2-min-idle。当发生任何非和弦激活时,超时从和弦-v2-min-idle 配置的持续时间开始(单位:毫秒)。在此超时到期之前,所有输入将立即跳过和弦处理并由活动图层处理。
重要的 | 选择输入和弦 v2 时,您必须启用并发点击保持。当被和弦激活时,这是为了获得更灵敏的点击保持体验而强制执行的。 |
例子:
(defcfg concurrent-tap-hold yes)
(defchordsv2
(a s) c 200 all-released (non-chord-layer)
(a s d) (macro h e l l o) 250 first-release (non-chord-layer)
(s d f) (macro b y e) 400 first-release (non-chord-layer)
)
笔记 | 另请参阅 v1 和弦,它们的配置不同并且可以按层定义。 |