My Windows11 Settings
tech
12 views
Nov 18, 2024
习惯了Mac的输入法、大小写切换方式之后,再使用Windows时十分难受,感觉Windows对于输入法、的切换逻辑十分不合理,经过一段时间的探索,我找到了最佳的体验方式:关闭Windows中shift切换中英文的设定 + AHY脚本实现大写锁定切换中英文输入法。
#windows设置
首选是添加一个英文的输入法
关掉shift切换中英文
全关
#AHK脚本
此脚本实现了使用大写锁定切换中英输入法的功能
#Requires AutoHotkey v2.0
#SingleInstance Force
; 后台运行
Persistent
CapsLock::
{
if (KeyWait("CapsLock", "T0.5")) {
; 点击CapsLock,切换中英文
Send "{Alt Down}{Shift Down}{Alt Up}{Shift Up}"
} else {
; 长按CapsLock,切换大小写锁定
SetCapsLockState !GetKeyState("CapsLock", "T")
}
}
此脚本实现了锁定中文输入法的中文输入模式功能
原作者:
脚本地址: #Include %A_ScriptDir%
timeInterval := 500
; +-------------------------+-------------------------+
; | SubLanguage ID | Primary Language ID |
; +-------------------------+-------------------------+
; 15 10 9 0 bit
InChs() {
ime_status := DllCall("GetKeyboardLayout", "int", 0, "UInt")
return (ime_status & 0xffff) = 0x804 ; LANGID(Chinese) = 0x804
}
SwitchImeState(id) {
SendMessage(0x283, ; WM_IME_CONTROL
0x002, ; wParam IMC_SETCONVERSIONMODE
1025, ; lParam (Chinese)
, ; Control (Window)
id)
}
DetectHiddenWindows True
SetTimer Mainloop, 1000
MainLoop() {
try {
hWnd := WinGetID("A")
id := DllCall("imm32\ImmGetDefaultIMEWnd", "Uint", hWnd, "Uint")
if (InChs()) {
SwitchImeState(id)
}
}
}