![]() |
1
zmxnv123 4 天前
autohotkey
|
![]() |
3
xell 4 天前
Karabiner 可以做到的,它确实很强大,例如参见 https://brettterpstra.com/2025/03/30/keybindings-home-row-redux/ ,这里用了分号 ; 作为修饰键与字母键 J/I/K/L 联用。
至于 Windows 我就不清楚了。 |
6
Moosems 4 天前
@zmxnv123 #4 没有解决方案, 这个问题我之前研究过, 还专门咸鱼找人写脚本, 都做不到.
https://blog.csdn.net/fengyufuchen/article/details/146202077 有人能做到 我 v50 |
![]() |
8
gpt5 4 天前 via iPhone
karabiner 完全可以实现
|
9
Moosems 4 天前
|
![]() |
10
zmxnv123 4 天前
@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 |
![]() |
11
zmxnv123 4 天前
@zmxnv123
> 来自 chatgpt 说明: * 表示「无论是否按了其他修饰键(如 Shift 、Ctrl )」都触发。 k_down 是一个布尔变量,用来判断 k 是否被按着。 在 d 被按下时,稍微 Sleep 等待一下(比如 30ms ),看看 k 是否也正被按着。 如果 k 正在按着,就发送 {Down},否则发送普通的 d 。 可选优化: 你可以把 Sleep 调整到 10~50 毫秒之间,看哪个延迟最合适,既能准确判断组合,又不影响打字体验。 需要我帮你扩展更多组合键逻辑也可以说一声~ |
![]() |
13
xell 4 天前
分号 ; 当然可以单独使用,只是有个副作用,就是不能连发了(按着不动然后输出很多个分号),因为从原理上,按着不动的时候,触发的是作为修饰键的功能。不过你现在寻求的是 Windows 下面的解决方案,肯定是完全不同的机制。AutoHotkey 也很强大,我倒有点很吃惊它做不到——15 年前我用它来配合 Total Commander 实现 vim keybinding 的时候就领教过。或许你可以再跟 AI 探讨一下可能性。
|
14
jheroy 4 天前 via iPhone
我用 karabiner 就是为了这个功能, 其它平台可以使用 kmonad ,这个是跨平台的,我在 Linux 可以实现 karabiner 一样的功能,Windows 应该也可以
|
![]() |
15
zq11211277 4 天前
windows 解决方案 https://github.com/xianyukang/MyKeymap
|
16
jheroy 4 天前 via iPhone
|
![]() |
17
gpt5 4 天前
karabiner 有两种实现方法,
1 是把 d 映射为:单独按是时 d ;与其它键组合时是一个修饰键(比如右 opt)。然后再映射那个修饰键+hjkl 为方向键 2 是直接把 d+h 映射为左,d+j 直接映射为下,以此类推。 两种方法都不会影响单独按。 但有一定几率误触发,我就有很多字母+字母的快捷键组合,用了后才知道,其实我们打字的时候经常会有两个键一起按的情况,需要结合自己的习惯调节组合键位和判定时间。 |
![]() |
18
xboxv OP @zq11211277 这个工具很 nice, 感觉就像开了天眼一样. 基本上解决了问题,大有研究
|
19
asnldm 4 天前
|
![]() |
20
juggtt213 4 天前 via iPhone
我之前也想过类似的,不过是 capslock 做修饰键,karabiner 这样弄修饰键其实会有个问题,就是连续输入的时候要等待一定的延迟,你如果是想用 vim 风格的按键,那应该会连按 dd 吧,这样其实有点影响
mac 貌似自带全局 emacs 那种快捷键,如果只是上下的话,比如自动补全切换选中,直接 ctrl + n/p 就够用了 |