From 89679f2ec2fa0e539b7b8a45fcfe0482c9efc291 Mon Sep 17 00:00:00 2001 From: flyinclouds Date: Sat, 2 Jul 2022 18:03:42 +0800 Subject: [PATCH] v2.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修复切换重置大小写为0时切换错误Bug 2. 支持微软输入法 3. 尽量修复部分win7bug 4. 修复高级窗口无法修改内容Bug 5. 新增英文输入法状态显示 Icos文件夹多了两个图标,需要替换Icos文件夹 6. 新增高级配置-上屏字符内容:目前已支持输入法:搜狗输入法、QQ五笔输入法、QQ拼音输入法、手心输入法 --- Icos/black_CnEn.ico | Bin 0 -> 5430 bytes Icos/black_En.ico | Bin 5430 -> 5430 bytes Icos/white_CnEn.ico | Bin 0 -> 5430 bytes Icos/white_En.ico | Bin 5430 -> 5430 bytes KBLAutoSwitch.ahk | 177 +++++++++++++++++++++++++++++++------------- README.md | 8 +- 6 files changed, 130 insertions(+), 55 deletions(-) create mode 100644 Icos/black_CnEn.ico create mode 100644 Icos/white_CnEn.ico diff --git a/Icos/black_CnEn.ico b/Icos/black_CnEn.ico new file mode 100644 index 0000000000000000000000000000000000000000..e85f71907d2199ae4cce9ba6d3a6de235ba922e9 GIT binary patch literal 5430 zcmb_g3yhT26~6cX|C#@v`RB0@mTd{eU8uYw(biTG>;g?eYH*>#BA6CxZHOW?B_+j1 z+HL|EEohMPYDKA3Q&XkkQ8KW~!w0*7*ov!-3dAMa0F{8S&w2f)-#Pz3!|-a*@+W8R zz2}~D&*PqZ?zy9sR)(snQD|$_i)Bg;R7#bhiu^*;*>~%`S-$%P2&>XY}&|VD` zc$n`kin+VVv42fUxm^%4H4x7NOFpMosYn;oR#s3ZnK+XJZ@!|Oat!5VR}V~I8Ss@Q zDaQa@CLY@d9pYJ~oS_hG22jvpr5&D6;7cds$H>rwJWP;j+(MDaT1qC)5_F)lWF~+d z+H3&aPs=>hBoZem8u=52LQ_fWYI2+vUU`{E&>`*EjnF}@H(5G9%|YaU2V(9nucADk zjYQUaTGujN5e#FHtXZC99T;+u=LxVLEH|0>582@bBD0iN>l)0R^U9NXFA;CeW3C;r z4loSBAM5aLJa&-RW`CjeD2BbZ?ML8?>x+6=)+G+l09CEbFk>zt;4KRHkL8Mtmyli5kT6 zIkrKcOD4KO-vj6ZbON9c_}T7|HC^Nw#!W&4zryamf^+Q0fy2H8`%{+Wb(p^sycw2{ zm^e(e*BRc~V~U83%z~fG9v0aAMY{p<%rb4# zst?*;d{*G|jWQpJJco82cvb^e0+xY(G5mZau>T|KUt?0&3D}=Da{FEt`z6nDu3-No z9K|N+bj?~fx{Z2Ovi%>5eArKvF|y4~nq>s?1N-eKp!agv^gQT)ig^p|eHgzC`~Qsg zC5(RvyvAP4!uUnt|3cB|UjZ*69{LN9<2(ucAF)Sl|A&{_pD}V5%J=u5`;sWuS(AJlgZO427{<-QlSs5dHxFy^dbvRUk*ku=I`di%;+Ore zkpnGj9GT{Kk=MrJUKlQTrON%W`8{bZYb@}7E{eyGLO$mWz9+tz{DS?Cy$rHz0oMU4 z0;on?8OS%$=W$gqSBdk;^tFh&e+Bk`8TonW%)aA1$akI}Uu+M9?|%bw`pH}Y&n@R= z)?f0b_@BpDW4|B&oGUNAXLEACIQMW~j=3#?{R(%_9*W05lDy>S5Z>>?-R!Sbnt%US z{KL)*@~>}?Z?j?CATpDQ&qW8C&!6nKgu-(aPSv=Q8<$Y|8f4kf_&UR z``EWRwvF>GpK;es0d_-9GvfM2$T#7K&G7$0zAI`rHW(^pwXaIEFE!vhj@KkYQ>Os1a~dN zQQWo10BwMe16(i%8pm#f&Bt&S+EAkvc+gsh;q!k&F7hb+vu-8Zj`-*MzuU;|-zo9U z_g|q7zXAQH0qy_T-{cnB=dQxew6``-kHPgj#?o&nC z9z`!a?VnTB(zI(U;_Guo?f+KP4W8^N9qc#iuHzc=4X^!E;K)e-Vvg{w^u^1syo*p1 z4^6~XcHb_h(;3R@9G{m8O?E5w&N2RRdh_lF29`6jL^AOUn3S84cG+O12_R09gxNUQ}EvsH2^KYpu>L{7k`FP!KnMf z;aQt)du}Qmx;KS)?ghX&J3KoT4&T28w6m286_-H`Gc$^Mncvi|`**1&{5zKGjGp3{ z?}C`zuiJ30dd)G-$+AYsYG~q|7Yh9d_%fXB5jgYjan2Hm$KJ#l{3hnYQmZ8soV)5f zB9Te+5Npb^8g_79?gL@vhF4~@&Z-$!n+3V zQa8F)`g|9JLq8K5ts#H-T?PKsh5Qr1SC4vPHDrHF*5kfu-U|MQ0)DzIKku3AZil@~ z;V<@Kf2?sm`uuiUin^p(_EIB#Tuwgo^B%-whai6g_PPn}M%>rS;L{Vq{vh*Q#2*U% zWIO+tV4Al>-|>(+7(PniEYE<>GtdvAHoqBjcL7hpLP5la0O(%cplHY6 zFzyCGXO`P_+MwswD8he}GYbdN!r8`uP_rlhKyA5qs!FkMrr)hnb7!g4?EC#b>V(ui efC=B1bn)W~9Q{TcEAS2R1u|13$oBx+!1G^=giV|P literal 0 HcmV?d00001 diff --git a/Icos/black_En.ico b/Icos/black_En.ico index e85f71907d2199ae4cce9ba6d3a6de235ba922e9..4e3f851e424dc8ae8275b690ce97caa64723c253 100644 GIT binary patch literal 5430 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 diff --git a/Icos/white_CnEn.ico b/Icos/white_CnEn.ico new file mode 100644 index 0000000000000000000000000000000000000000..e85f71907d2199ae4cce9ba6d3a6de235ba922e9 GIT binary patch literal 5430 zcmb_g3yhT26~6cX|C#@v`RB0@mTd{eU8uYw(biTG>;g?eYH*>#BA6CxZHOW?B_+j1 z+HL|EEohMPYDKA3Q&XkkQ8KW~!w0*7*ov!-3dAMa0F{8S&w2f)-#Pz3!|-a*@+W8R zz2}~D&*PqZ?zy9sR)(snQD|$_i)Bg;R7#bhiu^*;*>~%`S-$%P2&>XY}&|VD` zc$n`kin+VVv42fUxm^%4H4x7NOFpMosYn;oR#s3ZnK+XJZ@!|Oat!5VR}V~I8Ss@Q zDaQa@CLY@d9pYJ~oS_hG22jvpr5&D6;7cds$H>rwJWP;j+(MDaT1qC)5_F)lWF~+d z+H3&aPs=>hBoZem8u=52LQ_fWYI2+vUU`{E&>`*EjnF}@H(5G9%|YaU2V(9nucADk zjYQUaTGujN5e#FHtXZC99T;+u=LxVLEH|0>582@bBD0iN>l)0R^U9NXFA;CeW3C;r z4loSBAM5aLJa&-RW`CjeD2BbZ?ML8?>x+6=)+G+l09CEbFk>zt;4KRHkL8Mtmyli5kT6 zIkrKcOD4KO-vj6ZbON9c_}T7|HC^Nw#!W&4zryamf^+Q0fy2H8`%{+Wb(p^sycw2{ zm^e(e*BRc~V~U83%z~fG9v0aAMY{p<%rb4# zst?*;d{*G|jWQpJJco82cvb^e0+xY(G5mZau>T|KUt?0&3D}=Da{FEt`z6nDu3-No z9K|N+bj?~fx{Z2Ovi%>5eArKvF|y4~nq>s?1N-eKp!agv^gQT)ig^p|eHgzC`~Qsg zC5(RvyvAP4!uUnt|3cB|UjZ*69{LN9<2(ucAF)Sl|A&{_pD}V5%J=u5`;sWuS(AJlgZO427{<-QlSs5dHxFy^dbvRUk*ku=I`di%;+Ore zkpnGj9GT{Kk=MrJUKlQTrON%W`8{bZYb@}7E{eyGLO$mWz9+tz{DS?Cy$rHz0oMU4 z0;on?8OS%$=W$gqSBdk;^tFh&e+Bk`8TonW%)aA1$akI}Uu+M9?|%bw`pH}Y&n@R= z)?f0b_@BpDW4|B&oGUNAXLEACIQMW~j=3#?{R(%_9*W05lDy>S5Z>>?-R!Sbnt%US z{KL)*@~>}?Z?j?CATpDQ&qW8C&!6nKgu-(aPSv=Q8<$Y|8f4kf_&UR z``EWRwvF>GpK;es0d_-9GvfM2$T#7K&G7$0zAI`rHW(^pwXaIEFE!vhj@KkYQ>Os1a~dN zQQWo10BwMe16(i%8pm#f&Bt&S+EAkvc+gsh;q!k&F7hb+vu-8Zj`-*MzuU;|-zo9U z_g|q7zXAQH0qy_T-{cnB=dQxew6``-kHPgj#?o&nC z9z`!a?VnTB(zI(U;_Guo?f+KP4W8^N9qc#iuHzc=4X^!E;K)e-Vvg{w^u^1syo*p1 z4^6~XcHb_h(;3R@9G{m8O?E5w&N2RRdh_lF29`6jL^AOUn3S84cG+O12_R09gxNUQ}EvsH2^KYpu>L{7k`FP!KnMf z;aQt)du}Qmx;KS)?ghX&J3KoT4&T28w6m286_-H`Gc$^Mncvi|`**1&{5zKGjGp3{ z?}C`zuiJ30dd)G-$+AYsYG~q|7Yh9d_%fXB5jgYjan2Hm$KJ#l{3hnYQmZ8soV)5f zB9Te+5Npb^8g_79?gL@vhF4~@&Z-$!n+3V zQa8F)`g|9JLq8K5ts#H-T?PKsh5Qr1SC4vPHDrHF*5kfu-U|MQ0)DzIKku3AZil@~ z;V<@Kf2?sm`uuiUin^p(_EIB#Tuwgo^B%-whai6g_PPn}M%>rS;L{Vq{vh*Q#2*U% zWIO+tV4Al>-|>(+7(PniEYE<>GtdvAHoqBjcL7hpLP5la0O(%cplHY6 zFzyCGXO`P_+MwswD8he}GYbdN!r8`uP_rlhKyA5qs!FkMrr)hnb7!g4?EC#b>V(ui efC=B1bn)W~9Q{TcEAS2R1u|13$oBx+!1G^=giV|P literal 0 HcmV?d00001 diff --git a/Icos/white_En.ico b/Icos/white_En.ico index e85f71907d2199ae4cce9ba6d3a6de235ba922e9..4e3f851e424dc8ae8275b690ce97caa64723c253 100644 GIT binary patch literal 5430 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 diff --git a/KBLAutoSwitch.ahk b/KBLAutoSwitch.ahk index 0675317..3f1cb7b 100644 --- a/KBLAutoSwitch.ahk +++ b/KBLAutoSwitch.ahk @@ -26,13 +26,14 @@ Label_DefVar: ;初始化变量 ;设置初始化变量,用于读取并保存INI配置文件参数 global INI := A_ScriptDir "\KBLAutoSwitch.ini" global APPName := "KBLAutoSwitch" - global APPVersion := "2.2.0" + global APPVersion := "2.2.1" + global APPType := RegExMatch(APPVersion, "\d*\.\d*\.\d*\.\d*")?"(测试版)":"",APPVersion := APPVersion APPType ;基础变量 global shell_msg_num := 0 ;接受窗口切换等消息 global State_ShowTime := 1000 ;固定变量初始化 - global CN_Code:=0x08040804,EN_Code:=0x04090409 - global Display_Cn := "中",Display_En := "英" + global CN_Code:=0x804,EN_Code:=0x409 + global Display_Cn := "中",Display_CnEn := "英",Display_En := "En" global Auto_Reload_MTime:=2000 ;INI配置文件参数变量初始化 global Auto_Launch,Launch_Admin,Auto_Switch,Default_Keyboard,Switch_Model @@ -220,6 +221,7 @@ Label_ReadINI: ;读取INI配置文件 iniread, Left_Mouse_ShowKBL_Up, %INI%, 高级设置, 左键弹起后提示输入法状态生效窗口, Code.exe iniread, SetTimer_Reset_KBL, %INI%, 高级设置, 定时重置输入法, 60|编辑器 iniread, Reset_CapsLock, %INI%, 高级设置, 切换重置大小写, 1 + iniread, Enter_Inputing_Content, %INI%, 高级设置, 上屏字符内容, 2 ;读取自定义窗口组 iniread, Custom_Win_Group, %INI%, 自定义窗口组 @@ -291,6 +293,11 @@ If (Auto_Switch=1){ GroupAdd, focus_control_ahk_group, ahk_exe explorer.exe ;获取输入光标位置sleep组 GroupAdd, GetCaretSleep_ahk_group, ahk_class Chrome_WidgetWin_1 + ;输入法输入候选窗口 + GroupAdd, IMEInput_ahk_group, ahk_class SoPY_Comp ; 搜狗输入法 + GroupAdd, IMEInput_ahk_group, ahk_class QQWubiCompWndII ; QQ五笔输入法 + GroupAdd, IMEInput_ahk_group, ahk_class QQPinyinCompWndTSF ; QQ拼音输入法 + GroupAdd, IMEInput_ahk_group, ahk_class PalmInputUICand ; 手心输入法 } Label_DropDownListData: @@ -335,11 +342,13 @@ Label_IcoLaunch: ;根据Win主题设置图标所在路径 ACNico_path = %A_ScriptDir%\Icos\white_A_CN.ico AENico_path = %A_ScriptDir%\Icos\white_A_EN.ico CNico_path = %A_ScriptDir%\Icos\white_Cn.ico + CNENico_path = %A_ScriptDir%\Icos\white_CnEn.ico ENico_path = %A_ScriptDir%\Icos\white_En.ico }Else{ ACNico_path = %A_ScriptDir%\Icos\black_A_CN.ico AENico_path = %A_ScriptDir%\Icos\black_A_EN.ico CNico_path = %A_ScriptDir%\Icos\black_Cn.ico + CNENico_path = %A_ScriptDir%\Icos\black_CnEn.ico ENico_path = %A_ScriptDir%\Icos\black_En.ico } } @@ -422,13 +431,16 @@ Label_AutoRun: ;判断是否开机自启 } Label_Detection: ;运行前检测 - If (Tray_Display=1 && Tray_Display_KBL=1 && (!FileExist(ACNico_path) || !FileExist(AENico_path) || !FileExist(CNico_path) || !FileExist(ENico_path))){ - MsgBox, 用于显示输入法的【托盘图标】文件不存在,请检查下列图标文件是否存在`n1.%ACNico_path%`n2.%AENico_path%`n3.%CNico_path%`n4.%ENico_path%`n`n托盘图标将不显示输入法! - global Tray_Display_KBL := 0 + If (Tray_Display=1 && Tray_Display_KBL=1 && (!FileExist(ACNico_path) || !FileExist(CNENico_path) || !FileExist(AENico_path) || !FileExist(CNico_path) || !FileExist(ENico_path))){ + MsgBox, 用于显示输入法的【托盘图标】文件(Ico文件夹中)不存在,`n托盘图标将不显示输入法状态!`n解决办法(选择其中一项):`n1.下载本软件,重新将Icos文件夹覆盖`n2.检查Icos文件夹中缺少的图标文件,添加自定义托盘图标`n3.点击确定,不使用图标显示输入法功能`n`n!!!已关闭图标显示输入法功能,后续不再提醒`n!!!通过设置-基础设置2-图标显示输入法可再次开启图标显示输入法功能 + Run, % A_ScriptDir "\Icos" + IniWrite, 0, %INI%, 基本设置, 图标显示输入法 + Gosub,Menu_Reload }Else If (Tray_Display_KBL=1){ global ACNIcon := LoadPicture(ACNico_path,,ImageType) global AENIcon := LoadPicture(AENico_path,,ImageType) global CNIcon := LoadPicture(CNico_path,,ImageType) + global CNENIcon := LoadPicture(CNENico_path,,ImageType) global ENIcon := LoadPicture(ENico_path,,ImageType) } @@ -438,7 +450,7 @@ Label_Init: ;初始化 global ImmGetDefaultIMEWnd := DllCall("GetProcAddress", "Ptr", DllCall("LoadLibrary", "Str", "imm32", "Ptr"), "AStr", "ImmGetDefaultIMEWnd", "Ptr") Label_NecessaryVar: ;必要变量 - global SwitchGui_id,Gui_Edit_Hwnd,SwitchTT_id,TT_Edit_Hwnd + global SwitchGui_id,Gui_Edit_Hwnd,Gui_Edit_Hwnd1,SwitchTT_id,TT_Edit_Hwnd,TT_Edit_Hwnd1 global LastKBLState,LastCapsState,LastMonitorNum,gl_Active_IMEwin_id dpi_screen := getDisplayPos(Gui_X_Pos_Coef,Gui_Y_Pos_Coef) ;获取输入法切换显示GUI位置 global Gui_X_Pos := dpi_screen[0] @@ -492,8 +504,8 @@ Label_BoundHotkey: ;绑定特殊热键 extraKey := " Up" BoundHotkey("~LShift" extraKey,Hotkey_Left_Shift) BoundHotkey("~RShift" extraKey,Hotkey_Right_Shift) - BoundHotkey("~LCtrl" extraKey,Hotkey_Left_Ctrl) - BoundHotkey("~RCtrl" extraKey,Hotkey_Right_Ctrl) + BoundHotkey("~LControl" extraKey,Hotkey_Left_Ctrl) + BoundHotkey("~RControl" extraKey,Hotkey_Right_Ctrl) BoundHotkey("~LAlt" extraKey,Hotkey_Left_Alt) BoundHotkey("~RAlt" extraKey,Hotkey_Right_Alt) @@ -534,6 +546,7 @@ Label_SetTimer: ; 定时器功能 SetTimer_Reset_KBL_Time := SetTimer_Reset_KBL_temp[1] getINISwitchWindows(SetTimer_Reset_KBL_temp[2],"SetTimer_Reset_KBL_WinGroup","|") + global Reset_CapsLock_State := SubStr(Reset_CapsLock, 1, 1) getINISwitchWindows(SubStr(Reset_CapsLock, 3),"Inner_AHKGroup_NoCapsLock","|") Label_End: ; 收尾 @@ -589,7 +602,7 @@ getINISwitchWindows(INIVar:="",groupName:="",Delimiters:="`n"){ ;从配置文件 showSwitch(KBLState:="",CapsLockState:="",ForceShowSwitch:=0) { ;选择显示中英文 If (KBLState=""){ gl_Active_IMEwin_id := getIMEwinid() - KBLState := (getIMEKBL(gl_Active_IMEwin_id)=EN_Code || getIMECode(gl_Active_IMEwin_id)!=1) + KBLState := (getIMEKBL(gl_Active_IMEwin_id)!=EN_Code?(getIMECode(gl_Active_IMEwin_id)!=0?0:1):2) } If (CapsLockState="") CapsLockState := DllCall("GetKeyState", UInt, 20) & 1 @@ -650,12 +663,21 @@ getIMEwinid(){ ; 获取激活窗口IME线程id getIMEKBL(win_id:="") { ;激活窗口键盘布局检测 thread_id := DllCall("GetWindowThreadProcessId", "UInt", win_id, "UInt", 0) input_locale_id := DllCall("GetKeyboardLayout", "UInt", thread_id) - Return input_locale_id + Switch input_locale_id + { + Case 134481924:Return 2052 + Case 67699721:Return 1033 + Default:Return input_locale_id + } } getIMECode(win_id:="") { ;激活窗口键盘布局中英文状态检测 - SendMessage 0x283, 0x005, 0, , ahk_id %win_id% + SendMessage 0x283, 0x005, 0, , ahk_id %win_id%,,,,1000 input_locale_id := ErrorLevel + If (input_locale_id=1){ + SendMessage 0x283, 0x001, 0, , ahk_id %win_id%,,,,1000 + input_locale_id := 3&ErrorLevel + } Return input_locale_id } @@ -666,7 +688,10 @@ setIME(setSts, win_id:="") { ;设置输入法状态 ; SetSts : 1:ON 0:OFF ; 戻り値 1:ON 0:OFF ;----------------------------------------------------------- - SendMessage 0x283, 0x006, setSts, , ahk_id %win_id% + SendMessage 0x283, 0x001, 0, , ahk_id %win_id%,,,,1000 + CONVERSIONMODE := 2046&ErrorLevel, CONVERSIONMODE += setSts + SendMessage 0x283, 0x002, CONVERSIONMODE, , ahk_id %win_id%,,,,1000 + SendMessage 0x283, 0x006, setSts, , ahk_id %win_id%,,,,1000 Return ErrorLevel } @@ -675,39 +700,42 @@ setKBLlLayout(KBL:=0){ ; 切换输入法 gl_Active_IMEwin_id := getIMEwinid() CapsLockState := LastCapsState If !WinActive("ahk_group Inner_AHKGroup_NoCapsLock") { - Switch SubStr(Reset_CapsLock, 1, 1) + Switch Reset_CapsLock_State { Case 1: SetCapsLockState, Off Case 2: SetCapsLockState, On } - CapsLockState := SubStr(Reset_CapsLock, 1, 1)-1 + If (Reset_CapsLock_State>0) + CapsLockState := Reset_CapsLock_State-1 } - If (KBL=0){ ;切换中文输入法 + If (KBL=0){ ; 切换中文输入法 If (getIMEKBL(gl_Active_IMEwin_id)=CN_Code){ If (getIMECode(gl_Active_IMEwin_id)!=1) setIME(1,gl_Active_IMEwin_id) }Else{ - SendMessage, 0x50, , %CN_Code%, , ahk_id %gl_Active_IMEwin_id%,,,,100 + SendMessage, 0x50, , %CN_Code%, , ahk_id %gl_Active_IMEwin_id%,,,,1000 + Sleep,50 setIME(1,gl_Active_IMEwin_id) } - }Else If (KBL=1){ ;切换英文(中文)输入法 + }Else If (KBL=1){ ; 切换英文(中文)输入法 If (getIMEKBL(gl_Active_IMEwin_id)=CN_Code){ If (getIMECode(gl_Active_IMEwin_id)!=0) setIME(0,gl_Active_IMEwin_id) }Else{ - SendMessage, 0x50, , %CN_Code%, , ahk_id %gl_Active_IMEwin_id%,,,,100 + SendMessage, 0x50, , %CN_Code%, , ahk_id %gl_Active_IMEwin_id%,,,,1000 + Sleep,50 setIME(0,gl_Active_IMEwin_id) } - }Else If (KBL=2){ ;切换英文输入法 + }Else If (KBL=2){ ; 切换英文输入法 If (getIMEKBL(gl_Active_IMEwin_id)!=EN_Code) PostMessage, 0x50, , %EN_Code%, , ahk_id %gl_Active_IMEwin_id% } Thread, NoTimers, False - showSwitch(KBL=0?0:1,CapsLockState,1) + try showSwitch(KBL,CapsLockState,1) } shellMessage(wParam, lParam) { ;接受系统窗口回调消息, 第一次是实时,第二次是保障 - If ( wParam=1 || wParam=32772 || wParam=5 ) { + If ( wParam=1 || wParam=32772 || wParam=5 || wParam=4) { Gosub, Shell_Switch SetTimer, Shell_Switch, -100 } @@ -746,14 +774,16 @@ Monitor_Change(ByRef wParam,ByRef lParam){ ;分辨率改变消息 showSwitchGui(KBLState,CapsLockState) { ;显示切换或当前的输入法状态,以GUI方式显示 If (Gui_OnOff!=1) Return - Msg := KBLState=0?Display_Cn:Display_En - Msg .= CapsLockState!=0? " | A" : " | a" + KBLMsg := KBLState=0?Display_Cn:KBLState=1?Display_CnEn:Display_En + CapsLockMsg := CapsLockState!=0? " | A" : " | a" If (KBLState=0) Gui, SwitchGui:Font, c02ecfb, Segoe UI - Else If (KBLState=1) + Else Gui, SwitchGui:Font, cred, Segoe UI - GuiControl, Text, %Gui_Edit_Hwnd%, %Msg% + GuiControl, Text, %Gui_Edit_Hwnd%, %KBLMsg% + GuiControl, Text, %Gui_Edit_Hwnd1%, %CapsLockMsg% GuiControl, Font, %Gui_Edit_Hwnd% + GuiControl, Font, %Gui_Edit_Hwnd1% Gui SwitchGui:+AlwaysOnTop try Gui, SwitchGui:Show, x%Gui_X_Pos% y%Gui_Y_Pos% NoActivate SetTimer, Hide_Gui, %Gui_Display_Time% @@ -767,22 +797,22 @@ showSwitchGui(KBLState,CapsLockState) { ;显示切换或当前的输入法状态 showSwitchTT(KBLState,CapsLockState,mouclick:=0) { ;显示切换或当前的输入法状态,以TT方式显示 If (TarHotFunFlag!=0 || mouclick=1){ - Tooltip,1,-9999,-9999 - Tooltip Sleep,10 If (TarHotFunFlag=2 && WinActive("ahk_group GetCaretSleep_ahk_group")) WinWait, A, , 0.01 } If (TT_OnOff!=1) Return - Msg := KBLState=0?Display_Cn:Display_En - Msg .= CapsLockState!=0? " | A" : " | a" + KBLMsg := KBLState=0?Display_Cn:KBLState=1?Display_CnEn:Display_En + CapsLockMsg := CapsLockState!=0? " | A" : " | a" If (KBLState=0) Gui, SwitchTT:Font, c02ecfb, Segoe UI - Else If (KBLState=1) + Else Gui, SwitchTT:Font, cred, Segoe UI - GuiControl, Text, %TT_Edit_Hwnd%, %Msg% + GuiControl, Text, %TT_Edit_Hwnd%, %KBLMsg% + GuiControl, Text, %TT_Edit_Hwnd1%, %CapsLockMsg% GuiControl, Font, %TT_Edit_Hwnd% + GuiControl, Font, %TT_Edit_Hwnd1% Gui SwitchTT:+AlwaysOnTop If (ShowSwitch_Pos=0){ MouseGetPos, CaretX, CaretY @@ -832,27 +862,33 @@ initResetINI() { ;定时重新加载配置文件 initGui() { ;创建切换显示GUI If (Gui_OnOff=1){ Gui, SwitchGui:Destroy - Gui, SwitchGui:-SysMenu +ToolWindow +AlwaysOnTop -Caption +HwndSwitchGui_id +E0x20 + Gui, SwitchGui:-SysMenu +ToolWindow +AlwaysOnTop -Caption -DPIScale +HwndSwitchGui_id +E0x20 Gui, SwitchGui:Color, 333434 Gui, SwitchGui:Font, c02ecfb s%Gui_Font_Size%, Segoe UI - Gui, SwitchGui:Add,Text, x18 y3 HwndGui_Edit_Hwnd, %Display_Cn% | A + Gui, SwitchGui:Add,Text, x20 y3 HwndGui_Edit_Hwnd, %Display_En% ControlGetPos, , , Text_W, Text_H, , ahk_id %Gui_Edit_Hwnd% - Text_W := Text_W+20 - Text_H := Text_H+8 + Gui_W := Text_W+20 + Gui_H := Text_H+8 + Gui, SwitchGui:Add,Text, x%Gui_W% y3 HwndGui_Edit_Hwnd1, %A_Space%| A + ControlGetPos, , , Text_W, Text_H, , ahk_id %Gui_Edit_Hwnd1% + Gui_W := Gui_W+Text_W WinSet, Transparent,%Gui_Font_Transparency%, ahk_id %SwitchGui_id% - WinSet, Region, 10-0 W%Text_W% H%Text_H% R5-5, ahk_id %SwitchGui_id% + WinSet, Region, 10-0 W%Gui_W% H%Gui_H% R5-5, ahk_id %SwitchGui_id% } If (TT_OnOff=1){ Gui, SwitchTT:Destroy - Gui, SwitchTT:-SysMenu +ToolWindow +AlwaysOnTop -Caption +HwndSwitchTT_id +E0x20 + Gui, SwitchTT:-SysMenu +ToolWindow +AlwaysOnTop -Caption -DPIScale +HwndSwitchTT_id +E0x20 Gui, SwitchTT:Color, 333434 Gui, SwitchTT:Font, c02ecfb s%TT_Font_Size%, Segoe UI - Gui, SwitchTT:Add,Text, x18 y3 HwndTT_Edit_Hwnd, %Display_Cn% | A + Gui, SwitchTT:Add,Text, x18 y3 HwndTT_Edit_Hwnd, %Display_En% ControlGetPos, , , Text_W, Text_H, , ahk_id %TT_Edit_Hwnd% - Text_W := Text_W+20 - Text_H := Text_H+8 + TT_W := Text_W+18 + TT_H := Text_H+8 + Gui, SwitchTT:Add,Text, x%TT_W% y3 HwndTT_Edit_Hwnd1, %A_Space%| A + ControlGetPos, , , Text_W, Text_H, , ahk_id %TT_Edit_Hwnd1% + TT_W := TT_W+Text_W WinSet, Transparent,%TT_Font_Transparency%, ahk_id %SwitchTT_id% - WinSet, Region, 10-0 W%Text_W% H%Text_H% R5-5, ahk_id %SwitchTT_id% + WinSet, Region, 10-0 W%TT_W% H%TT_H% R5-5, ahk_id %SwitchTT_id% } } @@ -867,7 +903,12 @@ Tray_Display_KBL(KBL_Flag:=0,CapsLock_Flag:=0) { ;更改显示提示图标 Menu, Tray, Icon, HICON:*%ACNIcon% Else Menu, Tray, Icon, HICON:*%CNIcon% - Else + Else If (KBL_Flag=1) + If (CapsLock_Flag=1) + Menu, Tray, Icon, HICON:*%AENIcon% + Else + Menu, Tray, Icon, HICON:*%CNENIcon% + Else If (KBL_Flag=2) If (CapsLock_Flag=1) Menu, Tray, Icon, HICON:*%AENIcon% Else @@ -998,6 +1039,7 @@ initINI() { ;初始化INI FileAppend,左键弹起后提示输入法状态生效窗口=Code.exe`n, %INI% FileAppend,定时重置输入法=60|编辑器`n, %INI% FileAppend,切换重置大小写=1`n, %INI% + FileAppend,上屏字符内容=2`n, %INI% FileAppend,[自定义窗口组]`n, %INI% FileAppend,1=全局窗口=0=AllGlobalWin=全局窗口组`n, %INI% @@ -1031,7 +1073,7 @@ createTray() { ;右键托盘菜单 ;初始化托盘提示 TrayTipContent := "中英文自动切换" TrayTipContent .= A_IsAdmin=1?"(管理员)":"(非管理员)" - TrayTipContent .= "`n" AppStartTime + TrayTipContent .= "`n" AppStartTime APPType Menu, Tray, Tip, %TrayTipContent% Menu, Tray, NoStandard Menu, Tray, Add, 关闭菜单, menu_close @@ -1091,10 +1133,14 @@ FilePathRun(FilePath){ ;使用内部关联打开文件 } menu_close: ;关闭菜单 + gosub,Menu_Reload Return Menu_Language: ;打开语言首选项 - Run,ms-settings:regionlanguage + If (OSVersion<=7) + Run,rundll32.exe shell32.dll`,Control_RunDLL input.dll + Else + Run,ms-settings:regionlanguage Return Menu_Settings_Gui: ;设置页面GUI @@ -1308,7 +1354,8 @@ Menu_Settings_Gui: ;设置页面GUI LV_Add(, 3, "左键点击输入位置显示输入法状态", Left_Mouse_ShowKBL_State, Left_Mouse_ShowKBL,"-在指定窗口组左键点击提示输入法:`n1.参数1为开关,参数2为生效窗口组`n2.参数使用|分隔") LV_Add(, 4, "左键弹起后提示输入法状态生效窗口", Left_Mouse_ShowKBL_State, Left_Mouse_ShowKBL_Up,"-在指定窗口组左键点击提示输入法时,使用左键弹起响应:`n参数为窗口或窗口组") LV_Add(, 5, "定时重置输入法", "秒", SetTimer_Reset_KBL,"-无操作固定时间重置输入法(秒):`n1.参数1为时间,参数2为窗口组`n2.参数使用|分隔") - LV_Add(, 6, "切换重置大小写", TransformState(DefaultCapsLockState,SubStr(Reset_CapsLock, 1, 1)), Reset_CapsLock,"-切换输入法后自动重置大小写:`n1.参数1为大小写状态(0为不重置,1为小写,2为大写),参数2为屏蔽窗口组,该窗口组将不生效`n2.参数使用|分隔") + LV_Add(, 6, "切换重置大小写", TransformState(DefaultCapsLockState,Reset_CapsLock_State), Reset_CapsLock,"-切换输入法后自动重置大小写:`n1.参数1为大小写状态(0为不重置,1为小写,2为大写),参数2为屏蔽窗口组,该窗口组将不生效`n2.参数使用|分隔") + LV_Add(, 7, "上屏字符内容", Enter_Inputing_Content, Enter_Inputing_Content,"-中文输入法状态下输入待上屏的字符处理(输入法shift关闭生效):`n0表示使用输入法处理,1表示丢弃字符,2表示上屏字符,3表示上屏第一个候选内容`n目前已支持输入法:搜狗输入法、QQ五笔输入法、QQ拼音输入法、手心输入法") LV_ModifyCol(1,group_list_width_55*0.08 " Integer Center") LV_ModifyCol(2,group_list_width_55*0.22) LV_ModifyCol(3,group_list_width_55*0.08 " Integer Center") @@ -1385,7 +1432,7 @@ Menu_About: ;页面GUI:关于 Menu, Tray, Icon, %A_AhkPath% Gui, 99:Destroy Gui, 99:Color, FFFFFF - Gui, 99:Add, ActiveX, x0 y0 w700 h550 voWB, shell explorer + Gui, 99:Add, ActiveX, x0 y0 w700 h570 voWB, shell explorer oWB.Navigate("about:blank") vHtml = ( @@ -1565,6 +1612,7 @@ Set_OK: ;确认按钮 Case 4: IniWrite, %OutputVar%, %INI%, 高级设置, 左键弹起后提示输入法状态生效窗口 Case 5: IniWrite, %OutputVar%, %INI%, 高级设置, 定时重置输入法 Case 6: IniWrite, %OutputVar%, %INI%, 高级设置, 切换重置大小写 + Case 7: IniWrite, %OutputVar%, %INI%, 高级设置, 上屏字符内容 } } @@ -1794,7 +1842,7 @@ SetAdvancedConfig: ; 保存高级配置 GuiControlGet, OutputVar0,, %Advanced_Config_Edit_Hwnd0% GuiControlGet, OutputVar1,, %Advanced_Config_Edit_Hwnd1% GuiControlGet, OutputVar2,, %Advanced_Config_Edit_Hwnd2% - If (ConfigEdit_Flag=1 && !groupNumObj.HasKey(NewOrder) && groupNameObj.HasKey(OutputVar)){ + If (substr(Showvar,1,2)="添加" && ConfigEdit_Flag=1 && !groupNumObj.HasKey(NewOrder) && groupNameObj.HasKey(OutputVar)){ FocusNum := LVFocusNum(2,OutputVar) }Else If (OutputVar!=""){ If (!LV_GetText(tempVar, RunRowNumber , 1)){ @@ -1987,33 +2035,39 @@ Return Set_ChineseEnglish: ;当前窗口设为英文(中文输入法) If (TarHotFunFlag=0 && Outer_InputKey_Compatible=1 && A_ThisHotkey!="" && A_PriorKey!=RegExReplace(A_ThisHotkey, "iS)(~|\s|up|down)", "")) Return + Gosub, Lable_ToEnglishInputingOpera setKBLlLayout(1) Return Set_English: ;当前窗口设为英文 If (TarHotFunFlag=0 && Outer_InputKey_Compatible=1 && A_ThisHotkey!="" && A_PriorKey!=RegExReplace(A_ThisHotkey, "iS)(~|\s|up|down)", "")) Return + Gosub, Lable_ToEnglishInputingOpera setKBLlLayout(2) Return toggle_CN_CNEN: ;切换中英文(中文) If (TarHotFunFlag=0 && Outer_InputKey_Compatible=1 && A_ThisHotkey!="" && A_PriorKey!=RegExReplace(A_ThisHotkey, "iS)(~|\s|up|down)", "")) Return - If (getIMEKBL(gl_Active_IMEwin_id)!=EN_Code && getIMECode(gl_Active_IMEwin_id)=1) + KBLState := (getIMEKBL(gl_Active_IMEwin_id)!=EN_Code?(getIMECode(gl_Active_IMEwin_id)!=0?0:1):2) + If (KBLState=0 || KBLState=2){ + Gosub, Lable_ToEnglishInputingOpera setKBLlLayout(1) - Else + }Else If (KBLState=1 || KBLState=2) setKBLlLayout(0) Return toggle_CN_EN: ;切换中英文输入法 If (TarHotFunFlag=0 && Outer_InputKey_Compatible=1 && A_ThisHotkey!="" && A_PriorKey!=RegExReplace(A_ThisHotkey, "iS)(~|\s|up|down)", "")) Return - If (getIMEKBL(gl_Active_IMEwin_id)!=EN_Code && getIMECode(gl_Active_IMEwin_id)=1){ + KBLState := (getIMEKBL(gl_Active_IMEwin_id)!=EN_Code?(getIMECode(gl_Active_IMEwin_id)!=0?0:1):2) + If (KBLState=0){ + Gosub, Lable_ToEnglishInputingOpera If (KBLEnglish_Exist=1) setKBLlLayout(2) Else setKBLlLayout(1) - }Else + }Else If (KBLState=1 || KBLState=2) setKBLlLayout(0) Return @@ -2100,13 +2154,30 @@ Lable_Click_showSwitch: ; 左键点击提示 If WinActive("ahk_group Left_Mouse_ShowKBL_Up_WinGroup"){ KeyWait, LButton, L } - SetTimer,SetTimer_Lable_Click_showSwitch,-20 + If OSVersion<=7 + SetTimer,SetTimer_Lable_Click_showSwitch,-100 + Else + SetTimer,SetTimer_Lable_Click_showSwitch,-20 Return SetTimer_Lable_Click_showSwitch: showSwitchTT(LastKBLState,LastCapsState,1) Return +Lable_ToEnglishInputingOpera: ;切换到英文时已输入的字符处理 + Thread, NoTimers, True + DetectHiddenWindows off + If (Enter_Inputing_Content!=0 && WinExist("ahk_group IMEInput_ahk_group")){ + Switch Enter_Inputing_Content + { + Case 1:SendInput, {Esc} + Case 2:SendInput, {Enter} + Case 3:SendInput, {Space} + } + } + DetectHiddenWindows on + Thread, NoTimers, False +Return ExitFunc(){ ;退出执行 DllCall( "SystemParametersInfo", "UInt",0x57, "UInt",0, "UInt",0, "UInt",0 ) ;还原鼠标指针 diff --git a/README.md b/README.md index ae24545..66c8adc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # AHK中英文输入法自动切换 +![自动切换输入法演示.gif](https://m.360buyimg.com/babel/jfs/t1/36887/26/16547/2534212/62bfc572Ec9f2d342/7445b8bf476b9cce.gif) + ![自定义加提示.gif](https://m.360buyimg.com/babel/jfs/t1/21436/5/16974/318988/62a17c14E2f88c857/8c3f9bf58757e1a4.gif) + ![1654749845991.png](https://m.360buyimg.com/babel/jfs/t1/223858/36/12438/250496/62a17c53E61420db6/9782c3483c595313.png) #### 介绍 @@ -11,8 +14,9 @@ Ahk版本: 1.1.33.10 3. 可设置快捷键将指定应用设置为中英文,快捷键切换输入法 #### 特殊说明 -1. 暂时不支持 微软中文输入法 -2. 建议将输入法中shift切换关闭,在软件-热键配置-【特殊】热键中设置shift功能 +1. 建议win10及以上系统 +2. 如出现中英文状态识别错误情况或者需要左右shift分别设置切换功能,建议将输入法中shift切换关闭,在软件-热键配置-【特殊】热键中设置shift功能 +3. 不支持非中英文输入法切换 #### 交流群 548517941【KBLAutoSwitch交流群】