轻松区分中文输入法和英文大写、英文小写状态
什么是输入法状态?
输入法状态指的是你当前使用的输入法类型和模式。常见的输入法状态包括:
- 中文输入法:用来输入中文字符,如拼音输入法、五笔输入法等。
- 英文输入法:用于输入英文字符或数字,通常是键盘上的直接输入模式。
- 大写和小写状态:在英文输入模式下,通常可以切换大写(Caps Lock)和小写状态。
为什么要显示输入法状态?
显示输入法状态能够帮助用户清楚地知道自己当前的输入方式。例如,当用户在输入中文时,知道自己处于拼音模式,或者知道输入是否处于大写字母状态,避免错误输入。
光标和光标图标
什么是光标?
光标(或光标指针)是显示在计算机屏幕上的一个标记,用于指示当前用户可以输入的文本位置。它通常是一个闪烁的竖线或条形,位于你想要插入文本的位置。
如何通过光标显示输入状态?
光标不仅仅表示文本插入位置,它的形态也可以用来表示输入状态。例如:
- 改变光标的形态:可以通过修改光标的图标(比如,光标图标变为“中文输入”图标或“英文输入”图标)来指示当前的输入状态。
- 通过光标颜色或形状的变化:有些脚本或程序通过修改光标颜色或形状来区分不同的输入法状态。例如,当用户在中文输入法下时,光标可能变为一个汉字输入指示符,显示英文输入时,光标可能变为一个标准的文本输入指针。
包含光标图标文件打包下载:
; 方便区分中文输入法和英文大写、英文小写状态 #NoEnv SetBatchLines -1 SetWorkingDir %A_ScriptDir% SetTimer 中文光标判断, 200 Return ; 光标指针文件显示效果可自行修改 中文光标判断: if !GetKeyState("CapsLock", "T") if (IME_GET()!=光标状态缓存) if IME_GET() DllCall("SystemParametersInfo", "Uint", SPI_SETCURSORS := 0x57, "Uint", 0, "Ptr", 0, "Uint", 0) , 光标状态缓存=1 else 英文光标 := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\beam_r.cur") ; beam_i.cur为黑色边缘 , DllCall("SetSystemCursor", "Uint", 英文光标, "Int", 32513) , 光标状态缓存=0 ; TaskBar_SetAttr() ; 托盘任务栏透明 Return ; 按CapsLock大小写时,鼠标光标同步切换来提示状态 CapsLock:: SetCapsLockState % !GetKeyState("CapsLock", "T") if GetKeyState("CapsLock", "T") 大写光标 := DllCall( "LoadCursorFromFile", "Str", A_ScriptDir "\小写光标beam_i.cur") , DllCall("SetSystemCursor", "Uint", 大写光标, "Int", 32513) else if IME_GET() DllCall("SystemParametersInfo", "Uint", SPI_SETCURSORS := 0x57, "Uint", 0, "Ptr", 0, "Uint", 0) else 英文光标 := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\beam_r.cur") ; beam_i.cur为黑色边缘 , DllCall("SetSystemCursor", "Uint", 英文光标, "Int", 32513) KeyWait CapsLock Return ; 输入法状态判断 IME_GET() { DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", "Uint", WinActive("A"), "Uint") DetectHiddenWindows % ("On", DHW:=A_DetectHiddenWindows) SendMessage 0x283, 0x005, 0,, ahk_id %DefaultIMEWnd% DetectHiddenWindows %DHW% Return ErrorLevel }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)