Алгоритм для эмуляции движения мыши как человека делает?

Я должен протестировать программное обеспечение, которое рассматривает некоторые движения мыши как "жесты". Для такой задачи я должен эмулировать движение мыши от точки для указания на B, не в прямой линии, но когда реальная мышь перемещается - с кривыми, немного jaggedyness и т.д. Есть ли какое-либо доступное решение (сам алгоритм/код, не library/exe), что я могу использовать?

Конечно, я могу записать некоторую простую синусоидальную математику один, но это было бы очень сырой эмуляцией человеческой руки, ведущей мышь. Возможно, такая задача уже была решена многочисленные времена, и я могу просто одолжить существующий код?:)

11
задан ire_and_curses 10 January 2010 в 00:20
поделиться

4 ответа

посмотрите на файл mouse.simba , который является частью SRL Framework , Макро программа, предназначенная для работы с онлайн-играми, такими как Runescape . Runescape имеет обширные возможности обнаружения макроса , поэтому все части структуры SRL были разработаны, чтобы выглядеть как можно более человеку - в частности, функции мыши.

Код находится в Паскале, но должно быть довольно легко читать. Посмотрите на MMOUSE () MMOUSE () MMOUSE () MMOUSE () MMOUSE () BENLALD100, она очень реально выполняет расширенные движения, такие как петли и превышение ее цели, а также постоянно различные ускорения и направления (также теперь имеет движения типа сенсорной панели ноутбука). Если вы хотите проверить его, вам нужно скачать Simba и включить SRL-включить .

9
ответ дан 3 December 2019 в 06:21
поделиться

Одним из способов зафиксировать это поведение может быть определение невидимой «сетки» на экране, где вы отслеживаете, через какие квадраты перемещается мышь.

Если эта часть работает и записывает правильно, нет необходимости бомбардировать ее тестами, поскольку вы знаете, что каждый квадрат сетки выполняет свою работу. Это также упрощает интерпретацию жеста.

2
ответ дан 3 December 2019 в 06:21
поделиться

Создайте простое тестовое приложение, которое показывает случайную позиционную точку каждые две секунды. Следуйте за точкой самостоятельно и запишите свои натуральные движения мыши.

2
ответ дан 3 December 2019 в 06:21
поделиться

Если делитель является явной константой времени компиляции (т.е. если x в 10 ^ x является константой времени компиляции), нет никакого смысла использовать что-либо иное, чем предоставленные языком операторы / и % . Если есть значимый способ ускорить их для явных возможностей 10, любой уважающий себя компилятор будет знать, как это сделать и сделает это для вас.

Единственной ситуацией, когда вы можете подумать о «пользовательской» реализации (кроме тупого компилятора), является ситуация, когда x является значением времени выполнения. В этом случае потребуется какая-то аналогия десятичного сдвига и десятичного сдвига и . На двоичной машине, вероятно, возможно ускорение, но я сомневаюсь, что вы сможете достичь чего-либо практически значимого. (Если бы числа хранились в двоично-десятичном формате, то было бы легко, но в «нормальных» случаях - нет.)

-121--1638953-

Попробуйте обернуть * в * в java.io.BufferedReader . А также используйте doseq вместо doall , как указал devstopfix:

(doseq [ln (line-seq (java.io.BufferedReader. *in*))]
   (println ln))

Обратите внимание, что line-seq задокументирован для требования BufferedReader в качестве источника.

-121--2053402-

Как насчет записи реальных жестов и их воспроизведения? Это будет так же реально, как все, что вы можете синтезировать, и это будет повторяемым (что хорошо для тестирования).

5
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: