Mouse – управление мышью

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение

Управление мышью — важный аспект автоматизации взаимодействия с интерфейсом пользователя. Во многих задачах, будь то автотесты, скрипты, игровые боты или утилиты автоматизации, требуется программное перемещение указателя, симуляция кликов и перехват действий пользователя. В Python для этого отлично подходит библиотека mouse.

Библиотека mouse предоставляет простой и прямолинейный API для работы с мышью: отслеживание событий, выполнение кликов, запись и воспроизведение движений. Она подходит для кроссплатформенной разработки (с ограничениями), проста в установке и используется как в изолированных скриптах, так и в сложных проектах RPA.

В статье рассмотрим все методы, примеры, ограничения, интеграции и реальные кейсы использования mouse.

Основная часть

Установка

pip install mouse

На Linux и macOS может потребоваться запуск от имени администратора или предоставление разрешений на управление вводом.


Обзор возможностей

mouse работает как на стороне захвата пользовательских действий (listener), так и в качестве эмулятора движений и кликов (controller).

Основные возможности:

  • Отслеживание нажатий и отпусканий кнопок

  • Определение позиции курсора

  • Программные клики и прокрутка

  • Перемещение курсора

  • Горячие клавиши мыши

  • Запись и воспроизведение макросов


Эмуляция действий мыши

mouse.move(x, y, absolute=True, duration=0)

Перемещение курсора. Параметр absolute=False включает относительный режим.

mouse.click(button='left')

Симулирует клик указанной кнопкой.

import mouse
mouse.click('left')
mouse.click('right')

mouse.double_click() / mouse.right_click() / mouse.middle_click()

Шорткаты для стандартных действий.

mouse.press() / mouse.release()

Нажатие и отпускание кнопки мыши.

mouse.press('left')
mouse.release('left')

mouse.wheel(delta)

Симулирует скроллинг.

mouse.wheel(-1)  # Прокрутка вниз

Получение координат

mouse.get_position()

Возвращает текущие координаты курсора.

x, y = mouse.get_position()

mouse.is_pressed(button)

Проверяет, нажата ли кнопка в момент запроса.


Слушатели событий

mouse.on_button(callback, buttons=('left', 'right', 'middle'), types=('down', 'up'))

Обработка событий клика и отпускания.

def handler(event):
    print(event)

mouse.on_button(handler)

mouse.on_click(callback) / mouse.on_double_click(callback)

Реагирование на одиночный и двойной клик.

mouse.hook(callback)

Глобальный обработчик всех событий мыши.

mouse.hook(lambda e: print(e.event_type, e.button, e.time))

mouse.unhook(callback) / mouse.unhook_all()

Удаление обработчиков.


Работа с макросами

mouse.record(button='right')

Записывает действия до повторного нажатия указанной кнопки.

events = mouse.record(button='right')

mouse.play(events, speed_factor=1)

Воспроизводит записанные события. speed_factor регулирует скорость.


Ожидание событий

mouse.wait(button='left')

Блокирует выполнение до следующего клика.

print("Жду клика...")
mouse.wait('left')

Безопасность и контроль

  • Поддержка прерывания по KeyboardInterrupt

  • Возможность логгирования действий

  • Поддержка многопоточности при сложных сценариях


Примеры использования

Автотест интерфейса

Проверка, срабатывают ли элементы при нажатии, движение курсора по кнопкам, логгирование кликов.

Игровые макросы

Автоклики, скрипты движения мыши, реакции на события и макросы в реальном времени.

GUI-боты

Открытие окон, взаимодействие с программами без API, автоматизация повседневных задач.

Анализ активности

Запись движений пользователя для UX-аналитики или обучения моделей поведения.


Интеграции и расширения

  • keyboard — для обработки клавиатуры

  • pyautogui — для управления экраном и скриншотами

  • threading — фоновое выполнение задач

  • pynput — более универсальная, но менее производительная альтернатива


Сравнение с альтернативами

Библиотека Язык Управление мышью Поддержка событий Макросы
mouse Python Да Да Да
pynput Python Да Да Нет
PyAutoGUI Python Да Нет Частично
AutoHotKey Спец. DSL Да Да Да

Основные функции библиотеки mouse


mouse.move(x, y, absolute=True, duration=0)

Перемещает курсор мыши.

  • x, y: координаты (в пикселях).

  • absolute: если True, координаты абсолютные. Если False — смещение относительно текущей позиции.

  • duration: время движения в секундах.

Пример:

python
mouse.move(100, 200) mouse.move(50, 0, absolute=False) # сдвинуть вправо на 50 пикселей

mouse.get_position()

Возвращает текущие координаты курсора как кортеж (x, y).

Пример:

python
pos = mouse.get_position() print(pos)

mouse.click(button='left', coords=(None, None))

Кликает мышью.

  • button: 'left', 'right', 'middle', 'x', 'x2'.

  • coords: можно указать координаты, куда кликнуть.

Пример:

python
mouse.click('right') # правый клик по текущей позиции mouse.click('left', (300, 400)) # левый клик по координатам

mouse.double_click(button='left')

Двойной клик.

Пример:

python
mouse.double_click('left')

mouse.right_click()

Правый клик.

Пример:

python
mouse.right_click()

mouse.left_click()

Левый клик.

Пример:

python
mouse.left_click()

mouse.middle_click()

Клик средней кнопкой.

Пример:

python
mouse.middle_click()

mouse.press(button='left')

Нажимает и удерживает кнопку мыши.

Пример:

python
mouse.press('left')

mouse.release(button='left')

Отпускает кнопку мыши.

Пример:

python
mouse.release('left')

mouse.wheel(delta=1)

Эмулирует прокрутку колесика.

  • delta: положительное значение — вверх, отрицательное — вниз.

Пример:

python
mouse.wheel(-2) # прокрутка вниз

mouse.is_pressed(button='left')

Проверяет, нажата ли в данный момент кнопка.

Пример:

python
if mouse.is_pressed('left'): print('Левая кнопка нажата')

mouse.on_button(callback, buttons=('left', 'right', 'middle'), types=('down', 'up'))

Назначает обработчик событий нажатия/отпускания кнопки.

  • callback: функция, которая вызывается при событии.

  • buttons: список кнопок.

  • types: 'down' и/или 'up'.

Пример:

python
def handler(event): print(event) mouse.on_button(handler, buttons=('left',), types=('down',))

mouse.on_click(callback)

Обработчик любого клика.

Пример:

python
def on_click(event): print("Клик:", event) mouse.on_click(on_click)

mouse.on_double_click(callback)

Обработчик двойного клика.

Пример:

python
mouse.on_double_click(lambda e: print("Двойной клик!"))

mouse.on_right_click(callback)

Обработчик правого клика.

Пример:

python
mouse.on_right_click(lambda e: print("Правый клик!"))

mouse.on_middle_click(callback)

Обработчик клика средней кнопкой.


mouse.on_wheel(callback)

Обработчик события прокрутки колесика.

Пример:

python
mouse.on_wheel(lambda e: print("Прокрутка", e.delta))

mouse.wait(button='left', target_types=('down',))

Блокирует выполнение, пока не произойдёт указанное событие.

Пример:

python
mouse.wait('right') # ждать правый клик

mouse.record(button='right')

Записывает события мыши до нажатия button.

Возвращает список событий MouseEvent.

Пример:

python
events = mouse.record()

mouse.play(events, speed_factor=1.0)

Воспроизводит список событий, например, из mouse.record.

Пример:

python
mouse.play(events)

mouse.unhook(callback)

Удаляет конкретный обработчик.


mouse.unhook_all()

Удаляет все установленные хуки (обработчики).


mouse.hook(callback)

Регистрирует глобальный обработчик всех событий мыши (движение, клик, прокрутка и т.д.).

Пример:

python
mouse.hook(lambda e: print(e))

mouse.clear_all_hotkeys()

Удаляет все горячие клавиши (если заданы через keyboard, с которым mouse интегрируется).


Примечания

  • Некоторые функции требуют администраторских прав, особенно на Windows.

  • На Linux может потребоваться xlib или evdev.

  • На macOS нужно предоставить доступ в Security & Privacy > Accessibility.


Заключение

Библиотека mouse — мощный и простой инструмент для программного управления мышью и обработки её событий. Благодаря минималистичному API, поддержке макросов и кроссплатформенности, она подходит как для новичков, так и для продвинутых разработчиков в сфере автоматизации, RPA и тестирования.