摆脱鼠标系列 - vscode - Esc 返回时候 强制显示英文输入法 - ahk 脚本 - autoHotKey

为什么

摆脱鼠标系列 - vscode - Esc 返回时候 强制显示英文输入法

  • 切换网页的时候,回来还是搜索输入法,就想到按esc,直接强制英文输入法
  • 之前vim插件里面 用了一个 im-select.exe 那个在切换模式的时候好使
  • 但是在Normal模式,本身是搜狗输入法的时候就不好使了

解决方案

; esc-in-vscode.ahk
; vscode不能是管理员权限运行
; vscode不能是管理员权限运行
; vscode不能是管理员权限运行 重要的事情说三遍 
#IfWinActive ahk_exe Code.exe
~Esc:: 
; if (A_PriorHotkey <> "~Esc" or A_TimeSincePriorHotkey > 400)
; 	{
; 		return
; 	}
        SwitchIME(04090409) ; 英语(美国) 美式键盘
Return
#If

SwitchIME(dwLayout){
        HKL:=DllCall("LoadKeyboardLayout", Str, dwLayout, UInt, 1)

        ControlGetFocus,ctl,A

        SendMessage,0x50,0,HKL,%ctl%,A

}
  • 话说这个软件真的非常强大,不过现在没时间研究
  • ~Esc 我感觉应该就是 Esc功能实现了,再追加一个功能的感觉

最新进入Normal模式

  • vscode 里面 ESC capslock Shift双击 三个键均可以返回Normal 并改为英文输入法
  • 开始用的单击右边shfit,发现输入#的时候,用到了右边shift,所以还不能设置单击,就改为双击右边shift
; esc-in-vscode.ahk
; vscode不能是管理员权限运行
; vscode不能是管理员权限运行
; vscode不能是管理员权限运行 重要的事情说三遍 

#IfWinActive ahk_exe Code.exe

; ~Esc:: 
; !j::

; if (A_Cursor <> "IBeam" or A_PriorHotkey <> "~Esc" or A_TimeSincePriorHotkey > 200)
; 	{
; 		return
; 	}
;Msgbox, 11


;CapsLock::
;Send, {ESC}
;SwitchIME(04090409) ; 英语(美国) 美式键盘
;Return


;$RSHIFT::
;A_Cursor <> "IBeam" 就是查看光盘状态 有了这个在大纲快速下一个就不会被esc掉了

~j::
;MsgBox, %A_PriorHotkey%
;MsgBox, %A_Cursor%
;只有中文输入法的时候,才会切换英文输入法,终于完美了
If (IME_GET() = "0" or A_PriorHotkey <> "~j" or A_TimeSincePriorHotkey > 200) {


return

  
}
;MsgBox, % A_Cursor

SwitchIME(04090409) ; 英语(美国) 美式键盘
Send, {ESC}

Return

; ~SHIFT::
; if (A_PriorHotkey <> "~SHIFT" or A_TimeSincePriorHotkey > 400) {
;   return
; }

; Send, {ESC}
; SwitchIME(04090409) ; 英语(美国) 美式键盘
; Return


~Esc::
SwitchIME(04090409) ; 英语(美国) 美式键盘
Return

#If

SwitchIME(dwLayout){
        HKL:=DllCall("LoadKeyboardLayout", Str, dwLayout, UInt, 1)

        ControlGetFocus,ctl,A

        SendMessage,0x50,0,HKL,%ctl%,A

}

IME_GET(WinTitle="")
{
    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
}
posted @ 2022-09-29 16:28  彭成刚  阅读(260)  评论(0编辑  收藏  举报