[AHK]双击shift将输入法切换成中文状态

 

平常用搜狗输入法,单击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
}

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyukuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值