美文网首页「河许人」AutohotkeyAHK程序设计AutoHotKey基础入门
[AHK心得] 让搜狗输入法变成编程专用输入法

[AHK心得] 让搜狗输入法变成编程专用输入法

作者: d61f25068828 | 来源:发表于2018-12-31 18:51 被阅读5次

    编程的时候经常会需要用中文打一些字,但是我又不希望用中文的标点符号,对于我把中文的标点符号都映射成英文的了。但由于用的是SendText()方案,所以就没法触发搜狗输入法的翻页功能,这让我很头痛。不过最近偶然间发现了解决方案,这里分享一下。

    解决搜狗输入法翻页问题

    首先我用Spy探测了一下搜狗输入法的输入框,没想到居然是可以查到的,中文的候选框资料如下。


    搜狗输入法中文候选框

    既然能够查到,我就直接使用#If WinActive 进行语境约束。

    #if WinActive("ahk_class SoPY_Comp")
    k::
    MsgBox,OK
    return
    #if
    

    发现居然无效,顿时感觉希望不大,因为好像没看到有人约束搜狗输入法的候选框,可能这是一个特殊的窗口吧。
    不过最后又改了一下,结果发现居然可以了

    #if WinExist("ahk_class SoPY_Comp")
    k::
    MsgBox,OK
    return
    #if
    

    之后就是重新映射回来。问题完美解决。

    ;搜狗输入法,语境约束
    #if WinExist("ahk_class SoPY_Comp") 
    :B0*:.::
    SendEvent,{.}
    return
    
    :B0*:,::
    SendEvent,{,}
    return
    #if 
    

    解决搜狗英文输入法空格问题

    编程的时候经常会输入一些英文,有时候这些英文和语法并没有什么关系,IDEA也不会给出提示.
    对于一个英文比较差的人来说,还是挺痛苦的,但是不用又不行。
    好在搜狗输入法有英文模式,但是他这个英文模式不是根据编程场景来优化,只要按下空格或者数字键,都会在单词后面跟上一个空格,这样就非常烦人,经常需要退格。也许就能一起解决了。

    我们还是先用Spy看一下那个窗口


    搜狗输入法英文模式窗口

    比较幸运的是这个窗口的Class,那么就好解决了,和之前的思路一样.

    
    #if WinExist("ahk_class SoPY_Cand")
    ~Space::BackSpace
    ~1::BackSpace
    ~2::BackSpace
    ~3::BackSpace
    ~4::BackSpace
    ~5::BackSpace
    ~6::BackSpace
    ~7::BackSpace
    ~8::BackSpace
    ~9::BackSpace
    ~0::BackSpace
    #if 
    

    相关文章

      网友评论

        本文标题:[AHK心得] 让搜狗输入法变成编程专用输入法

        本文链接:https://www.haomeiwen.com/subject/teswlqtx.html