Печать русских символов в pyautogui

Я пытался печатать через pyautogui но увы он поддерживает только английские буквы.

import pyautogui
pyautogui.write("Парам, пам, пам", interval=0.1)

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

Искал в интернете как сделать "Человеческую" Печать с интервалами между каждой буквой, ничего найти так и не смог.


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

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

Какой-то странный модуль pyautogui. Куда не посмотри, не работает и требует костылей.

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

import pyautogui, pyperclip, keyboard

def paste(text: str):    
    buffer = pyperclip.paste()
    pyperclip.copy(text)
    keyboard.press_and_release('ctrl + v')
    pyperclip.copy(buffer)


pyautogui.hotkey('Win')
paste("Привет мир!")

У меня не срабатывает эмуляция нажатия клавиш

pyautogui.hotkey("ctrl", "v")

Поэтому используется модуль клавиатуры

# Для установки pip install keyboard
keyboard.press_and_release('ctrl + v')

Обновление

Вариант написания текста с задержкой, т.е. эмуляция печати текста

from keyboard import press_and_release
from time import sleep
import pyautogui, pyperclip

def paste(text: str):    
    pyperclip.copy(text)
    press_and_release('ctrl + v')


def type(text: str, interval=0.0):    
    buffer = pyperclip.paste()
    if not interval:
        paste(text)
    else:
        for char in text:
            paste(char)
            sleep(interval)
    pyperclip.copy(buffer)


pyautogui.hotkey('Win')
type('Привет мир!', 0.1)
→ Ссылка