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


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

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

Оффлайн Gordeev

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

Оффлайн SergeyIT

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

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 3205
  • Capture the truth
    • Просмотр профиля
    • Всезнайка
Re: Эмуляция ввода текста из файла
« Ответ #2 : 08 Апрель 2019, 15:51:27 »
Cамый главный вопрос - ЗАЧЕМ?
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 8 GB RAM :: AMD Radeon R7 260X :: ZSH
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA 3150 :: ZSH

Оффлайн Gordeev

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

Оффлайн БТР

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 5271
    • Просмотр профиля
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

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
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

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

Оффлайн Azure

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

Оффлайн Gordeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
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

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 2559
  • 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

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
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

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 2559
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Эмуляция ввода текста из файла
« Ответ #12 : 09 Апрель 2019, 17:40:41 »
xdotool sleep
sleep используется сам по себе. Его не нужно склеивать с xdotool. Добавить можно. У нас уже реализован перебор в цикле. Сверяем текущий символ с пробелом или переводом строки и добавляем (если совпадает) рандомный sleep; при таком алгоритме лишние отправки return можно полностью выбросить - везде где перенос строки в переменной text, везде будет посылаться return:
Код: Bash
  1. #!/bin/bash
  2. WID=`xdotool search --name "Mozilla Firefox" | head -1`
  3. xdotool windowfocus $WID
  4. xdotool mousemove 810 250 click 1
  5. xdotool mousemove 810 260
  6. sleep 0.1
  7. xdotool click 1
  8. NL=$'\x10'  #везде где хотим перевод строки в переменной text вводим $NL
  9. text="$NL$NLФорум русскоязычного сообщества Ubuntu$NLВторая строка текста$NL"
  10. for ((i=0; $i<${#text}; i=$(($i+1))))
  11.     do
  12.         case "${text:$i:1}" in
  13.         " ")
  14.             #задержки и действия если пробел (500 ... 900 мс)
  15.             xdotool type --delay $(( RANDOM%900+500 )) "${text:$i:1}";;
  16.         $'\x10')
  17.             #задержки и действия если перевод строки (500 ... 900 мс)
  18.             sleep 0.$(( RANDOM%9+5 ))
  19.             xdotool key "Return";;
  20.         * )
  21.             #действия в остальных случаях (100 ... 500 мс)
  22.             xdotool type --delay $(( RANDOM%500+100 )) "${text:$i:1}";;
  23.         esac  
  24.     done
  25. 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

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

 

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