Главная chevron_right Функции chevron_right USB chevron_right Mouse.press()

Mouse.press()

Mouse.press() удерживает кнопку мыши нажатой до явного вызова Mouse.release() — в отличие от Mouse.click(), который сразу отпускает кнопку после нажатия.

Полная статья

Описание

Mouse.press() отправляет сигнал нажатия кнопки мыши и не отпускает её — кнопка остаётся зажатой до тех пор, пока вы явно не вызовете Mouse.release(). Это принципиально отличает функцию от одиночного щелчка: она моделирует именно удержание, а не мгновенное нажатие и отпускание.

Если аргумент не передан, по умолчанию удерживается левая кнопка мыши.

Прежде чем использовать Mouse.press(), обязательно вызовите Mouse.begin() — без инициализации USB-интерфейса функция не будет работать.

Синтаксис

  • Mouse.press()
  • Mouse.press(button)

Параметры

button: какую кнопку мыши удерживать. Тип данных: char.

Допустимые значения:

  • MOUSE_LEFT — левая кнопка (используется по умолчанию, если аргумент не указан)
  • MOUSE_RIGHT
  • MOUSE_MIDDLE

Возвращает

Ничего

Пример кода

    #include <Mouse.h>

    void setup() {
      //Кнопка, инициирующая нажатие мыши
      pinMode(2, INPUT);
      //Кнопка, завершающая нажатие мыши
      pinMode(3, INPUT);
      //инициализация библиотеки Mouse
      Mouse.begin();
    }

    void loop() {
      //если кнопка на пине 2 замкнута, нажать и удерживать левую кнопку мыши
      if (digitalRead(2) == HIGH) {
        Mouse.press();
      }
      //если кнопка на пине 3 замкнута, отпустить левую кнопку мыши
      if (digitalRead(3) == HIGH) {
        Mouse.release();
      }
    }

Где применяется

  • Перетаскивание (drag & drop): нажать кнопку через Mouse.press(), переместить курсор с помощью Mouse.move(), затем отпустить через Mouse.release().
  • Физические контроллеры: когда реальная кнопка или джойстик должны удерживать кнопку мыши столько, сколько удерживается физический элемент управления.
  • Интерфейсы с долгим нажатием: некоторые программы реагируют на удержание иначе, чем на одиночный щелчок — например, рисование в графических редакторах.

Практические замечания

  • Обязательно вызывайте Mouse.release() после завершения удержания. Если этого не сделать, операционная система будет считать кнопку зажатой до перезагрузки или отключения платы — курсор начнёт выделять всё подряд.
  • Для обычного одиночного щелчка используйте Mouse.click(): он сам нажимает и отпускает кнопку, и вам не нужно следить за парностью вызовов.
  • При работе с механическими кнопками реализуйте антидребезг — иначе одно физическое нажатие может породить несколько вызовов Mouse.press() подряд и непредсказуемое поведение.
  • Одновременно можно удерживать несколько кнопок: вызовите Mouse.press() с разными аргументами поочерёдно, а затем так же поочерёдно отпустите их через Mouse.release().
  • Функция доступна только на платах с нативной поддержкой USB HID (Leonardo, Micro, Due и аналогичных). На Uno и Mega она не работает.

Полезные материалы