diff --git a/Moozy_firmware.ino b/Moozy_firmware.ino new file mode 100644 index 0000000..002cc9f --- /dev/null +++ b/Moozy_firmware.ino @@ -0,0 +1,102 @@ +/* + Moozy_firmware by Laurent CLAUDE + 2023-09 + Licence GPL v3 or later + +*/ + +#include "USB.h" +#include "USBHIDMouse.h" +#include "USBHIDKeyboard.h" +#include +USBHIDMouse Mouse; +USBHIDKeyboard Keyboard; +Preferences moozyPrefs; + +// set pin numbers for the five buttons: +const int upButton = 14; +const int downButton = 13; +const int leftButton = 14; +const int rightButton = 12; +const int mouseButton = 0; + +bool keypressed = false; +int cursorspeed, speed1, speed2, speed3; +String input1, input2, input3; + +void setup() { + Serial.begin(115200); + + // initialize the buttons' inputs: + pinMode(upButton, INPUT_PULLUP); + pinMode(downButton, INPUT_PULLUP); + pinMode(leftButton, INPUT_PULLUP); + pinMode(rightButton, INPUT_PULLUP); + pinMode(mouseButton, INPUT_PULLUP); + + // retrieve settings from memory + moozyPrefs.begin("myapp", true); //namespace / true = RO MODE + speed1 = moozyPrefs.getInt("speed1"); + speed2 = moozyPrefs.getInt("speed2"); + speed3 = moozyPrefs.getInt("speed3"); + input1 = moozyPrefs.getString("input1"); + input2 = moozyPrefs.getString("input2"); + input3 = moozyPrefs.getString("input3"); + + cursorspeed = speed2 / 10; + +// Affichage des valeurs récupérer en Flash, pour débug + Serial.println("Les valeurs en Flash/EEPROM :"); + Serial.print("Vitesse 1 : "); + Serial.println(speed1); + Serial.print("Vitesse 2 : "); + Serial.println(speed2); + Serial.print("Vitesse 3 : "); + Serial.println(speed3); + Serial.print("Entrée 1 : "); + Serial.println(input1); + Serial.print("Entrée 2 : "); + Serial.println(input2); + Serial.print("Entrée 3 : "); + Serial.println(input3); + + moozyPrefs.end(); + + // initialize mouse control: + Mouse.begin(); + Keyboard.begin(); + USB.begin(); +} + +void loop() { + // use serial input to control the mouse: + if (Serial.available() > 0) { + char inChar = Serial.read(); + + switch (inChar) { + case 'r': + // move mouse right + Mouse.move(40, 0); + break; + case 'm': + // perform mouse left click + Mouse.click(MOUSE_LEFT); + break; + } + } + if ((digitalRead(upButton) == HIGH) && (digitalRead(mouseButton))) { + keypressed = false; + } else { + //if (keypressed == false) { + if (digitalRead(upButton) == LOW) { + Mouse.move(0, -cursorspeed); + } + if (digitalRead(mouseButton) == LOW) { + Mouse.move(0, cursorspeed); + } + Keyboard.releaseAll(); + keypressed = true; + delay(5); + } + //} +} diff --git a/README.md b/README.md index dc653c9..2e6c7b2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,35 @@ # Moozy_firmware +> A mouse and keyboard application easily customizable for people with disabilities. +8 directions by digital inputs, digital and analog joysticks, 3 speeds, right and left single, double and hold clicks, vertical scrolling, keyboard shortcuts, multimedia keys. + + +## Hardware + +ESP32-S3 + + +## Usage example + +Turns almost any hardware into a USB mouse/keyboard device + + +## Development setup + +It's the beginning + + +## Release History + +* 0.0.1 + * Work in progress + + +## Contributing + +Please see + + +## License + +Distributed under the GNU GPLv3 license. See LICENSE for more information.