
1 ZZZZone 1 月 20 日 我没用 Obsidian , 但是有相似场景。 我的解法是用 Karabiner 改键: 我把大写键改成 Esc + 切换英文 左 Shift 切英文, 右 Shift 切中文。 这样就做到了按大写键 进入 normal 模式同时自动切英文输入法。 |
2 frankyzf OP 谢谢你的建议,让 AI 写了个 AutoHotKey 2.0 的脚本 ``` autohotkey $Esc:: { IME_Set(0) ; 0 代表英文/关闭 IME ,1 代表中文/打开 IME Send "{Esc}" } $^[:: { IME_Set(0) Send "{Blind}^{[}" } ; ------------------------------------------------------------------------- ; 下面是通用的 IME 控制函数(无需修改,放在脚本末尾即可) ; 原理:通过 Windows API 向当前窗口发送指令,直接设置输入法状态 ; ------------------------------------------------------------------------- IME_Set(state) { try { hwnd := DllCall("GetForegroundWindow", "Ptr") if !hwnd return ; 获取默认 IME 窗口句柄 hIME := DllCall("Imm32\ImmGetDefaultIMEWnd", "Ptr", hwnd, "Ptr") if !hIME return ; WM_IME_COnTROL= 0x0283 ; IMC_SETOPENSTATUS = 0x006 DllCall("SendMessage", "Ptr", hIME, "UInt", 0x0283, "Ptr", 0x006, "Ptr", state) } } ``` |