Fonctions:
printAsciiEx[ln]( char c )
printAsciiEx[ln]( char tableau[] )
printAsciiEx[ln]( String s )
printAsciiEx[ln]( F("chaîne) ) // 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.
Description:
Permet d'envoyer une séquence de frappe correspondant à la chaîne de caractère encodée au format ASCII étendu
L'extension [ln] des fonctions ajoute le renvoi à la ligne en fin de chaîne
Arguments:
Un char, un tableau de char ou une chaîne de caractères String
Utilisation de la macro F() possible
Valeur de retour ( size_t ):
Retourne le nombre de caractères de la chaîne qui est égale au nombre d'octets ou 0 en cas d'erreur
ou dans le cas d'une valeur numérique renvoie 1 si réussi et sinon 0
Exemple:
KeyboardEx.printAsciiExln("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; // -------------------------------------------------------------------------- // Tableau de caractères de la Table ASCII étendue // ne comprend que des caractères sur 1 octet // A ^ À Ñ ? @ const byte texte[] = {0x41, 0x5E, 0xC0, 0xD1, 0x3F, 0x40, 0}; // 0 caractère null de fin de chaîne 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; int a; // n'aime pas le while(1) if (!oneloop) { oneloop = 1; // ****************************************************************************************************** // Test de la fonction printAsciiEx(ln)(...) // ****************************************************************************************************** KeyboardEx.printAsciiExln(F("*** Test de la fonction printAsciiEx(ln)(...) ***")); // fonctionne directement avec la chaine (char) KeyboardEx.printAsciiExln(); // car caractère < 128 unsigned int totalCaractere = KeyboardEx.printAsciiExln((char *)texte); KeyboardEx.print("Nombre de caractères :"); KeyboardEx.printAsciiExln(totalCaractere); KeyboardEx.printAsciiExln(); KeyboardEx.printAsciiExln(); // Création d'un tableau de caractères au format ASCII étendu // les valeurs suivantes ne correpondent pas à des caractères: // 127, 129, 141, 143 144, 157 a = 32; byte chaineAsciiEx[218 + 1]; // + 1 pour le caractère nul for (unsigned int i = 0; i < 218; ++i) { if (a == 127 || a == 129 || a == 141 || a == 143 || a == 157) { a += 1; if (a == 144) { a += 1; } } chaineAsciiEx[i] = a ; a += 1; } chaineAsciiEx[218] = '\0'; // important!!! totalCaractere = KeyboardEx.printAsciiExln((char *)chaineAsciiEx); KeyboardEx.print("Nombre de caractères :"); KeyboardEx.printAsciiExln(totalCaractere); KeyboardEx.printAsciiExln(); KeyboardEx.printAsciiExln(); // Création d'un objet String au format ASCII étendu // les valeurs suivantes ne correpondent pas à des caractères: // 127, 129, 141, 143 144, 157 a = 32; String chaine; for (unsigned int i = 0; i < 218; ++i) { if (a == 127 || a == 129 || a == 141 || a == 143 || a == 157) { a += 1; if (a == 144) { a += 1; } } chaine = chaine + String((char)a) ; a += 1; } totalCaractere = KeyboardEx.printAsciiExln(chaine); KeyboardEx.print("Nombre de caractères :"); KeyboardEx.printAsciiExln(totalCaractere); KeyboardEx.printAsciiExln(); KeyboardEx.printAsciiExln(); KeyboardEx.printAsciiExln((char)164); // -> ¤ char c = 165; KeyboardEx.printAsciiExln(c); // -> ¥ Alt Code nécessaire pour afficher ce caractère // car en dehors de la table (Le clavier Fr ne le gère pas) KeyboardEx.printAsciiExln(); KeyboardEx.printAsciiExln(11222); // Affiche une valeur numérique KeyboardEx.printAsciiExln(); 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)); } |