Как зафиксировать раскладку клавиатуры для конкретного приложения

Константин Докучаев
Константин Докучаев
Как зафиксировать раскладку клавиатуры для конкретного приложения
Any Bill

При написании кода (да и вообще при работе за компьютером) часто хочется, чтобы при открытии конкретного приложения для него по умолчанию активировалась определённая раскладка. На Windows есть пара вариантов, как решить эту проблему.

Системными средствами

Windows 10 и выше может запоминать начальную раскладку для приложений. На Windows 11 для этого нужно перейти в настройки системы, далее открыть раздел Время и язык, далее Язык и регион > Ввод > Дополнительные параметры клавиатуры.

В открывшихся настройках нужно поставить галочку напротив пункта Позволить выбирать метод ввода для каждого окна приложения.

Теперь для каждого приложения будет использоваться своя раскладка. Если в Telegram вы печатали на русском, а в IDE на английском, то именно эти раскладки и будут сохраняться при переключении между приложениями.

С помощью AutoHotkey

Многие из вас уже пользуются утилитой для автоматизации AutoHotkey. С её помощью можно тоже управлять процессом переключения раскладки, но придётся приложить чуть больше усилий.

Создайте файл скрипта AutoHotkey с таким кодом:

SetTimer(CheckActiveWindow, 500) ; Проверяем активное окно каждые 500 мс

CheckActiveWindow() {
    hWnd := WinExist("A") ; Проверяем, есть ли активное окно
    if (!hWnd)
        return ; Если нет активного окна, выходим

    activeProcess := WinGetProcessName(hWnd) ; Получаем имя процесса активного окна

    if (activeProcess = "notepad.exe") {
        SetLayout(0x0409) ; Английская раскладка
    } else if (activeProcess = "wordpad.exe") {
        SetLayout(0x0419) ; Русская раскладка
    }
}

SetLayout(localeID) {
    hWnd := WinExist("A") ; Проверяем активное окно перед сменой раскладки
    if (!hWnd)
        return

    PostMessage(0x50, 0, localeID,, hWnd) ; Меняем раскладку
}

while true {
    Sleep(1000)
}

В нём для приложения Notepad по умолчанию задана английская раскладка, а для WordPad — русская. По аналогии вы можете добавить нужные вам приложения и раскладки.



Great! Next, complete checkout for full access to All-In-One Person
Welcome back! You've successfully signed in
You've successfully subscribed to All-In-One Person
Success! Your account is fully activated, you now have access to all content
Success! Your billing info has been updated
Your billing was not updated