🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Emulate the R key on a Mac keyboard

    Scheduled Pinned Locked Moved PROJECTS
    2 Posts 1 Posters 654 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • F Offline
      foufouner1977
      last edited by

      Hello,
      I would like to emulate the R key on a Mac keyboard using a button and an M5StickC PLUS2 ESP32.

      I asked my friend ChatGPT how to do it and this is what he told me

      I connected my M5StickC PLUS2 via USB to my Mac to connect it to my Arduino IDE.

      Capture d’écran 2025-10-18 à 16.59.43.png

      Only if I bring the code that ChatGPT generated for me.
      Any ideas?

      F 1 Reply Last reply Reply Quote 1
      • F Offline
        foufouner1977 @foufouner1977
        last edited by foufouner1977

        Ok so if I try with my code

        #include <M5StickCPlus2.h>
        #include <BleKeyboard.h>
        
        BleKeyboard bleKeyboard("M5StickC_Keyboard", "M5Stack", 100);
        
        void setup() {
          M5.begin();
          Serial.begin(115200);
        
          bleKeyboard.begin();
          Serial.println("En attente de connexion Bluetooth...");
        }
        
        void loop() {
          M5.update();
        
          if (bleKeyboard.isConnected()) {
            // Si on appuie sur le bouton A du M5StickC
            if (M5.BtnA.wasPressed()) {
              Serial.println("Touche R envoyée !");
              bleKeyboard.press('r');
              delay(100);
              bleKeyboard.releaseAll();
            }
          }
        
          delay(10);
        }
        

        I have this error message

        c:\Users\Cl�ment\Documents\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp: In member function 'void BleKeyboard::begin()':
        c:\Users\Cl�ment\Documents\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:106:19: error: cannot convert 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'String'
          106 |   BLEDevice::init(deviceName);
              |                   ^~~~~~~~~~
              |                   |
              |                   std::string {aka std::__cxx11::basic_string<char>}
        In file included from C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLEServer.h:26,
                         from C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLEService.h:25,
                         from C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLEHIDDevice.h:21,
                         from c:\Users\Cl�ment\Documents\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.h:24,
                         from c:\Users\Cl�ment\Documents\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:1:
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLEDevice.h:184:27: note:   initializing argument 1 of 'static void BLEDevice::init(String)'
          184 |   static void init(String deviceName);
              |                    ~~~~~~~^~~~~~~~~~
        c:\Users\Cl�ment\Documents\Arduino\libraries\ESP32_BLE_Keyboard\BleKeyboard.cpp:117:32: error: no matching function for call to 'BLECharacteristic::setValue(std::string&)'
          117 |   hid->manufacturer()->setValue(deviceManufacturer);
              |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
        In file included from C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLEHIDDevice.h:20:
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:193:8: note: candidate: 'void BLECharacteristic::setValue(const uint8_t*, size_t)'
          193 |   void setValue(const uint8_t *data, size_t size);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:193:8: note:   candidate expects 2 arguments, 1 provided
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:194:8: note: candidate: 'void BLECharacteristic::setValue(const String&)'
          194 |   void setValue(const String &value);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:194:31: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const String&'
          194 |   void setValue(const String &value);
              |                 ~~~~~~~~~~~~~~^~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:195:8: note: candidate: 'void BLECharacteristic::setValue(uint16_t)'
          195 |   void setValue(uint16_t data16);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:195:26: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'uint16_t' {aka 'short unsigned int'}
          195 |   void setValue(uint16_t data16);
              |                 ~~~~~~~~~^~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:196:8: note: candidate: 'void BLECharacteristic::setValue(uint32_t)'
          196 |   void setValue(uint32_t data32);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:196:26: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'uint32_t' {aka 'long unsigned int'}
          196 |   void setValue(uint32_t data32);
              |                 ~~~~~~~~~^~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:197:8: note: candidate: 'void BLECharacteristic::setValue(int)'
          197 |   void setValue(int data32);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:197:21: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'int'
          197 |   void setValue(int data32);
              |                 ~~~~^~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:198:8: note: candidate: 'void BLECharacteristic::setValue(float)'
          198 |   void setValue(float data32);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:198:23: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'float'
          198 |   void setValue(float data32);
              |                 ~~~~~~^~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:199:8: note: candidate: 'void BLECharacteristic::setValue(double)'
          199 |   void setValue(double data64);
              |        ^~~~~~~~
        C:\Users\Cl�ment\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.2\libraries\BLE\src/BLECharacteristic.h:199:24: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'double'
          199 |   void setValue(double data64);
              |                 ~~~~~~~^~~~~~
        grpc: error while marshaling: string field contains invalid UTF-8
        
        Compilation error: grpc: error while marshaling: string field contains invalid UTF-8
        

        My libraries
        Capture d’écran 2025-10-21 à 11.06.27.png

        Capture d’écran 2025-10-21 à 11.22.36.png

        1 Reply Last reply Reply Quote 0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        • First post
          Last post