summaryrefslogtreecommitdiff
path: root/lib/BleMouse/BleMouse.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/BleMouse/BleMouse.h')
-rw-r--r--lib/BleMouse/BleMouse.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/BleMouse/BleMouse.h b/lib/BleMouse/BleMouse.h
new file mode 100644
index 0000000..4468189
--- /dev/null
+++ b/lib/BleMouse/BleMouse.h
@@ -0,0 +1,52 @@
+#ifndef ESP32_BLE_MOUSE_H
+#define ESP32_BLE_MOUSE_H
+#include "sdkconfig.h"
+#if defined(CONFIG_BT_ENABLED)
+
+#include "BLECharacteristic.h"
+#include "BLEHIDDevice.h"
+#include "BleConnectionStatus.h"
+
+#define MOUSE_LEFT 1
+#define MOUSE_RIGHT 2
+#define MOUSE_MIDDLE 4
+#define MOUSE_BACK 8
+#define MOUSE_FORWARD 16
+#define MOUSE_ALL \
+ (MOUSE_LEFT | MOUSE_RIGHT | \
+ MOUSE_MIDDLE) #For compatibility with the Mouse library
+
+class BleMouse {
+ private:
+ uint8_t _buttons;
+ BleConnectionStatus *connectionStatus;
+ BLEHIDDevice *hid;
+ BLECharacteristic *inputMouse;
+ void buttons(uint8_t b);
+ void rawAction(uint8_t msg[], char msgSize);
+ static void taskServer(void *pvParameter);
+
+ public:
+ BleMouse(std::string deviceName = "ESP32 Bluetooth Mouse",
+ std::string deviceManufacturer = "Espressif",
+ uint8_t batteryLevel = 100);
+ void begin(void);
+ void end(void);
+ void click(uint8_t b = MOUSE_LEFT);
+ void move(signed char x, signed char y, signed char wheel = 0,
+ signed char hWheel = 0);
+ void press(uint8_t b = MOUSE_LEFT); // press LEFT by default
+ void release(uint8_t b = MOUSE_LEFT); // release LEFT by default
+ bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default
+ bool isConnected(void);
+ void setBatteryLevel(uint8_t level);
+ uint8_t batteryLevel;
+ std::string deviceManufacturer;
+ std::string deviceName;
+
+ protected:
+ virtual void onStarted(BLEServer *pServer) {};
+};
+
+#endif // CONFIG_BT_ENABLED
+#endif // ESP32_BLE_MOUSE_H