Мне нужно симулировать нажатие на клавиши
У меня есть vps, на который возможно установить лишь дистрибутив Linux.
Так же, у меня есть скрипт на Python, который должен писать текст, симулируя клавиши. Мне необходимо сделать так, чтобы он вводил некоторые данные в окно.
Но, к сожалению, он либо ничего не пишет, либо пишет лишь ASCII.
Я испробовал Debian 9, Debian 10, Ubuntu 18.04, нигде это не работает.
Пробовал через подключаться через VNC и RDP, пробовал Gnome, XFCE, LXDE, все равно скрипт не работает.
Для ввода я использую pynput приблизительно таким образом:
import pynput
x = pynput.Keyboard.Controller()
text = 'русский_текст'
for i in text:
x.press(i)
К сожалению, оно категорически отказывается писать русские буквы.
Писал setxkbmap -layout us,ru -variant ',winkeys' -option 'grp:alt_shift_toggle,grp_led:scroll'.
И DISPLAY=:id python3 -c 'import pynput' вводить я пробовал.
Перезапускал ОС.
Пробовал заменить на другой пакет, но они тоже адекватно не работают. Хотел сделать через keyboard, но когда я пытаюсь симулировать нажатие, допустим 3 клавиш, оно пишет лишь одну букву на русском при текущей английской раскладке(???).
Пробовал pyuserinput, тоже не работает.
Потратил последние 7 часов, невероятно устав, но ничего не вышло.
Простите если недостаточно описал всю суть проблемы - просто подскажите как писать русские и английские буквы на UNIX системе.
Если возможно посылать нажатия прямо в процесс - это тоже подойдёт.
На Windows всё работает идеально.
Заранее благодарю за помощь.
Локали я пробовал менять и на UTF-8, и на CP-1251. Текущая система: Ubuntu 18.04, подключаюсь через VNC, а окружение - XFCE.
Текущие локали(все равно не работает):
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.ISO-8859-5"
LC_NUMERIC="ru_RU.ISO-8859-5"
LC_TIME="ru_RU.ISO-8859-5"
LC_COLLATE="ru_RU.ISO-8859-5"
LC_MONETARY="ru_RU.ISO-8859-5"
LC_MESSAGES="ru_RU.ISO-8859-5"
LC_PAPER="ru_RU.ISO-8859-5"
LC_NAME="ru_RU.ISO-8859-5"
LC_ADDRESS="ru_RU.ISO-8859-5"
LC_TELEPHONE="ru_RU.ISO-8859-5"
LC_MEASUREMENT="ru_RU.ISO-8859-5"
LC_IDENTIFICATION="ru_RU.ISO-8859-5"
LC_ALL=ru_RU.ISO-8859-5
Ответы (1 шт):
попробуй библиотеку pyautoGUI, Она позволяет симулировать нажатия на клавиши pyautogui.press('esc') # Simulate pressing the Escape key.
либо просто писать текст сразу pyautogui.write('Hello world!', interval=0.25) # Type with quarter-second pause in between each key.
Только ее начала надо установить pip install PyAutoGUIи импортировать import pyautogui