2010-01-09 2 views
8

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

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

ответ

7

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

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

+0

Является ли Pascal чувствительным к регистру или нет? :) – grigoryvp

+2

Нет, это не чувствительно к регистру. Стандарт состоит в том, чтобы использовать все слова в именах процедур/функций (например, ThisIsAProcedure и AndSoIsThis) и использовать этот типКапитализации для переменных. Многие из функций, которые он использует, относятся к остальной части фреймворка или являются встроенными в SCAR, такие как GetMousePos. –

4

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

+0

Это хороший способ, но он гарантирует, что только эта программа работает с некоторыми предопределенными движениями. И я хочу прокормить его миллионом разных движений, чтобы проверить :). – grigoryvp

+0

Тогда, возможно, вы должны начать с нескольких записанных путей и применить тестирование fuzz для генерации миллионов вариантов. –

1

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

1

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

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

Смежные вопросы