pressKeypad() et releaseKeypad()

Parent Previous Next


Fonctions:

       pressKeypad( char c)                        // un char représentant un nombre de '0' à '9' ainsi que '+'  '-'  '/'  '*'  '\r'

pressKeypad( valeur numérique )                // valeur de 0 à 9 et 13 (return)


releaseKeypad( char c )                        // un char représentant un nombre de 0 à 9 ainsi que '+'  '-'  '/'  '*'  '\r'

releaseKeypad( valeur numérique )        // valeur de 0 à 9 et 13 (return)


Description:

       pressKeypad permet de presser la touche correspond à l'argument

       releaseKeypad permet de relâcher la touche correspond à l'argument


Arguments:

       Un char '0' à '9'  '*'  '/'  '+' '-' '\r' ou une valeur numérique  de 0 à 9 et 13 (retour à la ligne)


Infos supplémentaires:

       La valeur numérique correspond à la valeur ascii du caractère pour ces correspondances:

(char)13 ou '\r'                        (char)48 ou '0'                        (char)54 ou '6'

(char)42 ou '*'                        (char)49 ou '1'                        (char)55 ou '7'

(char)43 ou '+'                        (char)50 ou '2'                        (char)56 ou '8'

(char)45 ou '-'                        (char)51 ou '3'                        (char)57 ou '9'

(char)46 ou '.'                        (char)52 ou '4'                        

(char)47 ou '/'                        (char)53 ou '5'                



Valeur de retour:

       Retourne 1 si la fonction réussie sinon renvoie 0.        



Exemple:

KeyboardEx.pressKeypad('A');

delay(1000);

KeyboardEx.releaseKeypad('A');


KeyboardEx.pressKeypad(9);

delay(1000);

KeyboardEx.releaseKeypad(9);



Code:


#include "Adafruit_TinyUSB.h"

#include "KeyboardEx.h"


// Report ID

enum

{

 RID_KEYBOARD = 1,

 // RID_MOUSE,

 RID_CONSUMER_CONTROL, // Media, volume etc ..

};


// HID report descriptor using TinyUSB's template

uint8_t const desc_hid_report[] =

{

 //TUD_HID_REPORT_DESC_KEYBOARD(),

 TUD_HID_REPORT_DESC_KEYBOARD( HID_REPORT_ID(RID_KEYBOARD) ),

 //TUD_HID_REPORT_DESC_MOUSE   ( HID_REPORT_ID(RID_MOUSE) ),

 TUD_HID_REPORT_DESC_CONSUMER( HID_REPORT_ID(RID_CONSUMER_CONTROL) )

};


Adafruit_USBD_HID usb_hid;

// --------------------------------------------------------------------------


void setup() {

 usb_hid.setPollInterval(2);

 usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));

 usb_hid.setReportCallback(get_report_callback , hid_report_callback);


 usb_hid.begin();

 KeyboardEx.begin(usb_hid, RID_KEYBOARD);


 // KeyboardEx.setOS(Windows); // Si vous êtes sur Windows, permet l'utilisation des Alt Codes.

 // KeyboardEx.setDelay(5); // valeur par défaut, si problème augmenter la valeur à 10.


 // Commenter ces lignes si vous n'utilisez oas le port série

 Serial.begin(115200);

 while (!Serial) {

   ; // wait for serial port to connect. Needed for native USB

 }

 delay(6000);

}


void loop() {

 static int oneloop = 0;


 // n'aime pas le while(1)

 if (!oneloop) {

   oneloop = 1;


   // ****************************************************************************************************

   //  Test des fonctions -> KeyboardEx.pressKeypad(...) et KeyboardEx.releaseKeypad(...)

   // ****************************************************************************************************

   KeyboardEx.println(F("*** Test des fonctions -> KeyboardEx.pressKeypad(...) et KeyboardEx.releaseKeypad(...) ***"));


   const char tableau1[] = "01234*/";

   for (unsigned int i = 0; i < strlen(tableau1); i++) {

     KeyboardEx.pressKeypad(tableau1[i]);

     delay(1500);

     KeyboardEx.releaseKeypad(tableau1[i]);

     KeyboardEx.printKeypadln();

     delay(1500);

   }


   char tableau2[] = "-+.56789";

   for (unsigned int i = 0; i < strlen(tableau2); i++) {

     KeyboardEx.pressKeypad(tableau2[i]);

     delay(1500);

     KeyboardEx.releaseKeypad(tableau2[i]);

     KeyboardEx.printKeypadln();

     delay(1500);

   }


   KeyboardEx.printKeypadln();


   String valeur = "01234*/-+.56789";

   for (unsigned int i = 0; i < valeur.length(); i++) {

     KeyboardEx.pressKeypad(valeur.charAt(i));

     delay(1500);

     KeyboardEx.releaseKeypad(valeur.charAt(i));

     KeyboardEx.printKeypadln();

     delay(1500);

   }


   KeyboardEx.printKeypadln();


   for (byte i = 0; i < 10; ++i) {

     KeyboardEx.pressKeypad(i);

     delay(1500);

     KeyboardEx.releaseKeypad(i);

     KeyboardEx.printKeypadln();

     delay(1500);

   }


   KeyboardEx.end();

 }

}



uint16_t get_report_callback (uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen)

{

 // Mettre Null à la place de get_report_callback dans cette fonction ci- dessous déclarée plus haut

 // si vous souhaitez supprmer cette procédure

 // usb_hid.setReportCallback(get_report_callback , hid_report_callback) -> usb_hid.setReportCallback(Null , hid_report_callback);


 // not used in this example

 return 0;

}


// Output report callback for LED indicator such as Caplocks

void hid_report_callback(uint8_t report_id, hid_report_type_t report_type, uint8_t const* buffer, uint16_t bufsize)

{

 uint8_t ledIndicator;


 // LED indicator is output report with only 1 byte length

 if ( report_type != HID_REPORT_TYPE_OUTPUT ) return;

 // KEYBOARD_LED_KANA (8) | KEYBOARD_LED_COMPOSE (3) | KEYBOARD_LED_SCROLLLOCK (4) | KEYBOARD_LED_CAPSLOCK (2) | KEYBOARD_LED_NUMLOCK (1)


 // buffer[0] si clavier seul

 // ou buffer[1] si plusieurs reports

 if (bufsize == 2) {

   ledIndicator = buffer[1];

 } else {

   ledIndicator = buffer[0];

 }

 // Allumer la led de la carte si CAPSLOCK (verrouillage des majuscule) est activé

 // La led ne s'allumera pas sur Adafruit QT py car c'est une Neopixel

 // mais sur un Seeeduino XIAO ok

 digitalWrite(LED_BUILTIN, !(ledIndicator & KEYBOARD_LED_CAPSLOCK));

}