我用的 win10 pro 英文版:
现在语言里默认装了英语,我手动添加了简体中文并使用微软拼音输入法,关闭了 Chinese/English mode switch
快捷键
期望:
输入英文使用默认输入法,输入中文使用微软拼音输入法(简单来说就是关闭微软拼音的英文输入模式)
问题:
现在有时候切换到微软拼音就默认变成 English mode
,我没开启快捷键切换导致我每次只能手动点图标切换。但是玩非窗口化游戏时就一直没法切换成 Chinese mode
,输入中文只能切窗口输入复制粘贴
1
placeholder 2022-05-04 22:33:12 +08:00
你的需求似乎在现阶段是无法实现的。除非你能够让你使用的应用程序在输入框成为焦点时强制要求输入中文,这样也许是能让输入法在切换的时候默认是输入中文的,然而这种解决方案目前也是不稳定的,有一定概率依然是输入英文的状态。
微软在这方面并没有规定一个明确的切换逻辑,甚至连微软都搞不明白为什么相同的环境下切换状态会出现不同的结果。 2333 |
2
forgottencoast 2022-05-04 22:52:58 +08:00
我感觉是 bug ,这个时候就算你不“关闭了 Chinese/English mode switch 快捷键”,也没用,它就切换不了。我还遇到过手动点图片也切换不了的。
|
3
lisongeee 2022-05-04 22:58:25 +08:00
开启 “使用以前版本的微软拼音输入法”,即可
|
4
sona 2022-05-05 03:26:58 +08:00 2
用 ahk 强制每次切换的时候检测输入法状态,检测是输入法而且是英文就切换到中文。
A_IsImeCnState() { detecthiddenwindows,on hWnd:=winexist("A") id:=DllCall("imm32\ImmGetDefaultIMEWnd", "Uint", hWnd, "Uint") sendmessage,0x283,0x001,0,,ahk_id %id% detecthiddenwindows,off ; 微软拼音(英-中,新 /旧,新旧 /新旧) 0/1024-1/1025 ; 搜狗五笔 0-1025 ; 手心 1024-1025 ; 搜狗拼音中英都是 1025 (无效) if (errorlevel == 1 || errorlevel== 1025) { return true } return false } |
5
mgrddsj 2022-05-05 05:03:39 +08:00 via Android
我的观察是,在文件资源管理器重命名文件的时候,微软拼音会默认为 English mode
|
6
pengtdyd 2022-05-05 09:13:28 +08:00
你有没有想过,如果只用英文是不需要输入法的。
|
7
aragakiyuii OP |
8
aragakiyuii OP @pengtdyd #6 我提到的 "输入法" 描述的不太准确,应该是对应语言设置中的 keyboards
|
9
wudicgi 2022-05-05 16:55:10 +08:00
可以看我这篇《修改 Windows 10 的中文输入法配置,使其像 Win7, XP 一样易于使用》
https://blog.wudilabs.org/entry/932e7229/ 不过是 2019 年发的了,现在具体操作时可能有些细微差别 |
10
QNLvw5fLfr7c 2022-05-07 05:14:24 +08:00 1
受 @sona #4 的启发,这是我的方案,用 Autohotkey 2 将微软拼音输入法锁在中文模式。这样唯一的快捷键就只剩下 Win + Space 了。
``` #Include %A_ScriptDir% timeInterval := 500 GetImeState(id) { return SendMessage(0x283, ; WM_IME_CONTROL ; 0x005, ; IMC_GETOPENSTATUS 0x001, ; wParam IMC_SETCONVERSIONMODE 0, ; lParam (NoArgs) , ; Control (Window) id) } SwitchImeState(id) { SendMessage(0x283, ; WM_IME_CONTROL ; 0x006, ; IMC_GETOPENSTATUS 0x002, ; wParam IMC_SETCONVERSIONMODE 1025, ; lParam (Chinese) , ; Control (Window) id) } DetectHiddenWindows True outer: Loop { try { hWnd := WinGetID("A") } catch as e { ; ^Esc 开始菜单弹窗,会卡死在找不到当前窗口 continue("outer") } id := DllCall("imm32\ImmGetDefaultIMEWnd", "Uint", hWnd, "Uint") if (GetImeState(id) == 0) { SwitchImeState(id) } } ``` |
11
QNLvw5fLfr7c 2022-05-07 05:19:05 +08:00
|
12
aragakiyuii OP @maokwen thanks !
|
13
aragakiyuii OP @wudicgi 谢谢,不过我实在不想装别的输入法😂
|