From 097b10658710c7878ae4028491b0211d08d9b8ce Mon Sep 17 00:00:00 2001 From: krolyxon Date: Tue, 5 May 2026 12:21:56 +0530 Subject: [PATCH] add BLE Mouse --- firmware/blemouse.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++ firmware/blemouse.h | 3 ++ firmware/menu.cpp | 7 ++++- 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 firmware/blemouse.cpp create mode 100644 firmware/blemouse.h diff --git a/firmware/blemouse.cpp b/firmware/blemouse.cpp new file mode 100644 index 0000000..e181a86 --- /dev/null +++ b/firmware/blemouse.cpp @@ -0,0 +1,68 @@ +#include +#include +#include "config.h" + +#include "buttons.h" +#include "display.h" + +// ===== BLE MOUSE ===== +BleMouse bleMouse("Orion-RF", "Orion-RF", 100); + +// ===== MAIN ===== +void ble_mouse_run() +{ + bleMouse.begin(); + + // simple screen + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(10, 25, "BLE Mouse"); + u8g2.drawStr(10, 45, "Connecting..."); + u8g2.sendBuffer(); + + delay(1000); + + while (1) + { + if (btnBack()) break; + + bool connected = bleMouse.isConnected(); + + int dx = 0; + int dy = 0; + + if (connected) + { + if (!digitalRead(BTN_UP)) dy = -8; + if (!digitalRead(BTN_DOWN)) dy = 8; + if (!digitalRead(BTN_LEFT)) dx = -8; + if (!digitalRead(BTN_RIGHT)) dx = 8; + + if (dx != 0 || dy != 0) + bleMouse.move(dx, dy); + + if (!digitalRead(BTN_SELECT)) + bleMouse.click(MOUSE_LEFT); + + if (!digitalRead(BTN_BACK)) + bleMouse.click(MOUSE_RIGHT); + } + + // ===== UI ===== + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + + u8g2.drawStr(10, 20, "BLE Mouse"); + + if (connected) + u8g2.drawStr(10, 35, "Status: Connected"); + else + u8g2.drawStr(10, 35, "Status: Waiting"); + + u8g2.drawStr(10, 55, "BACK = Exit"); + + u8g2.sendBuffer(); + + delay(30); + } +} diff --git a/firmware/blemouse.h b/firmware/blemouse.h new file mode 100644 index 0000000..fc6a4cc --- /dev/null +++ b/firmware/blemouse.h @@ -0,0 +1,3 @@ +#pragma once + +void ble_mouse_run(); diff --git a/firmware/menu.cpp b/firmware/menu.cpp index 411df35..cd982d4 100644 --- a/firmware/menu.cpp +++ b/firmware/menu.cpp @@ -9,6 +9,7 @@ #include "wifi_scan.h" #include "wifi_analyzer.h" #include "device_check.h" +#include "blemouse.h" // ================= FEATURE HANDLERS ================= void runSystemInfoFeature(); @@ -29,7 +30,8 @@ const char *mainMenuItems[] = { "Wifi Analyzer", "System Info", "Device Check", - "Restart" + "Restart", + "Ble Mouse" }; Menu mainMenu = {mainMenuItems, sizeof(mainMenuItems) / sizeof(mainMenuItems[0])}; @@ -184,6 +186,9 @@ void launchFeature() delay(1000); ESP.restart(); break; + case 9: + ble_mouse_run(); + break; } } else if (currentMenu == &badusbMenu)