My Windows11 Settings
tech
12 views
Nov 18, 2024

习惯了Mac的输入法、大小写切换方式之后,再使用Windows时十分难受,感觉Windows对于输入法、的切换逻辑十分不合理,经过一段时间的探索,我找到了最佳的体验方式:关闭Windows中shift切换中英文的设定 + AHY脚本实现大写锁定切换中英文输入法。

#windows设置

首选是添加一个英文的输入法 image.png

关掉shift切换中英文

image.png

image.png

image.png

全关

image.png

#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)
    }
  }
}

  
Total PV : 0|UV : 0
Current Online:1
From :