ESP32 BLE Mouse library
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:
Features
- 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 (not stable, some people have issues, doesn't work with old devices)
- Compatible with iOS (not stable, some people have issues, doesn't work with old devices)
Installation
- (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.
Example
/**
* 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);
}
API docs
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
Credits to chegewara as this library is based on this piece of code that he provided.