V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aragakiyuii
V2EX  ›  Windows

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

  •  
  •   aragakiyuii · 2022-05-04 21:45:15 +08:00 · 3800 次点击
    这是一个创建于 964 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用的 win10 pro 英文版:

    • Version: 21H2
    • OS build: 19044.1645

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


    期望:

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

    问题:

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

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

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

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

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

    不过是 2019 年发的了,现在具体操作时可能有些细微差别
    QNLvw5fLfr7c
        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)
    }
    }
    ```
    aragakiyuii
        12
    aragakiyuii  
    OP
       2022-05-07 07:34:18 +08:00 via iPhone
    @maokwen thanks !
    aragakiyuii
        13
    aragakiyuii  
    OP
       2022-05-07 07:35:53 +08:00 via iPhone   ❤️ 1
    @wudicgi 谢谢,不过我实在不想装别的输入法😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:07 · PVG 05:07 · LAX 13:07 · JFK 16:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.