Skip to content
Switch branches/tags

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:


  • 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)



 * This example turns the ESP32 into a Bluetooth LE mouse that scrolls down every 2 seconds.
#include <BleMouse.h>

BleMouse bleMouse;

void setup() {
  Serial.println("Starting BLE work!");

void loop() {
  if(bleMouse.isConnected()) {
    Serial.println("Scroll Down");

API docs

The BleMouse interface is almost identical to the Mouse Interface, so you can use documentation right here:

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) and bleMouse.move(0,0,0,-1) (Scroll right)
  • Using the back and forward buttons E.g.: and

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.