From 7fb71ace60bc6041aed8b21638f123c34e3d83e4 Mon Sep 17 00:00:00 2001 From: ityt Date: Sun, 5 Jan 2020 01:01:25 +0100 Subject: [PATCH] ajout de input_str() (alpha) --- include/userinput.h | 2 + src/userinput.c | 141 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) diff --git a/include/userinput.h b/include/userinput.h index d3285f2..0cad6f7 100644 --- a/include/userinput.h +++ b/include/userinput.h @@ -8,4 +8,6 @@ uint16_t input_uint16(); uint32_t input_uint32(); uint64_t input_uint64(); +void input_str(char *input, uint32_t taille); + #endif diff --git a/src/userinput.c b/src/userinput.c index 6ca0766..68b0b41 100644 --- a/src/userinput.c +++ b/src/userinput.c @@ -131,6 +131,147 @@ void input_manager(char *input, char *str_limite, uint8_t taille) { } } +void input_str(char *input, uint32_t taille) { + int key = 0, h, run = 1; + key_event_t key_event; + unsigned int curseur; + + for(curseur = 0; curseur <= taille; ++curseur) input[curseur] = 0; + + curseur = 0; + + dsize("0", NULL, NULL, &h); + + draw_field(h); + + while(run) { + if(curseur < taille) { + switch(key) { + case KEY_0: + if(key_event.alpha) input[curseur++] = 'Z'; + else if(!key_event.shift) input[curseur++] = '0'; + break; + case KEY_1: + if(key_event.alpha) input[curseur++] = 'U'; + else if(!key_event.shift) input[curseur++] = '1'; + break; + case KEY_2: + if(key_event.alpha) input[curseur++] = 'V'; + else if(!key_event.shift) input[curseur++] = '2'; + break; + case KEY_3: + if(key_event.alpha) input[curseur++] = 'W'; + else if(!key_event.shift) input[curseur++] = '3'; + break; + case KEY_4: + if(key_event.alpha) input[curseur++] = 'P'; + else if(!key_event.shift) input[curseur++] = '4'; + break; + case KEY_5: + if(key_event.alpha) input[curseur++] = 'Q'; + else if(!key_event.shift) input[curseur++] = '5'; + break; + case KEY_6: + if(key_event.alpha) input[curseur++] = 'R'; + else if(!key_event.shift) input[curseur++] = '6'; + break; + case KEY_7: + if(key_event.alpha) input[curseur++] = 'M'; + else if(!key_event.shift) input[curseur++] = '7'; + break; + case KEY_8: + if(key_event.alpha) input[curseur++] = 'N'; + else if(!key_event.shift) input[curseur++] = '8'; + break; + case KEY_9: + if(key_event.alpha) input[curseur++] = 'O'; + else if(!key_event.shift) input[curseur++] = '9'; + break; + case KEY_MUL: + if(key_event.alpha) input[curseur++] = 'S'; + else if(key_event.shift) input[curseur++] = '{'; + else input[curseur++] = '*'; + break; + case KEY_DIV: + if(key_event.alpha) input[curseur++] = 'T'; + else if(key_event.shift) input[curseur++] = '}'; + else input[curseur++] = '/'; + break; + case KEY_ADD: + if(key_event.alpha) input[curseur++] = 'X'; + else if(key_event.shift) input[curseur++] = '['; + else input[curseur++] = '+'; + break; + case KEY_SUB: + if(key_event.alpha) input[curseur++] = 'Y'; + else if(key_event.shift) input[curseur++] = ']'; + else input[curseur++] = '-'; + break; + case KEY_POWER: + if(!key_event.alpha && !key_event.shift) input[curseur++] = '^'; + break; + case KEY_XOT: + if(key_event.alpha) input[curseur++] = 'A'; + break; + case KEY_LOG: + if(key_event.alpha) input[curseur++] = 'B'; + break; + case KEY_LN: + if(key_event.alpha) input[curseur++] = 'C'; + break; + case KEY_SIN: + if(key_event.alpha) input[curseur++] = 'D'; + break; + case KEY_COS: + if(key_event.alpha) input[curseur++] = 'E'; + break; + case KEY_TAN: + if(key_event.alpha) input[curseur++] = 'F'; + break; + case KEY_FRAC: + if(key_event.alpha) input[curseur++] = 'G'; + break; + case KEY_FD: + if(key_event.alpha) input[curseur++] = 'H'; + break; + case KEY_LEFTP: + if(key_event.alpha) input[curseur++] = 'I'; + else if(!key_event.shift) input[curseur++] = '('; + break; + case KEY_RIGHTP: + if(key_event.alpha) input[curseur++] = 'J'; + else if(!key_event.shift) input[curseur++] = ')'; + break; + case KEY_COMMA: + if(key_event.alpha) input[curseur++] = 'K'; + else if(!key_event.shift) input[curseur++] = ','; + break; + case KEY_ARROW: + if(key_event.alpha) input[curseur++] = 'L'; + break; + case KEY_DOT: + if(key_event.alpha) input[curseur++] = ' '; + else if(key_event.shift) input[curseur++] = '='; + else input[curseur++] = '.'; + break; + case KEY_EXP: + if(key_event.alpha) input[curseur++] = '"'; + } + } + if(key == KEY_EXE) run = 0; + else { + if(curseur && key == KEY_DEL) { + clear_field(h); + input[--curseur] = 0; + } + dtext(2, HEIGHT-2-h, input, C_BLACK, C_WHITE); + dupdate(); + key_event = getkey(); + key = key_event.key; + } + } +} + void clear_field(int h) { drect(1, HEIGHT-2-h, WIDTH-2, HEIGHT-3, C_WHITE); }