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

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

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

4 ответов


посмотри мышь.Симба!--3--> файл, который является частью SRL Framework, макропрограмма, предназначенная для работы с онлайн-играми, такими как Runescape. В Runescape есть широкое возможности обнаружения макросов таким образом, все части структуры SRL были разработаны, чтобы выглядеть как можно более человеческим - функции мыши, в частности.

код находится в Pascal, но должен быть довольно легко читаемым. Посмотри MMouse() процедуры BenLand100 он движется очень реалистично, делая продвинутые движения, такие как петли и превышение своей цели, а также постоянно меняющиеся ускорения и направления (также теперь имеет движения типа сенсорной панели ноутбука). Если вы хотите протестировать его, вам нужно скачать Симба и включить SRL-include.


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


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


один из способов захватить это поведение может быть определить невидимую "сетку" на экране, где вы отслеживаете, какие квадраты перемещает мышь в своем путешествии.

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