
projelec
Dependencies: mbed LCD_DISCO_F746NG BSP_DISCO_F746NG
user/keyboard.cpp@8:4e6dfbe97bbd, 2020-03-19 (annotated)
- Committer:
- alexandrelouis
- Date:
- Thu Mar 19 07:55:50 2020 +0000
- Revision:
- 8:4e6dfbe97bbd
changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexandrelouis | 8:4e6dfbe97bbd | 1 | /* |
alexandrelouis | 8:4e6dfbe97bbd | 2 | ******************************************************************************* |
alexandrelouis | 8:4e6dfbe97bbd | 3 | * Keyboard Library virtual keyboard for touch screen display on demo |
alexandrelouis | 8:4e6dfbe97bbd | 4 | * Découverte STM32F746NG |
alexandrelouis | 8:4e6dfbe97bbd | 5 | * |
alexandrelouis | 8:4e6dfbe97bbd | 6 | * Fichier "keyboard.ccp" |
alexandrelouis | 8:4e6dfbe97bbd | 7 | ******************************************************************************* |
alexandrelouis | 8:4e6dfbe97bbd | 8 | */ |
alexandrelouis | 8:4e6dfbe97bbd | 9 | |
alexandrelouis | 8:4e6dfbe97bbd | 10 | /*Ajouter le fichier header*/ |
alexandrelouis | 8:4e6dfbe97bbd | 11 | #include "keyboard.h" |
alexandrelouis | 8:4e6dfbe97bbd | 12 | #include "USBMIDI.h" |
alexandrelouis | 8:4e6dfbe97bbd | 13 | #include "MIDIMessage.h" |
alexandrelouis | 8:4e6dfbe97bbd | 14 | /* Les structures de la clavature et de l’écran tactile */ |
alexandrelouis | 8:4e6dfbe97bbd | 15 | Keyboard_TypeDef keyboard; |
alexandrelouis | 8:4e6dfbe97bbd | 16 | TS_StateTypeDef tScreen; |
alexandrelouis | 8:4e6dfbe97bbd | 17 | USBMIDI midi(Highspeed_Interface,0x0700,0x0101,0x0001); |
alexandrelouis | 8:4e6dfbe97bbd | 18 | |
alexandrelouis | 8:4e6dfbe97bbd | 19 | /*Fonction pour travailler avec le clavier à l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 20 | |
alexandrelouis | 8:4e6dfbe97bbd | 21 | /* Initialisation et affichage du clavier */ |
alexandrelouis | 8:4e6dfbe97bbd | 22 | uint8_t Keyboard_init(uint16_t x_value, uint16_t y_value) |
alexandrelouis | 8:4e6dfbe97bbd | 23 | { |
alexandrelouis | 8:4e6dfbe97bbd | 24 | uint8_t i; |
alexandrelouis | 8:4e6dfbe97bbd | 25 | |
alexandrelouis | 8:4e6dfbe97bbd | 26 | /* Les coordonnées du coin supérieur gauche du clavier sur l’écran servent de "point |
alexandrelouis | 8:4e6dfbe97bbd | 27 | de référence" pour déterminer l’emplacement de tous les autres éléments */ |
alexandrelouis | 8:4e6dfbe97bbd | 28 | |
alexandrelouis | 8:4e6dfbe97bbd | 29 | keyboard.posX = x_value; |
alexandrelouis | 8:4e6dfbe97bbd | 30 | keyboard.posY = y_value; |
alexandrelouis | 8:4e6dfbe97bbd | 31 | |
alexandrelouis | 8:4e6dfbe97bbd | 32 | /* La valeur par défaut sur le clavier est une disposition anglaise en MAJ. */ |
alexandrelouis | 8:4e6dfbe97bbd | 33 | keyboard.mode = MODE_UPPER_CASE; |
alexandrelouis | 8:4e6dfbe97bbd | 34 | |
alexandrelouis | 8:4e6dfbe97bbd | 35 | /* Bloc d’initialisation pour les clés standard */ |
alexandrelouis | 8:4e6dfbe97bbd | 36 | |
alexandrelouis | 8:4e6dfbe97bbd | 37 | /* Initialisation des coordonnées des touches du clavier pour la première rangée */ |
alexandrelouis | 8:4e6dfbe97bbd | 38 | |
alexandrelouis | 8:4e6dfbe97bbd | 39 | for (i = 0; i < 5; i++) { |
alexandrelouis | 8:4e6dfbe97bbd | 40 | keyboard.key[i].id = i; |
alexandrelouis | 8:4e6dfbe97bbd | 41 | keyboard.key[i].posX = keyboard.posX + 5 + (KEY_DISTANCE + KEY_SMALL_LENGTH) * i; |
alexandrelouis | 8:4e6dfbe97bbd | 42 | keyboard.key[i].posY = keyboard.posY + 3; |
alexandrelouis | 8:4e6dfbe97bbd | 43 | keyboard.key[i].dimX = KEY_SMALL_LENGTH; |
alexandrelouis | 8:4e6dfbe97bbd | 44 | keyboard.key[i].dimY = KEY_SMALL_HEIGHT; |
alexandrelouis | 8:4e6dfbe97bbd | 45 | keyboard.key[i].status = KEY_RELEASED; |
alexandrelouis | 8:4e6dfbe97bbd | 46 | } |
alexandrelouis | 8:4e6dfbe97bbd | 47 | |
alexandrelouis | 8:4e6dfbe97bbd | 48 | /* Valeurs ASCII de chaque touche de la première rangée pour différentes |
alexandrelouis | 8:4e6dfbe97bbd | 49 | dispositions du clavier |
alexandrelouis | 8:4e6dfbe97bbd | 50 | */ |
alexandrelouis | 8:4e6dfbe97bbd | 51 | keyboard.key[0].value[0] = 'D'; |
alexandrelouis | 8:4e6dfbe97bbd | 52 | keyboard.key[0].value[1] = 'd'; |
alexandrelouis | 8:4e6dfbe97bbd | 53 | keyboard.key[0].value[2] = '1'; |
alexandrelouis | 8:4e6dfbe97bbd | 54 | |
alexandrelouis | 8:4e6dfbe97bbd | 55 | keyboard.key[1].value[0] = 'R'; |
alexandrelouis | 8:4e6dfbe97bbd | 56 | keyboard.key[1].value[1] = 'r'; |
alexandrelouis | 8:4e6dfbe97bbd | 57 | keyboard.key[1].value[2] = '2'; |
alexandrelouis | 8:4e6dfbe97bbd | 58 | |
alexandrelouis | 8:4e6dfbe97bbd | 59 | keyboard.key[2].value[0] = 'M'; |
alexandrelouis | 8:4e6dfbe97bbd | 60 | keyboard.key[2].value[1] = 'm'; |
alexandrelouis | 8:4e6dfbe97bbd | 61 | keyboard.key[2].value[2] = '3'; |
alexandrelouis | 8:4e6dfbe97bbd | 62 | |
alexandrelouis | 8:4e6dfbe97bbd | 63 | keyboard.key[3].value[0] = 'F'; |
alexandrelouis | 8:4e6dfbe97bbd | 64 | keyboard.key[3].value[1] = 'f'; |
alexandrelouis | 8:4e6dfbe97bbd | 65 | keyboard.key[3].value[2] = '4'; |
alexandrelouis | 8:4e6dfbe97bbd | 66 | |
alexandrelouis | 8:4e6dfbe97bbd | 67 | keyboard.key[4].value[0] = 'S'; |
alexandrelouis | 8:4e6dfbe97bbd | 68 | keyboard.key[4].value[1] = 's'; |
alexandrelouis | 8:4e6dfbe97bbd | 69 | keyboard.key[4].value[2] = '5'; |
alexandrelouis | 8:4e6dfbe97bbd | 70 | |
alexandrelouis | 8:4e6dfbe97bbd | 71 | |
alexandrelouis | 8:4e6dfbe97bbd | 72 | /* Initialisation des coordonnées des touches du clavier pour la rangée du milieu */ |
alexandrelouis | 8:4e6dfbe97bbd | 73 | |
alexandrelouis | 8:4e6dfbe97bbd | 74 | for (i = 5; i < 8; i++) { |
alexandrelouis | 8:4e6dfbe97bbd | 75 | keyboard.key[i].id = i; |
alexandrelouis | 8:4e6dfbe97bbd | 76 | keyboard.key[i].posX = keyboard.posX + 5 + (KEY_DISTANCE + KEY_SMALL_LENGTH) * (i - 3) - 95; |
alexandrelouis | 8:4e6dfbe97bbd | 77 | keyboard.key[i].posY = keyboard.posY + 3 + KEY_SMALL_HEIGHT + KEY_DISTANCE; |
alexandrelouis | 8:4e6dfbe97bbd | 78 | keyboard.key[i].dimX = KEY_SMALL_LENGTH; |
alexandrelouis | 8:4e6dfbe97bbd | 79 | keyboard.key[i].dimY = KEY_SMALL_HEIGHT; |
alexandrelouis | 8:4e6dfbe97bbd | 80 | keyboard.key[i].status = KEY_RELEASED; |
alexandrelouis | 8:4e6dfbe97bbd | 81 | } |
alexandrelouis | 8:4e6dfbe97bbd | 82 | |
alexandrelouis | 8:4e6dfbe97bbd | 83 | /* Valeurs ASCII de chaque touche de la rangée du milieu pour différentes |
alexandrelouis | 8:4e6dfbe97bbd | 84 | dispositions du clavier |
alexandrelouis | 8:4e6dfbe97bbd | 85 | */ |
alexandrelouis | 8:4e6dfbe97bbd | 86 | |
alexandrelouis | 8:4e6dfbe97bbd | 87 | keyboard.key[5].value[0] = 'L'; |
alexandrelouis | 8:4e6dfbe97bbd | 88 | keyboard.key[5].value[1] = 'l'; |
alexandrelouis | 8:4e6dfbe97bbd | 89 | keyboard.key[5].value[2] = '1'; |
alexandrelouis | 8:4e6dfbe97bbd | 90 | |
alexandrelouis | 8:4e6dfbe97bbd | 91 | keyboard.key[6].value[0] = 'S'; |
alexandrelouis | 8:4e6dfbe97bbd | 92 | keyboard.key[6].value[1] = 's'; |
alexandrelouis | 8:4e6dfbe97bbd | 93 | keyboard.key[6].value[2] = '2'; |
alexandrelouis | 8:4e6dfbe97bbd | 94 | |
alexandrelouis | 8:4e6dfbe97bbd | 95 | keyboard.key[7].value[0] = 'D'; |
alexandrelouis | 8:4e6dfbe97bbd | 96 | keyboard.key[7].value[1] = 'd'; |
alexandrelouis | 8:4e6dfbe97bbd | 97 | keyboard.key[7].value[2] = '3'; |
alexandrelouis | 8:4e6dfbe97bbd | 98 | |
alexandrelouis | 8:4e6dfbe97bbd | 99 | |
alexandrelouis | 8:4e6dfbe97bbd | 100 | /* Nous dessinons le clavier à l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 101 | |
alexandrelouis | 8:4e6dfbe97bbd | 102 | Keyboard_display_all(); |
alexandrelouis | 8:4e6dfbe97bbd | 103 | |
alexandrelouis | 8:4e6dfbe97bbd | 104 | return 0; |
alexandrelouis | 8:4e6dfbe97bbd | 105 | } |
alexandrelouis | 8:4e6dfbe97bbd | 106 | |
alexandrelouis | 8:4e6dfbe97bbd | 107 | /* Dessiner le clavier à l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 108 | |
alexandrelouis | 8:4e6dfbe97bbd | 109 | uint8_t Keyboard_display_all(void) |
alexandrelouis | 8:4e6dfbe97bbd | 110 | { |
alexandrelouis | 8:4e6dfbe97bbd | 111 | uint8_t i; |
alexandrelouis | 8:4e6dfbe97bbd | 112 | |
alexandrelouis | 8:4e6dfbe97bbd | 113 | /* Nous obtenons la valeur associée à la couleur de l’arrière-plan de l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 114 | uint32_t back_color = BSP_LCD_GetBackColor(); |
alexandrelouis | 8:4e6dfbe97bbd | 115 | |
alexandrelouis | 8:4e6dfbe97bbd | 116 | /* Peindre l’écran entier avec la couleur de l’arrière-plan */ |
alexandrelouis | 8:4e6dfbe97bbd | 117 | BSP_LCD_Clear(back_color); |
alexandrelouis | 8:4e6dfbe97bbd | 118 | |
alexandrelouis | 8:4e6dfbe97bbd | 119 | /* Nous dessinons toutes les touches sur le clavier */ |
alexandrelouis | 8:4e6dfbe97bbd | 120 | |
alexandrelouis | 8:4e6dfbe97bbd | 121 | for (i = 0; i < KEY_NUMBER; i++) { |
alexandrelouis | 8:4e6dfbe97bbd | 122 | Key_display_normal(i); |
alexandrelouis | 8:4e6dfbe97bbd | 123 | } |
alexandrelouis | 8:4e6dfbe97bbd | 124 | |
alexandrelouis | 8:4e6dfbe97bbd | 125 | return 0; |
alexandrelouis | 8:4e6dfbe97bbd | 126 | } |
alexandrelouis | 8:4e6dfbe97bbd | 127 | |
alexandrelouis | 8:4e6dfbe97bbd | 128 | /* Dessin d’une seule touche de clavier à l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 129 | |
alexandrelouis | 8:4e6dfbe97bbd | 130 | uint8_t Key_display_normal(uint8_t id) |
alexandrelouis | 8:4e6dfbe97bbd | 131 | { |
alexandrelouis | 8:4e6dfbe97bbd | 132 | /* Nous obtenons la couleur de l’arrière-plan de l’écran et la couleur de la police */ |
alexandrelouis | 8:4e6dfbe97bbd | 133 | uint32_t back_color = BSP_LCD_GetBackColor(); |
alexandrelouis | 8:4e6dfbe97bbd | 134 | uint32_t text_color = BSP_LCD_GetTextColor(); |
alexandrelouis | 8:4e6dfbe97bbd | 135 | |
alexandrelouis | 8:4e6dfbe97bbd | 136 | /* Changer les couleurs et peindre l’endroit pour la touche sur l’écran avec la couleur de l’arrière-plan */ |
alexandrelouis | 8:4e6dfbe97bbd | 137 | BSP_LCD_SetTextColor(back_color); |
alexandrelouis | 8:4e6dfbe97bbd | 138 | BSP_LCD_SetBackColor(text_color); |
alexandrelouis | 8:4e6dfbe97bbd | 139 | BSP_LCD_FillRect(keyboard.key[id].posX, keyboard.key[id].posY, keyboard.key[id].dimX, keyboard.key[id].dimY); |
alexandrelouis | 8:4e6dfbe97bbd | 140 | |
alexandrelouis | 8:4e6dfbe97bbd | 141 | /* Retournez les mêmes valeurs de couleur de l’arrière-plan de l’écran et de la couleur de police */ |
alexandrelouis | 8:4e6dfbe97bbd | 142 | BSP_LCD_SetTextColor(text_color); |
alexandrelouis | 8:4e6dfbe97bbd | 143 | BSP_LCD_SetBackColor(back_color); |
alexandrelouis | 8:4e6dfbe97bbd | 144 | |
alexandrelouis | 8:4e6dfbe97bbd | 145 | /* Dessiner un cadre autour de la touche et fermer le pixel dans le coin inférieur droit */ |
alexandrelouis | 8:4e6dfbe97bbd | 146 | BSP_LCD_DrawRect(keyboard.key[id].posX, keyboard.key[id].posY, keyboard.key[id].dimX, keyboard.key[id].dimY); |
alexandrelouis | 8:4e6dfbe97bbd | 147 | BSP_LCD_DrawPixel(keyboard.key[id].posX + keyboard.key[id].dimX, keyboard.key[id].posY + keyboard.key[id].dimY, text_color); |
alexandrelouis | 8:4e6dfbe97bbd | 148 | |
alexandrelouis | 8:4e6dfbe97bbd | 149 | /* Afficher la valeur de la touche dans la disposition actuelle du clavier. */ |
alexandrelouis | 8:4e6dfbe97bbd | 150 | BSP_LCD_DisplayChar(keyboard.key[id].posX + 8, keyboard.key[id].posY + 8, keyboard.key[id].value[keyboard.mode]); |
alexandrelouis | 8:4e6dfbe97bbd | 151 | |
alexandrelouis | 8:4e6dfbe97bbd | 152 | return 0; |
alexandrelouis | 8:4e6dfbe97bbd | 153 | } |
alexandrelouis | 8:4e6dfbe97bbd | 154 | |
alexandrelouis | 8:4e6dfbe97bbd | 155 | /* Dessin d’une seule touche de clavier à l’écran (couleur inversée) */ |
alexandrelouis | 8:4e6dfbe97bbd | 156 | uint8_t Key_display_inverted(uint8_t id) |
alexandrelouis | 8:4e6dfbe97bbd | 157 | { |
alexandrelouis | 8:4e6dfbe97bbd | 158 | uint32_t back_color = BSP_LCD_GetBackColor(); |
alexandrelouis | 8:4e6dfbe97bbd | 159 | uint32_t text_color = BSP_LCD_GetTextColor(); |
alexandrelouis | 8:4e6dfbe97bbd | 160 | |
alexandrelouis | 8:4e6dfbe97bbd | 161 | /* Remplir la place pour la touche à l’écran avec la couleur de la police */ |
alexandrelouis | 8:4e6dfbe97bbd | 162 | BSP_LCD_FillRect(keyboard.key[id].posX, keyboard.key[id].posY, keyboard.key[id].dimX, keyboard.key[id].dimY); |
alexandrelouis | 8:4e6dfbe97bbd | 163 | |
alexandrelouis | 8:4e6dfbe97bbd | 164 | /* Changer de couleur et afficher la valeur de la touche dans la disposition actuelle du clavier */ |
alexandrelouis | 8:4e6dfbe97bbd | 165 | BSP_LCD_SetTextColor(back_color); |
alexandrelouis | 8:4e6dfbe97bbd | 166 | BSP_LCD_SetBackColor(text_color); |
alexandrelouis | 8:4e6dfbe97bbd | 167 | BSP_LCD_DisplayChar(keyboard.key[id].posX + 8, keyboard.key[id].posY + 8, keyboard.key[id].value[keyboard.mode]); |
alexandrelouis | 8:4e6dfbe97bbd | 168 | |
alexandrelouis | 8:4e6dfbe97bbd | 169 | /* Retour de la couleur de fond d’écran précédente et la couleur de police */ |
alexandrelouis | 8:4e6dfbe97bbd | 170 | BSP_LCD_SetTextColor(text_color); |
alexandrelouis | 8:4e6dfbe97bbd | 171 | BSP_LCD_SetBackColor(back_color); |
alexandrelouis | 8:4e6dfbe97bbd | 172 | |
alexandrelouis | 8:4e6dfbe97bbd | 173 | return 0; |
alexandrelouis | 8:4e6dfbe97bbd | 174 | } |
alexandrelouis | 8:4e6dfbe97bbd | 175 | |
alexandrelouis | 8:4e6dfbe97bbd | 176 | |
alexandrelouis | 8:4e6dfbe97bbd | 177 | /* Vérifier l’entrée sur le clavier à l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 178 | uint8_t Keyboard_check(void) |
alexandrelouis | 8:4e6dfbe97bbd | 179 | { |
alexandrelouis | 8:4e6dfbe97bbd | 180 | uint8_t i; |
alexandrelouis | 8:4e6dfbe97bbd | 181 | uint8_t j; |
alexandrelouis | 8:4e6dfbe97bbd | 182 | |
alexandrelouis | 8:4e6dfbe97bbd | 183 | /* Vérification de l’état du "conducteur" de l’écran tactile */ |
alexandrelouis | 8:4e6dfbe97bbd | 184 | BSP_TS_GetState(&tScreen); |
alexandrelouis | 8:4e6dfbe97bbd | 185 | |
alexandrelouis | 8:4e6dfbe97bbd | 186 | /* Si on appuie sur l'ecran */ |
alexandrelouis | 8:4e6dfbe97bbd | 187 | if (tScreen.touchDetected) { |
alexandrelouis | 8:4e6dfbe97bbd | 188 | for (i = 0; i < KEY_NUMBER; i++) { |
alexandrelouis | 8:4e6dfbe97bbd | 189 | /* Si les coordonnées tactiles se trouvent dans les limites de l’une des touches non pressés, +/- 4 pixels */ |
alexandrelouis | 8:4e6dfbe97bbd | 190 | if (((tScreen.touchX[0] >= keyboard.key[i].posX - 4) && (tScreen.touchX[0] < keyboard.key[i].posX + keyboard.key[i].dimX + 4)) && |
alexandrelouis | 8:4e6dfbe97bbd | 191 | ((tScreen.touchY[0] >= keyboard.key[i].posY - 4) && (tScreen.touchY[0] < keyboard.key[i].posY + keyboard.key[i].dimY + 4)) && |
alexandrelouis | 8:4e6dfbe97bbd | 192 | (keyboard.key[i].status == KEY_RELEASED)) { |
alexandrelouis | 8:4e6dfbe97bbd | 193 | /* Dessinez la bonne clé dans la couleur inversée */ |
alexandrelouis | 8:4e6dfbe97bbd | 194 | Key_display_inverted(i); |
alexandrelouis | 8:4e6dfbe97bbd | 195 | |
alexandrelouis | 8:4e6dfbe97bbd | 196 | /* Si l'appui a déjà été fixée sur une autre clé, "appuyez-la" et redessiner */ |
alexandrelouis | 8:4e6dfbe97bbd | 197 | for (j = 0; j < KEY_NUMBER; j++) { |
alexandrelouis | 8:4e6dfbe97bbd | 198 | if (keyboard.key[j].status == KEY_PRESSED) { |
alexandrelouis | 8:4e6dfbe97bbd | 199 | Key_display_normal(j); |
alexandrelouis | 8:4e6dfbe97bbd | 200 | |
alexandrelouis | 8:4e6dfbe97bbd | 201 | keyboard.key[j].status = KEY_RELEASED; |
alexandrelouis | 8:4e6dfbe97bbd | 202 | } |
alexandrelouis | 8:4e6dfbe97bbd | 203 | } |
alexandrelouis | 8:4e6dfbe97bbd | 204 | |
alexandrelouis | 8:4e6dfbe97bbd | 205 | /* Changer l’état de la touche pour laquelle l'appui a été enregistré */ |
alexandrelouis | 8:4e6dfbe97bbd | 206 | keyboard.key[i].status = KEY_PRESSED; |
alexandrelouis | 8:4e6dfbe97bbd | 207 | |
alexandrelouis | 8:4e6dfbe97bbd | 208 | /* Réinitialisez l’état du conducteur de l’écran tactile */ |
alexandrelouis | 8:4e6dfbe97bbd | 209 | BSP_TS_ResetTouchData(&tScreen); |
alexandrelouis | 8:4e6dfbe97bbd | 210 | } |
alexandrelouis | 8:4e6dfbe97bbd | 211 | } |
alexandrelouis | 8:4e6dfbe97bbd | 212 | } |
alexandrelouis | 8:4e6dfbe97bbd | 213 | |
alexandrelouis | 8:4e6dfbe97bbd | 214 | /* S’il n’y a pas de contact, vérifiez l’état de chaque touche, peut-être qu'un appui |
alexandrelouis | 8:4e6dfbe97bbd | 215 | est déja en cours et devrait être traité comme une entrée */ |
alexandrelouis | 8:4e6dfbe97bbd | 216 | |
alexandrelouis | 8:4e6dfbe97bbd | 217 | else { |
alexandrelouis | 8:4e6dfbe97bbd | 218 | for (i = 0; i < KEY_NUMBER; i++) { |
alexandrelouis | 8:4e6dfbe97bbd | 219 | /* Si la clé touche est pressée, "appuyez-la" et redessiner */ |
alexandrelouis | 8:4e6dfbe97bbd | 220 | if (keyboard.key[i].status == KEY_PRESSED) { |
alexandrelouis | 8:4e6dfbe97bbd | 221 | Key_display_normal(i); |
alexandrelouis | 8:4e6dfbe97bbd | 222 | |
alexandrelouis | 8:4e6dfbe97bbd | 223 | keyboard.key[i].status = KEY_RELEASED; |
alexandrelouis | 8:4e6dfbe97bbd | 224 | BSP_TS_ResetTouchData(&tScreen); |
alexandrelouis | 8:4e6dfbe97bbd | 225 | |
alexandrelouis | 8:4e6dfbe97bbd | 226 | /* On retourne la valeur de l'entrée */ |
alexandrelouis | 8:4e6dfbe97bbd | 227 | return keyboard.key[i].value[keyboard.mode]; |
alexandrelouis | 8:4e6dfbe97bbd | 228 | } |
alexandrelouis | 8:4e6dfbe97bbd | 229 | } |
alexandrelouis | 8:4e6dfbe97bbd | 230 | } |
alexandrelouis | 8:4e6dfbe97bbd | 231 | |
alexandrelouis | 8:4e6dfbe97bbd | 232 | return 0; |
alexandrelouis | 8:4e6dfbe97bbd | 233 | } |
alexandrelouis | 8:4e6dfbe97bbd | 234 | |
alexandrelouis | 8:4e6dfbe97bbd | 235 | /* Gestionnaire d’entrée de clavier à l’écran */ |
alexandrelouis | 8:4e6dfbe97bbd | 236 | uint8_t Keyboard_handler(char *prompt, char buffer[]) |
alexandrelouis | 8:4e6dfbe97bbd | 237 | { |
alexandrelouis | 8:4e6dfbe97bbd | 238 | uint8_t i; |
alexandrelouis | 8:4e6dfbe97bbd | 239 | uint8_t key; |
alexandrelouis | 8:4e6dfbe97bbd | 240 | |
alexandrelouis | 8:4e6dfbe97bbd | 241 | /* Vérifiez s’il y a un nouveau clic */ |
alexandrelouis | 8:4e6dfbe97bbd | 242 | key = Keyboard_check(); |
alexandrelouis | 8:4e6dfbe97bbd | 243 | |
alexandrelouis | 8:4e6dfbe97bbd | 244 | i=24; |
alexandrelouis | 8:4e6dfbe97bbd | 245 | midi.write(MIDIMessage::NoteOn(i)); |
alexandrelouis | 8:4e6dfbe97bbd | 246 | wait(0.3); |
alexandrelouis | 8:4e6dfbe97bbd | 247 | midi.write(MIDIMessage::NoteOff(i)); |
alexandrelouis | 8:4e6dfbe97bbd | 248 | |
alexandrelouis | 8:4e6dfbe97bbd | 249 | |
alexandrelouis | 8:4e6dfbe97bbd | 250 | /* Retourner la valeur de la dernière touche pressée */ |
alexandrelouis | 8:4e6dfbe97bbd | 251 | return key; |
alexandrelouis | 8:4e6dfbe97bbd | 252 | } |