Преобразование раскладок клавиатуры

Всех приветствую.

Использую такую функцию для нажатия клавиши в определенное окно:

win32gui.PostMessage(self.hwnd, win32con.WM_KEYDOWN, WINDOW_ID, 0)

Проблема такая:

мне необходимо набрать русский текст, но функция PostMessage принимает только английские клавиши для нажатия.

Но, допустим, если включить русскую раскладку клавиатуры и нажать через postMessage на Q - то нажмется уже "Й".

Как можно преобразовать русские символы клавиатуры в английские? Типа:

ПРИВЕТ -> GHBDTN

Может, есть какая-нибудь таблица для этого?


Ответы (1 шт):

Автор решения: DGDays

Вот рабочий способ перевода из русской раскладки в английскую:

x = str(input()) #Само слово, если не подходит, то надо поменять под ваш вариант
a = {'Й':'Q','Ц':'W','У':'E','К':'R','Е':'T',
    'Н':'Y','Г':'U','Ш':'I','Щ':'O','З':'P',
    'Х':'{','Ъ':'}','Ф':'A','Ы':'S','В':'D',
    'А':'F','П':'G','Р':'H','О':'J','Л':'K',
    'Д':'L','Ж':':','Э':'"','Я':'Z','Ч':'X',
    'С':'C','М':'V','И':'B','Т':'N','Ь':'M',
    'Б':'<','Ю':'>','Ё':'~','й':'q','ц':'w',
    'у':'e','к':'r','е':'t','н':'y','г':'u',
    'ш':'i','щ':'o','з':'p','х':'[','ъ':']',
    'ф':'a','ы':'s','в':'d','а':'f','п':'g',
    'р':'h','о':'j','л':'k','д':'l','ж':';',
    'э':"'",'я':'z','ч':'x','с':'c','м':'v',
    'и':'b','т':'n','ь':'m','б':',','ю':'.',
    'ё':'`'} #Список со всеми значениями
res = '' #Создание пустой строки
j = 0 #Используется для выбора определённой буквы из x
while j < len(x): #Пока j < длинны строки x выполняется цикл
    if x[j] in a: #Если в списке a есть буква из x под номером j, выполняется перевод в английскую раскладку
        i = a[x[j]]
        res += i
        j+=1
    else: #Иначе добавляет пробел
        res+= ' '
print(res) #Выводит результат в консоль(если не подходит, то меняйте под свой случай)

Код может полностью вам не подходить, если что меняйте, но основную суть кода я расписал.

→ Ссылка