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_RIGHTMOUSE_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 она не работает.