微软拼音输入法的中英文输入模式能只固定成一个吗?

2022-05-04 21:45:15 +08:00
 aragakiyuii

我用的 win10 pro 英文版:

现在语言里默认装了英语,我手动添加了简体中文并使用微软拼音输入法,关闭了 Chinese/English mode switch 快捷键


期望:

输入英文使用默认输入法,输入中文使用微软拼音输入法(简单来说就是关闭微软拼音的英文输入模式)

问题:

现在有时候切换到微软拼音就默认变成 English mode,我没开启快捷键切换导致我每次只能手动点图标切换。但是玩非窗口化游戏时就一直没法切换成 Chinese mode,输入中文只能切窗口输入复制粘贴

3806 次点击
所在节点    Windows
13 条回复
placeholder
2022-05-04 22:33:12 +08:00
你的需求似乎在现阶段是无法实现的。除非你能够让你使用的应用程序在输入框成为焦点时强制要求输入中文,这样也许是能让输入法在切换的时候默认是输入中文的,然而这种解决方案目前也是不稳定的,有一定概率依然是输入英文的状态。

微软在这方面并没有规定一个明确的切换逻辑,甚至连微软都搞不明白为什么相同的环境下切换状态会出现不同的结果。

2333
forgottencoast
2022-05-04 22:52:58 +08:00
我感觉是 bug ,这个时候就算你不“关闭了 Chinese/English mode switch 快捷键”,也没用,它就切换不了。我还遇到过手动点图片也切换不了的。
lisongeee
2022-05-04 22:58:25 +08:00
开启 “使用以前版本的微软拼音输入法”,即可
sona
2022-05-05 03:26:58 +08:00
用 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
}
mgrddsj
2022-05-05 05:03:39 +08:00
我的观察是,在文件资源管理器重命名文件的时候,微软拼音会默认为 English mode
pengtdyd
2022-05-05 09:13:28 +08:00
你有没有想过,如果只用英文是不需要输入法的。
aragakiyuii
2022-05-05 09:14:21 +08:00
@placeholder #1
@forgottencoast #2
microsoft sucks !

@lisongeee #3
@sona #4
谢谢,下班回家试试
aragakiyuii
2022-05-05 09:24:25 +08:00
@pengtdyd #6 我提到的 "输入法" 描述的不太准确,应该是对应语言设置中的 keyboards
wudicgi
2022-05-05 16:55:10 +08:00
可以看我这篇《修改 Windows 10 的中文输入法配置,使其像 Win7, XP 一样易于使用》
https://blog.wudilabs.org/entry/932e7229/

不过是 2019 年发的了,现在具体操作时可能有些细微差别
QNLvw5fLfr7c
2022-05-07 05:14:24 +08:00
受 @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)
}
}
```
QNLvw5fLfr7c
2022-05-07 05:19:05 +08:00
aragakiyuii
2022-05-07 07:34:18 +08:00
@maokwen thanks !
aragakiyuii
2022-05-07 07:35:53 +08:00
@wudicgi 谢谢,不过我实在不想装别的输入法😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/850824

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX