Fonctions:
print[ln]( char c )
print[ln]( char tableau[] )
print[ln]( String S )
print[ln]( F( char tableau[] ) ) // F() copie la chaîne de caractères en mémoire flash
print[ln]( Valeur numérique ) // Une valeur numérique compris entre -2147483648 et 4294967295, valeurs limites comprises
// Un Float ou un Double, ne gère pas les exposants.
Description:
Permet d'envoyer une séquence de frappe correspondant à la chaîne de caractères encodée au format UTF8.
L'extension [ln] des fonctions ajoute le renvoi à la ligne en fin d'exécution.
(L'IDE d'Arduino utilise le codage des caractères au format UTF8)
Arguments:
Un char, un tableau de char ou une chaîne de caractères String ou une valeur entière.
Utilisation de la macro F() possible.
Fonction associée:
setNotation(...) seulement lorsque l'argument est une valeur numérique
setPrecision(...) seulement lorsque l'argument est une valeur numérique
Valeur de retour ( size_t ):
Retourne le nombre de caractères de la chaîne et en cas d'erreur renvoie 0.
ou dans le cas d'une valeur numérique renvoie 1 si réussi et sinon 0
Exemple:
Keyboard.println("Arduino");
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; // -------------------------------------------------------------------------- // permet de passer un tableau en mémoire Flash en argument // voir ici https://forum.arduino.cc/index.php?topic=110307.0 #define FS(x) (const __FlashStringHelper*)(x) const char chaine_Clavier_FR[] PROGMEM = {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€£¤§¨°²µÀÂÃÄÈÊËÌÎÏÑÒÔÕÖÙÛÜàâãäçèéêëìîïñòôõöùûüÿ"}; char francais[] = {"Français"}; const String string_Clavier_FR = {" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€£¤§¨°²µÀÂÃÄÈÊËÌÎÏÑÒÔÕÖÙÛÜàâãäçèéêëìîïñòôõöùûüÿ"}; // Fonctionnera sur Wordpad mais pas sur Notepad pour les caractères unicodes // Décommenter KeyboardEx.setOS(Windows); et la fonction de test dans la loop() String emoji = {"� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �"}; 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; unsigned int totalCaractere; byte ret = 1; // n'aime pas le while(1) if (!oneloop) { oneloop = 1; // ************************************************************************************** // Test 1 de la fonction -> KeyboardEx.print(ln)(...) // ************************************************************************************** KeyboardEx.println(F("*** Test 1 de la fonction -> KeyboardEx.print(ln)(...) ***")); // Décommenté KeyboardEx.setOS(Windows); pour que cela fonctionne // totalCaractere = KeyboardEx.println(emoji); // KeyboardEx.print("Nombre de caractères de la chaine: "); // KeyboardEx.println(totalCaractere); // KeyboardEx.println(); delay(1000); totalCaractere = KeyboardEx.println(F("Chaine placée en mémoire flash")); KeyboardEx.print("Nombre de caractères de la chaine: "); KeyboardEx.println(totalCaractere); KeyboardEx.println(); delay(1000); totalCaractere = KeyboardEx.println(FS(chaine_Clavier_FR)); KeyboardEx.print("Nombre de caractères de la chaine: "); KeyboardEx.println(totalCaractere); KeyboardEx.println(); delay(1000); totalCaractere = KeyboardEx.println(francais); KeyboardEx.print("Nombre de caractères de la chaine: "); KeyboardEx.println(totalCaractere); KeyboardEx.println(); delay(1000); totalCaractere = KeyboardEx.println(string_Clavier_FR ); KeyboardEx.print("Nombre de caractères de la chaine: "); KeyboardEx.println(totalCaractere); KeyboardEx.println(); delay(1000); ret = KeyboardEx.println(-123456789); KeyboardEx.print("Retour de la fonction: "); KeyboardEx.println(ret); KeyboardEx.println(); delay(1000); ret = KeyboardEx.println(-12.22); KeyboardEx.print("Retour de la fonction: "); KeyboardEx.println(ret); KeyboardEx.println(); delay(1000); KeyboardEx.setPrecision(4); // 4 chiffres après la virgule KeyboardEx.setNotation(','); // La virgule au lieu du point ret = KeyboardEx.println(-12.22); KeyboardEx.print("Retour de la fonction: "); KeyboardEx.println(ret); KeyboardEx.println(); usb_hid.sendReport16(RID_CONSUMER_CONTROL, HID_USAGE_CONSUMER_VOLUME_INCREMENT); delay(10); usb_hid.sendReport16(RID_CONSUMER_CONTROL, 0); 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)); } |
#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; unsigned int totalCaractere; byte ret = 1; // n'aime pas le while(1) if (!oneloop) { oneloop = 1; // ************************************************************************************** // Test 2 de la fonction -> KeyboardEx.print(ln)(...) // ************************************************************************************** KeyboardEx.println(F("*** Test 2 de la fonction -> KeyboardEx.print(ln)(...) ***")); KeyboardEx.print(21.22); KeyboardEx.println(); KeyboardEx.setPrecision(4); // 4 chiffres après la virgule KeyboardEx.print(21.22); KeyboardEx.println(); KeyboardEx.print(13.45678); KeyboardEx.println(); KeyboardEx.setNotation(','); KeyboardEx.println(13.45678f); KeyboardEx.println(13.0); KeyboardEx.println(); KeyboardEx.println(); const char tableau1[] = "01234*/"; for (unsigned int i = 0; i < strlen(tableau1); i++) { KeyboardEx.press(tableau1[i]); delay(500); KeyboardEx.release(tableau1[i]); KeyboardEx.println(); delay(500); } char tableau2[] = "-+.56789"; for (unsigned int i = 0; i < strlen(tableau2); i++) { KeyboardEx.press(tableau2[i]); delay(500); KeyboardEx.release(tableau2[i]); KeyboardEx.println(); delay(500); } const String tableau3 = "01234*/"; for (unsigned int i = 0; i < tableau3.length(); i++) { KeyboardEx.press(tableau3.substring(i)); delay(500); KeyboardEx.release(tableau3.substring(i)); KeyboardEx.println(); delay(500); } String tableau4 = "-+.56789"; for (unsigned int i = 0; i < tableau4.length(); i++) { KeyboardEx.press(tableau4.substring(i)); delay(500); KeyboardEx.release(tableau4.substring(i)); KeyboardEx.println(); delay(500); } KeyboardEx.println(); KeyboardEx.println(); for (byte i = 0; i < 10; ++i) { KeyboardEx.press(i); delay(1000); KeyboardEx.release(i); KeyboardEx.println(); delay(1000); } 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)); } |