Autohotkey 中文论坛
怎样让两个中文冒号,变成两个英文冒号? - 可打印的版本

+- Autohotkey 中文论坛 (http://ahkcn.net)
+-- 版块: AutoHotkey (/forum-3.html)
+--- 版块: 提问交流 (/forum-6.html)
+--- 主题: 怎样让两个中文冒号,变成两个英文冒号? (/thread-6580.html)



怎样让两个中文冒号,变成两个英文冒号? - bootislands1 - 2017-09-25 05 : 56

需求
中文输入法下,连续输入两个冒号,自动变成英文的俩冒号,且输入法状态继续是中文

尝试
试过这样写,有效,但有副作用:
代码:
:*?Z:::::
        sendL("::")
        KeyWait, Shift
        SendInput, {Shift}
        return
副作用如下图:
[Image: 2017_09_25_888.gif]

还试过这样写,也有效,但副作用更大;
代码:
RShift up::    ;函数lastNKey(n)返回keyhistory中最近n次击键记录
    if ( lastNKey(5)[1] = ";" && lastNKey(5)[2] = ";" && lastNKey(5)[3] = ";" && lastNKey(5)[4] = ";" )
    {
        SendInput, {BS}{BS}
        sendL("::")
    }
    return

请教大家:有没不干扰其它按键的解决方案呢?Blush 谢谢


RE: 怎样让两个中文冒号,变成两个英文冒号? - abc001 - 2017-09-26 10 : 32

参考这扁文章http://blog.csdn.net/teshorse/article/details/5754732
代码:
::::;::   ;中文输入法下相当于要按四个键::;;变成::

    SendbyClip("::")

    return

sendbyclip(var_string)

{

    ClipboardOld = %ClipboardAll%

    Clipboard =%var_string%

    sleep 100

    send ^v

    sleep 100

    Clipboard = %ClipboardOld%  ; Restore previous contents of clipboard.

}

刚想到一个更简单的方法:
代码:
:::::: ;中文输入法下相当于要按三个:键变成::
send,{ASC 58}{ASC 58}
return



RE: 怎样让两个中文冒号,变成两个英文冒号? - bootislands1 - 2017-09-27 09 : 34

(2017-09-26 10 : 32)abc001 提到:  参考这扁文章http://blog.csdn.net/teshorse/article/details/5754732
代码:
::::;::   ;中文输入法下相当于要按四个键::;;变成::

    SendbyClip("::")

    return

sendbyclip(var_string)

{

    ClipboardOld = %ClipboardAll%

    Clipboard =%var_string%

    sleep 100

    send ^v

    sleep 100

    Clipboard = %ClipboardOld%  ; Restore previous contents of clipboard.

}

刚想到一个更简单的方法:
代码:
:::::: ;中文输入法下相当于要按三个:键变成::
send,{ASC 58}{ASC 58}
return

谢谢,解决了,这样写的:Blush
代码:
~+;::
        If (A_PriorHotkey = "~+;" and A_TimeSincePriorHotkey < 500 and flag = true){
            SendInput, {BS 2}{asc 58}{asc 58}
            SendInput, {Shift}
            flag := false
        } else {
            flag := true
        }
        return



RE: 怎样让两个中文冒号,变成两个英文冒号? - abc001 - 2017-09-27 15 : 02

@bootislands1
刚试了下无效,又试了下才发现原来要快速按两次::才会变成::。
很好的代码,比我的要少输一次:。