【QK】另一种分层按键的快捷键方案分享

效果展示

demo23

说明

之前分享过怎么使用连续按键来打开笔记(【技巧】使用连续按键来快速打开页面 )。

比如,按下 Ctrl+K+T 来打开今日笔记——当时使用的是插件 Sequence Shortcuts

但是渐渐地发现一些问题:

  • 可选的按键范围较小,比如 Ctrl+V 是默认的粘贴,你就没法分配 Ctrl+K+V 了,否则会冲突
  • 哪怕可以分配,在执行的时候也可能意外触发到原本的按键功能

加上最近看到 tmux (据说 vim 也有)支持「分层按键」特性——先按下 ctrl+b 会进入「第二层按键」,这个时候每个按键有自己单独的功能。

——于是想着自己实现一番。

原来的 Ctrl+K+T 的方案——按住 Ctrl 不动,连续按下 K 和 T,就可以替换成:
Ctrl+K, T——先按下 Ctrl+K,然后再按一下 T 键,执行命令。

不过 OB 原生实现不了这个需求,只能请出 Quicker 这尊神器。

Quicker 动作

使用 QK 的「等待按键」步骤,可以等待按下特定的按键后执行操作,并且拦截掉该按键,避免误操作。

所以做了这个动作:多层按键 - by Moy - 动作信息 - Quicker

具体的配置见动作说明页面。

依赖

这个动作需要 Obsidian 里安装 AdvancedURI 插件。

获取命令名称

可以用这个 TP 脚本:

<% (await tp.system.suggester((item) => item.name, app.commands.listCommands(f => f.name))).name %>

运行之后会弹出选框,列出所有的命令名称。
选择后就会把对应的命令名称输出在笔记里。

参考文档:

sequence shortcuts是可以实现Ctrl+K, T的吧, 无非就是Ctrl+KT这两个按键组成一个序列.

你说的对。

不过我使用的时候,第二个按键不会被拦截,那个字母会上屏:
image

比如我按下 Ctrl+K, Z 之后,功能会执行,同时也会在原地留下一个 z

可能和不同的输入法有关。你那边是没有这个问题的吗?

是中文输入法的问题. 要么先切换到英文输入法, 要么先开大写锁定再进行触发.
我个人基本都是用ahk来触发的sequence shortcuts热字符串命令, 而对中文输入法的屏蔽是在ahk里做的, 所以在ob层面上就更显简洁些.

嗯,明白了。

AHK 也是很 Nice 的,总之都是借助一些外部工具来实现对 OB 内的操作优化hh