V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Dganzh
V2EX  ›  软件

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

  •  
  •   Dganzh · 272 天前 · 1285 次点击
    这是一个创建于 272 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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

    自己选个方案,随便找找就行了。
    crazyweeds
        3
    crazyweeds  
       271 天前
    autohotkey 应该非常简单,曾经用它直接换了键盘布局。。在一些场景下会失效,比如 qq 密码输入框,大概率是不行的。
    loginv2
        4
    loginv2  
       271 天前
    楼上几位可能没有自己试过这个问题,楼主估计试过,这个问题我感觉并不好写,难点以上个 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  
       271 天前
    不熟悉 ahk 语法,如果有大佬实现了楼主的想法,非常好奇是怎么实现的
    weijancc
        6
    weijancc  
       271 天前
    @loginv2 #5 不用那么复杂的, ahk 可以配置不触发脚本内定义的逻辑, 用三行 ahk 就能实现楼主需求.

    ```ahk
    #UseHook on
    `;::SendInput, :
    :::SendInput, `;
    ```
    tyrone2333
        7
    tyrone2333  
       271 天前
    我也一直在找对调的方法-- win 上没实现, mac 用 Karabiner 换键位倒是很简单
    sankemao
        8
    sankemao  
       271 天前   ❤️ 1
    $`;::Send `:
    $+`;::Send `;
    Dganzh
        9
    Dganzh  
    OP
       271 天前
    试了 8 楼的,可以了。
    感谢大家!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1810 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:36 · PVG 00:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.