20 条回复  ·  2175 次点击
zmxnv123 小成 2025-4-5 08:56:51
@Moosems 问的 chatgpt ,windows 没开机,你试下呢 ; 定义一个变量,追踪 k 键是否被按下 k_down := false ; 追踪 k 键的按下与松开状态 *k:: k_down := true return *k up:: k_down := false return ; d 键的逻辑判断 *d:: ; 等待一下看看是否 k 也被按下 Sleep, 30 if (k_down) { Send, {Down} } else { Send, d } return
zmxnv123 小成 2025-4-5 08:57:39
@zmxnv123 > 来自 chatgpt 说明: * 表示「无论是否按了其他修饰键(如 Shift 、Ctrl )」都触发。 k_down 是一个布尔变量,用来判断 k 是否被按着。 在 d 被按下时,稍微 Sleep 等待一下(比如 30ms ),看看 k 是否也正被按着。 如果 k 正在按着,就发送 {Down},否则发送普通的 d 。 可选优化: 你可以把 Sleep 调整到 10~50 毫秒之间,看哪个延迟最合适,既能准确判断组合,又不影响打字体验。 需要我帮你扩展更多组合键逻辑也可以说一声~
Moosems 初学 2025-4-5 09:07:24
@zmxnv123 #11 这个方案不行. 回头你可以试下, 有兴趣我们可以探讨下.
xell 小成 2025-4-5 09:25:26
分号 ; 当然可以单独使用,只是有个副作用,就是不能连发了(按着不动然后输出很多个分号),因为从原理上,按着不动的时候,触发的是作为修饰键的功能。不过你现在寻求的是 Windows 下面的解决方案,肯定是完全不同的机制。AutoHotkey 也很强大,我倒有点很吃惊它做不到——15 年前我用它来配合 Total Commander 实现 vim keybinding 的时候就领教过。或许你可以再跟 AI 探讨一下可能性。
jheroy 小成 2025-4-5 10:21:39
我用 karabiner 就是为了这个功能, 其它平台可以使用 kmonad ,这个是跨平台的,我在 Linux 可以实现 karabiner 一样的功能,Windows 应该也可以
zq11211277 初学 2025-4-5 10:22:54
windows 解决方案 https://github.com/xianyukang/MyKeymap
jheroy 小成 2025-4-5 10:34:06
@Moosems @xell 可以实现;单独使用,并且不影响连发。karabiner 配置;+j 的快捷键是需要; down - j down - j up - ; up 这样的顺序才触发快捷键, 单独; down 然后马上就; up 了的话那么就直接输入了;, 如果一直; down 超过配置的延迟时间那么触发;的连续输入。 其实配置 karabiner 可以用一个工具 GokuRakuJoudo 这个要直观很多,karabiner 的配置比较冗长
gpt5 小成 2025-4-5 10:48:59
karabiner 有两种实现方法, 1 是把 d 映射为:单独按是时 d ;与其它键组合时是一个修饰键(比如右 opt)。然后再映射那个修饰键+hjkl 为方向键 2 是直接把 d+h 映射为左,d+j 直接映射为下,以此类推。 两种方法都不会影响单独按。 但有一定几率误触发,我就有很多字母+字母的快捷键组合,用了后才知道,其实我们打字的时候经常会有两个键一起按的情况,需要结合自己的习惯调节组合键位和判定时间。
xboxv 楼主 小成 2025-4-5 11:13:30
@zq11211277 这个工具很 nice, 感觉就像开了天眼一样. 基本上解决了问题,大有研究
asnldm 小成 2025-4-5 12:09:49
可能有用 https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/from/simultaneous/
返回顶部