This library allows you to make the ESP32 act as a Bluetooth Mouse and control what it does. E.g. move the mouse, scroll, make a click etc.
You might also be interested in:
- Left click
- Right click
- Middle click
- Back/Forwards click
- Move mouse pointer left/right
- Move mouse pointer up/down
- Scroll up/down
- Scroll left/right
- Report optional battery level to host (basically works, but it doesn't show up in Android's status bar)
- Customize Bluetooth device name/manufacturer
- Compatible with Android
- Compatible with Windows
- Compatible with Linux
- Compatible with MacOS X (Untested)
- Compatible with iOS (Untested)
- (Make sure you can use the ESP32 with the Arduino IDE. Instructions can be found here.)
- Download the latest release of this library from the release page.
- In the Arduino IDE go to "Sketch" -> "Include Library" -> "Add .ZIP Library..." and select the file you just downloaded.
- You can now go to "File" -> "Examples" -> "ESP32 BLE Mouse" and select any of the examples to get started.
/**
 * This example turns the ESP32 into a Bluetooth LE mouse that scrolls down every 2 seconds.
 */
#include <BleMouse.h>
BleMouse bleMouse;
void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleMouse.begin();
}
void loop() {
  if(bleMouse.isConnected()) {
    Serial.println("Scroll Down");
    bleMouse.move(0,0,-1);
  }
  delay(2000);
}The BleMouse interface is almost identical to the Mouse Interface, so you can use documentation right here: https://www.arduino.cc/reference/en/language/functions/usb/mouse/
Just remember that you have to use bleMouse instead of just Mouse and you need these two lines at the top of your script:
#include <BleMouse.h>
BleMouse bleMouse;
This library supports a few additional features that the Mouse library does not support at the time of writing:
- Scrolling left/right E.g.: bleMouse.move(0,0,0,1)(Scroll left) andbleMouse.move(0,0,0,-1)(Scroll right)
- Using the back and forward buttons E.g.: bleMouse.click(MOUSE_BACK)andbleMouse.click(MOUSE_FORWARD)
There is also Bluetooth specific information that you can use (optional):
Instead of BleMouse bleMouse; you can do BleMouse bleMouse("Bluetooth Device Name", "Bluetooth Device Manufacturer", 100);.
The third parameter is the initial battery level of your device. To adjust the battery level later on you can simply call e.g.  bleMouse.setBatteryLevel(50) (set battery level to 50%).
By default the battery level will be set to 100%, the device name will be ESP32 Bluetooth Mouse and the manufacturer will be Espressif.
Credits to chegewara as this library is based on this piece of code that he provided.