mac 的 karabiner 改键软件 能以普通 的按键 作为修饰键吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xboxv
V2EX    问与答

mac 的 karabiner 改键软件 能以普通 的按键 作为修饰键吗?

  •  
  •   xboxv 190 天前 2533 次点击
    这是一个创建于 190 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 按下 d 的时候实现 jikl 分别映射为上下左右.
    https://karabiner-elements.pqrs.org/docs/manual/configuration/configure-complex-modifications/
    看这个官方文档 好像是可以实现. 如果是的话,那这很强大啊.


    windows 中 powerToys 中也能配置按键映射, 但是 只能 快捷键必须以修改键(ctrl win alt )开头.

    windows 中有什么解决方案吗?
    21 条回复    2025-04-06 03:47:16 +08:00
    zmxnv123
        1
    zmxnv123  
       190 天前
    autohotkey
    Moosems
        2
    Moosems  
       190 天前
    @zmxnv123 ahk 也不太好做到吧?
    ```
    d & k:: {
    Send "{Down}"
    }
    ```
    这种配置之后 这个 d 按键就废了, 没法正常使用了
    xell
        3
    xell  
       190 天前
    Karabiner 可以做到的,它确实很强大,例如参见 https://brettterpstra.com/2025/03/30/keybindings-home-row-redux/ ,这里用了分号 ; 作为修饰键与字母键 J/I/K/L 联用。

    至于 Windows 我就不清楚了。
    zmxnv123
        4
    zmxnv123  
       190 天前
    @Moosems 问下 chatgpt 应该有别的写法
    Moosems
        5
    Moosems  
       190 天前
    @xell 那你这样用分号的话, 分号还能单独使用吗?
    Moosems
        6
    Moosems  
       190 天前
    @zmxnv123 #4 没有解决方案, 这个问题我之前研究过, 还专门咸鱼找人写脚本, 都做不到.

    https://blog.csdn.net/fengyufuchen/article/details/146202077

    有人能做到 我 v50
    Moosems
        7
    Moosems  
       190 天前
    @xell 不得不感叹 mac 生态 确实 有非常多的 优秀 软件,我已经遇到好几个了, 而且都是 windows 的没有的.
    gpt5
        8
    gpt5  
       190 天前 via iPhone
    karabiner 完全可以实现
    Moosems
        9
    Moosems  
       190 天前
    @gpt5

    @xell
    我还有几个疑问:
    1.这样配置之后, 不会影响 d 按键的正常输入吧?

    正常 逻辑是 按下 d 之后再次按下 k 触发热键, d 和 k 的按下会存在延迟, 比如延迟 200ms, 那么是不是意味着 正常按下 d 之后, 如果想要得到正常的字符 d 输出, 肯定会延迟 200ms 后才会输出 d?

    2. 假设 我们是 f 和 n 触发 down, 如果我 打方法的拼音 "fangfa" 可能我的输入速度会很快,那么这个时候 会不会触发 f 和 n 的热键? 毕竟 fangfa 拼音里面 有 f 和 n.
    zmxnv123
        10
    zmxnv123  
       190 天前
    @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
        11
    zmxnv123  
       190 天前
    @zmxnv123

    > 来自 chatgpt
    说明:
    * 表示「无论是否按了其他修饰键(如 Shift 、Ctrl )」都触发。

    k_down 是一个布尔变量,用来判断 k 是否被按着。

    在 d 被按下时,稍微 Sleep 等待一下(比如 30ms ),看看 k 是否也正被按着。

    如果 k 正在按着,就发送 {Down},否则发送普通的 d 。

    可选优化:
    你可以把 Sleep 调整到 10~50 毫秒之间,看哪个延迟最合适,既能准确判断组合,又不影响打字体验。

    需要我帮你扩展更多组合键逻辑也可以说一声~
    Moosems
        12
    Moosems  
       190 天前
    @zmxnv123 #11 这个方案不行. 回头你可以试下, 有兴趣我们可以探讨下.
    xell
        13
    xell  
       190 天前
    分号 ; 当然可以单独使用,只是有个副作用,就是不能连发了(按着不动然后输出很多个分号),因为从原理上,按着不动的时候,触发的是作为修饰键的功能。不过你现在寻求的是 Windows 下面的解决方案,肯定是完全不同的机制。AutoHotkey 也很强大,我倒有点很吃惊它做不到15 年前我用它来配合 Total Commander 实现 vim keybinding 的时候就领教过。或许你可以再跟 AI 探讨一下可能性。
    jheroy
        14
    jheroy  
       190 天前 via iPhone
    我用 karabiner 就是为了这个功能, 其它平台可以使用 kmonad ,这个是跨平台的,我在 Linux 可以实现 karabiner 一样的功能,Windows 应该也可以
    zq11211277
        15
    zq11211277  
       190 天前
    jheroy
        16
    jheroy  
       190 天前 via iPhone
    @Moosems
    @xell 可以实现;单独使用,并且不影响连发。karabiner 配置;+j 的快捷键是需要; down - j down - j up - ; up 这样的顺序才触发快捷键, 单独; down 然后马上就; up 了的话那么就直接输入了;, 如果一直; down 超过配置的延迟时间那么触发;的连续输入。 其实配置 karabiner 可以用一个工具 GokuRakuJoudo 这个要直观很多,karabiner 的配置比较冗长
    gpt5
        17
    gpt5  
       190 天前
    karabiner 有两种实现方法,
    1 是把 d 映射为:单独按是时 d ;与其它键组合时是一个修饰键(比如右 opt)。然后再映射那个修饰键+hjkl 为方向键
    2 是直接把 d+h 映射为左,d+j 直接映射为下,以此类推。
    两种方法都不会影响单独按。
    但有一定几率误触发,我就有很多字母+字母的快捷键组合,用了后才知道,其实我们打字的时候经常会有两个键一起按的情况,需要结合自己的习惯调节组合键位和判定时间。
    xboxv
        18
    xboxv  
    OP
       190 天前
    @zq11211277 这个工具很 nice, 感觉就像开了天眼一样. 基本上解决了问题,大有研究
    juggtt213
        20
    juggtt213  
       190 天前 via iPhone
    我之前也想过类似的,不过是 capslock 做修键,karabiner 这样弄修饰键其实会有个问题,就是连续输入的时候要等待一定的延迟,你如果是想用 vim 风格的按键,那应该会连按 dd 吧,这样其实有点影响

    mac 貌似自带全局 emacs 那种快捷键,如果只是上下的话,比如自动补全切换选中,直接 ctrl + n/p 就够用了
    iX8NEGGn
        21
    iX8NEGGn  
       189 天前
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1361 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:45 PVG 00:45 LAX 09:45 JFK 12:45
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86