平常用搜狗输入法,单击shift会在中英文之间切换。ctrl+, 是呼叫出搜狗拼音。
需求:
实现 双击 shift 切换成中文状态(为了达到盲操打字的效果,避免去看输入法状态,如果没启动输入法会自动发送ctrl+,启动搜狗输入法)
代码实现的逻辑就是:
双击shift --》发送ctrl+,并将中文输入法切换到中文
双击ctrl --》发送ctrl+,并将中文输入法切换到英文
- ;【功能】便于盲操,切换输入法状态
- ;【使用方法】
- ;想切成中文:双击shift
- ;想切成英文:双击shift后、再单击shift
- ;想切成英文:双击Ctrl
- ;作者:sunwind
- ;日期:2018年8月26日
- ;语言: AutoHotkey Unicode 32-bit
- ;测试环境:win10 + 搜狗输入法
- ;更新反馈地址:https://blog.csdn.net/liuyukuan/article/details/81939497
- #SingleInstance, force
- ~LShift::
- if pressesCount>0
- {
- pressesCount+=1
- return
- }
- pressesCount=1
- SetTimer,WaitKeys,300
- return
- WaitKeys:
- SetTimer,WaitKeys,off
- if pressesCount=2
- {
- Send ^`,
- IME_SET(1)
- }
- pressesCount=0
- return
- ~LCtrl::
- Keywait, LCtrl, , t0.5
- if errorlevel = 1
- return
- else
- Keywait, LCtrl, d, t0.3
- if errorlevel = 0
- {
- Send ^`,
- IME_SET(0)
- }
- return
- IME_SET(setSts, WinTitle="")
- ;-----------------------------------------------------------
- ; IMEの状態をセット
- ; 対象: AHK v1.0.34以降
- ; SetSts : 1:ON 0:OFF
- ; WinTitle: 対象Window (省略時:アクティブウィンドウ)
- ; 戻り値 1:ON 0:OFF
- ;-----------------------------------------------------------
- {
- ifEqual WinTitle,, SetEnv,WinTitle,A
- WinGet,hWnd,ID,%WinTitle%
- DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
- ;Message : WM_IME_CONTROL wParam:IMC_SETOPENSTATUS
- DetectSave := A_DetectHiddenWindows
- DetectHiddenWindows,ON
- SendMessage 0x283, 0x006,setSts,,ahk_id %DefaultIMEWnd%
- DetectHiddenWindows,%DetectSave%
- Return ErrorLevel
- }
ps
判断输入法是否是中文状态的函数
- IME_GET(WinTitle="")
- ;-----------------------------------------------------------
- ; IMEの状態の取得
- ; 対象: AHK v1.0.34以降
- ; WinTitle : 対象Window (省略時:アクティブウィンドウ)
- ; 戻り値 1:ON 0:OFF
- ;-----------------------------------------------------------
- {
- ifEqual WinTitle,, SetEnv,WinTitle,A
- WinGet,hWnd,ID,%WinTitle%
- DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
- ;Message : WM_IME_CONTROL wParam:IMC_GETOPENSTATUS
- DetectSave := A_DetectHiddenWindows
- DetectHiddenWindows,ON
- SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
- DetectHiddenWindows,%DetectSave%
- Return ErrorLevel
- }
联系客服