Python Изменение раскладки клавиатуры

Рейтинг: 1Ответов: 1Опубликовано: 03.02.2023

OC windows 10

для получения раскладки клавиатуры использую функцию (она работает корректно):

import ctypes
def get_layout():
    u = ctypes.windll.LoadLibrary("user32.dll")
    pf = getattr(u, "GetKeyboardLayout")
    if hex(pf(0)) == '0x4190419':
        return 'ru'
    if hex(pf(0)) == '0x4090409':
        return 'en'

для изменения на иную раскладку:

import py_win_keyboard_layout
# переключение на русскую раскладку
py_win_keyboard_layout.change_foreground_window_keyboard_layout(0x04090419)
# переключение на английскую раскладку
py_win_keyboard_layout.change_foreground_window_keyboard_layout(0x04090409)

Переключение на en(0x04090409) происходит верно, но переключение на ру(0x04090419), игнорируется без какой-либо ошибки.

ps. попробовал использовать win32api, опять же команды игнорируются

import win32api
win32api.LoadKeyboardLayout("00000409", 1)
win32api.LoadKeyboardLayout("00000419", 2)

Буду крайне признателен за указание ошибки или иной путь решения. Заранее благодарю за помощь!

Ответы

▲ 1Принят

Могу предложить такой вариант.

import pyautogui


def switch_keyboard_language():
    pyautogui.keyDown('alt')
    pyautogui.keyDown('shift')
    pyautogui.keyUp('alt')
    pyautogui.keyUp('shift')