强制将 Chrome 地址栏的输入语言默认为英语

强制将 Chrome 地址栏的输入语言默认为英语

我在浏览时经常根据所做事情的上下文在两种输入语言之间切换。但是,当我进入地址栏时,99% 的时间里,我想用英语输入一些内容,但最终却经常不小心输入了另一种语言,这很烦人。

因此,我想知道是否有办法强制地址栏的输入语言始终默认为英语,除非我在光标位于地址栏时明确切换语言。

这有可能实现吗?也许可以使用 Chrome 标记、浏览器扩展等。

答案1

您可以使用免费开源 自动热键

以下脚本将使用所需参数启动 chrome --force-renderer-accessibility,并在焦点变为 Chrome 的地址栏时更改 Windows 键盘布局。

根据要求,从 Github 下载并解压库 UI自动化 到文件夹中。您需要在脚本中修改文件夹 UIAutomation\Lib和路径chrome.exe

请注意,您可以从脚本中删除RunChrome 命令,只运行脚本:它将在使用该--force-renderer-accessibility参数启动的任何 Chrome 实例上运行,因此您只需将此参数添加到 Chrome 调用中即可。您可能还想导航到chrome://accessibility/并启用该Internal选项。有关可访问性的更多信息,请参阅 Chromium 文章 无障碍功能概述

脚本如下:

#Requires AutoHotkey v1.1.33+
#SingleInstance, force
#Warn
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
SetTitleMatchMode, 2
SetBatchLines, -1

; --- MODIFY these three lines as needed ---
#include C:\Temp\UIAutomation-main\Lib\UIA_Interface.ahk
#include C:\Temp\UIAutomation-main\Lib\UIA_Browser.ahk
browserExe := "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

Run, %browserExe% --force-renderer-accessibility
WinWaitActive, ahk_exe %browserExe%
cUIA := new UIA_Browser("ahk_exe " browserExe)
h := UIA_CreateEventHandler("EventHandler", "FocusChanged") ; Create a new FocusChanged event handler that calls the function EventHandler
cUIA.AddFocusChangedEventHandler(h) ; Add a new FocusChangedEventHandler
OnExit("ExitFunc") ; Set up an OnExit call to clean up the handler when exiting the script
return

EventHandler(el) {
    global cUIA
    try {
        if cUIA.CompareElements(cUIA.URLEditElement, el) ; Check if the focused element is the same as Chrome's address bar element
            SetDefaultKeyboard(0x0409) ; english-US - If the Address bar was focused set languagse
    }
}

ExitFunc() {
    global cUIA, h
    cUIA.RemoveFocusChangedEventHandler(h) ; Remove the event handler. Alternatively use cUIA.RemoveAllEventHandlers() to remove all handlers
}

; https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-language-pack-default-values?view=windows-11
SetDefaultKeyboard(LocaleID){
    Global
    SPI_SETDEFAULTINPUTLANG := 0x005A
    SPIF_SENDWININICHANGE := 2
    Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
    VarSetCapacity(Lan%LocaleID%, 4, 0)
    NumPut(LocaleID, Lan%LocaleID%)
    DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &Lan%LocaleID%, "UInt", SPIF_SENDWININICHANGE)
    WinGet, windows, List
    Loop %windows% {
        PostMessage 0x50, 0, %Lan%, , % "ahk_id " windows%A_Index%
    }
}

安装 AutoHotKey 后,将上述文本放入一个.ahk文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

相关内容