「河许人」AutohotkeyAHK程序设计AutoHotKey基础入门

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

2018-12-31  本文已影响5人  d61f25068828

编程的时候经常会需要用中文打一些字,但是我又不希望用中文的标点符号,对于我把中文的标点符号都映射成英文的了。但由于用的是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 
上一篇 下一篇

猜你喜欢

热点阅读