如何使用 autohotkey 实现 ; 和 : 键互换 - V2EX
Dganzh

如何使用 autohotkey 实现 ; 和 : 键互换

  •  
  •   Dganzh Feb 3, 2024 2190 views
    This topic created in 853 days ago, the information mentioned may be changed or developed.

    个人觉得:更高频使用,不想每次都按 shift+;来输出:

    infoscope
        1
    infoscope  
       Feb 3, 2024 via iPhone
    PowerToys 里有改键工具
    Mithril
        2
    Mithril  
       Feb 3, 2024   1
    其实软件的话,就两种方法
    要么 hook 类的,比如 PowerToys 。但有的软件会顶掉你的 hook ,比如 mstsc 。
    另外就是驱动级的,比如 https://github.com/cajhin/capsicain 这类的。虽说他们用的驱动也是签过名的,但这种非常底层的映射也可能被某些程序视为恶意软件。


    最好用的,找个支持硬件改键的键盘。有的键盘固件支持这种功能,之前大 F 的某些款甚至还带跳线开关,不过开关只能映射几个键。

    自己选个方案,随便找找就行了。
    crazyweeds
        3
    crazyweeds  
       Feb 4, 2024
    autohotkey 应该非常简单,曾经用它直接换了键盘布局。。在一些场景下会失效,比如 qq 密码输入框,大概率是不行的。
    loginv2
        4
    loginv2  
       Feb 4, 2024   1
    楼上几位可能没有自己试过这个问题,楼主估计试过,这个问题我感觉并不好写,难点以上个 shift 和单独按键这俩事件不能冲突,另一个是;是关键字,需要处理转义,反正我写了半天是没成功,要么只有一个好使,要么就全都失灵
    给楼主另一个思路 ,单击输入 冒号,双击输入分号

    $`;::
    if pressesCount > 0 ; > 0 说明 SetTimer 已经启动了,按键次数递增
    {
    pressesCount += 1
    return
    }
    ;否则,这是新一系列按键的首次按键。将计数设重置为 1 ,并启动定时器:
    pressesCount = 1
    SetTimer, WaitKey, 400 ;在 400 毫秒内等待更多的按键。
    return

    WaitKey:
    SetTimer, WaitKey, off
    if pressesCount = 1 ;该键已按过一次。
    {
    Gosub singleClick
    }

    else if pressesCount = 2 ;该键已按过两次。
    {
    Gosub doubleClick
    }
    ;不论上面哪个动作被触发,将计数复位以备下一系列的按键:
    pressesCount = 0
    return

    singleClick:
    send :
    return

    doubleClick:
    send {;}
    return
    loginv2
        5
    loginv2  
       Feb 4, 2024
    不熟悉 ahk 语法,如果有大佬实现了楼主的想法,非常好奇是怎么实现的
    weijancc
        6
    weijancc  
       Feb 4, 2024
    @loginv2 #5 不用那么复杂的, ahk 可以配置不触发脚本内定义的逻辑, 用三行 ahk 就能实现楼主需求.

    ```ahk
    #UseHook on
    `;::SendInput, :
    :::SendInput, `;
    ```
    tyrone2333
        7
    tyrone2333  
       Feb 4, 2024
    我也一直在找对调的方法-- win 上没实现, mac 用 Karabiner 换键位倒是很简单
    sankemao
        8
    sankemao  
       Feb 4, 2024   1
    $`;::Send `:
    $+`;::Send `;
    Dganzh
        9
    Dganzh  
    OP
       Feb 4, 2024
    试了 8 楼的,可以了。
    感谢大家!
    About     Help     Advertise     Blog     API     FAQ     Solana     1250 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 23:59 PVG 07:59 LAX 16:59 JFK 19:59
    Do have faith in what you're doing.
    ubao msn 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