Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Эмуляция ввода текста из файла  (Прочитано 3569 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Эмуляция ввода текста из файла
« : 08 Апреля 2019, 15:09:13 »
Приветствую, форумчане. Помогите с задачей. Нужно из файла выводить текст эмулируя физическое нажатие клавиш клавиатуры с таймигами. Может скрипт есть какой?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #1 : 08 Апреля 2019, 15:49:02 »
Написал хотя бы куда выводить то?
Извините, я все еще учусь

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6733
  • 20% Cooler
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #2 : 08 Апреля 2019, 15:51:27 »
Cамый главный вопрос - ЗАЧЕМ?
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #3 : 08 Апреля 2019, 16:20:59 »
Написал хотя бы куда выводить то?
Выводить в поле ввода браузера по горячей клавише.
Cамый главный вопрос - ЗАЧЕМ?
Имитация набора текста в браузере, а не просто копипаст.

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6165
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #4 : 08 Апреля 2019, 17:06:06 »
xdotool + sleep

Оффлайн garek

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #5 : 08 Апреля 2019, 17:16:04 »
Cамый главный вопрос - ЗАЧЕМ?
Это самый главный ответ на 90 % вопросов здесь. Просто <удалено модератором> умники!

Цитировать
Правила форума
2. На форуме ЗАПРЕЩЕНО
2.1. Использовать ненормативную лексику в любом виде. В том числе сокращённые и искажённые нецензурные слова. Замена нецензурных слов спецсимволами также не допускается.

+15%
--БТР
« Последнее редактирование: 08 Апреля 2019, 17:35:53 от БТР »
недостаточно дружелюбен к старичкам

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #6 : 08 Апреля 2019, 20:06:31 »
xdotool + sleep

начал вникать. Очень трудно дается все это... Вот что получилось:

browser_window=69206022 ; xdotool windowactivate $browser_window windowfocus $browser_window sleep 0.5 mousemove 810 250 click 1 mousemove 810 260 sleep 0.1 click 1 sleep 0.1 key Return sleep 0.1 key Return type --delay 400 "Форум русскоязычного сообщества Ubuntu"Возникло еще несколько вопросов.
Как запустить из файла?
И как сделать не delay 400, а delay рандомно меньше 400 или равно 500.

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #7 : 08 Апреля 2019, 20:48:02 »
Положите в файл:
#!/bin/env bash
...
и дайте ему права на выполнение:
chmod +x имя-файла
Случайное число от 0 до 400 можно сгенерировать так:
$(( RANDOM % 400 ))

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #8 : 09 Апреля 2019, 08:28:56 »
Была какая-то приспособа по выводу текста в консоль... Там даже опция была по выводу текста посимвольно... В XFCE или LXDE ...
« Последнее редактирование: 09 Апреля 2019, 08:53:37 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #9 : 09 Апреля 2019, 10:31:05 »
Спасибо всем откликнувшимся.
Вот что получилось:

  WID=`xdotool search --title "Mozilla Firefox" | head -1`
  xdotool windowfocus $WID
  xdotool mousemove 810 250 click 1
  xdotool mousemove 810 260
  xdotool sleep 0.1
  xdotool click 1
  xdotool sleep 0.1
  xdotool key Return
  xdotool sleep 0.1
  xdotool key Return
  text="Форум русскоязычного сообщества Ubuntu"
  xdotool type --delay $(( RANDOM%500+400 )) "$text"
  xdotool key "Return"
  sleep 4

В  xdotool type --delay нельзя управлять скоростью вывода посимвольно..... Нашел на  зарубежном форуме рекомендации:
С помощью xte (из xautomation) вы можете вставить произвольные задержки (в том числе между событиями нажатия клавиш и отпускания клавиш).
Это то как раз и нужно было. Может кто помочь с этим пакетом?

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #10 : 09 Апреля 2019, 13:39:19 »
С помощью xte (из xautomation) вы можете вставить произвольные задержки
А зачем? Первое, что в голову приходит - посимвольный вывод в цикле...
...
text="Форум русскоязычного сообщества Ubuntu"
for ((i=0; $i<${#text}; i=$(($i+1))))
    do
    xdotool type --delay $(( RANDOM%500+100 )) "${text:$i:1}"
    done
...

Пользователь добавил сообщение 09 Апреля 2019, 14:05:51:
Словом, итоговый вариант:
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 09 Апреля 2019, 14:26:36 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #11 : 09 Апреля 2019, 15:28:47 »
Вот спасибо, класс!!!
А можно в это выражение
for ((i=0; $i<${#text}; i=$(($i+1))))
    do
    xdotool type --delay $(( RANDOM%500+100 )) "${text:$i:1}"
    done
добавить xdotool sleep, так же рандомно, после пробелов или переноса строки в text?
« Последнее редактирование: 09 Апреля 2019, 16:46:38 от zg_nico »

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #12 : 09 Апреля 2019, 17:40:41 »
xdotool sleep
sleep используется сам по себе. Его не нужно склеивать с xdotool. Добавить можно. У нас уже реализован перебор в цикле. Сверяем текущий символ с пробелом или переводом строки и добавляем (если совпадает) рандомный sleep; при таком алгоритме лишние отправки return можно полностью выбросить - везде где перенос строки в переменной text, везде будет посылаться return:
Код: (bash) [Выделить]
#!/bin/bash
WID=`xdotool search --name "Mozilla Firefox" | head -1`
xdotool windowfocus $WID
xdotool mousemove 810 250 click 1
xdotool mousemove 810 260
sleep 0.1
xdotool click 1
NL=$'\x10'  #везде где хотим перевод строки в переменной text вводим $NL
text="$NL$NLФорум русскоязычного сообщества Ubuntu$NLВторая строка текста$NL"
for ((i=0; $i<${#text}; i=$(($i+1))))
    do
        case "${text:$i:1}" in
        " ")
            #задержки и действия если пробел (500 ... 900 мс)
            xdotool type --delay $(( RANDOM%900+500 )) "${text:$i:1}";;
        $'\x10')
            #задержки и действия если перевод строки (500 ... 900 мс)
            sleep 0.$(( RANDOM%9+5 ))
            xdotool key "Return";;
        * )
            #действия в остальных случаях (100 ... 500 мс)
            xdotool type --delay $(( RANDOM%500+100 )) "${text:$i:1}";;
        esac 
    done
exit 0
Можно вписать свои действия на любой символ. Чтоб проигрывало mp3 файл, если в строке встречается { или выдавало сообщение - если в строке табуляция. Дописывайте свои действия к селектору case, помещайте их перед * ), и все.
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #13 : 26 Августа 2019, 13:09:33 »
Извините, за долгое отсутствие. Большое вам спасибо за помощь!

 

Страница сгенерирована за 0.056 секунд. Запросов: 25.