受你的启发,我改了一个自我感觉更顺畅的方法,按输入法切合键是切换输入法,连按两次是拼音转中文,并且用正则处理了汉字和字母夹杂的情况
SetCapsLockState, AlwaysOff
; capslock 按一次是切换中英文,按两次是输错了重新输入。
CapsLock::
if Caps_presses > 0
{
Caps_presses += 1
SetTimer Capskey, 200
return
}
Caps_presses = 1
SetTimer Capskey, 200
return
Capskey:
SetTimer Capskey, off
if Caps_presses = 1
{
SendInput,+
}
else if Caps_presses = 2
{
tocorrect()
}
Caps_presses = 0
return
tocorrect()
{
SendInput, +{Home}
Sleep, 10
SendInput, ^c
Sleep, 10
SendInput,+
getenpos := RegExMatch(Clipboard, "\w+$") ;获得最后出现的一串英文字符的出现位置
Clipboard1 := SubStr(Clipboard, 1, getenpos-1)
Clipboard2 := SubStr(Clipboard, getenpos)
Sleep, 10
SendInput,{Text}%Clipboard1% ;text启用文本模式, 它发送的是字符流而不是按键
Sleep, 10
SendInput,%Clipboard2%
}
return