ajout de input_str() (alpha)

This commit is contained in:
ityt 2020-01-05 01:01:25 +01:00
parent d74dc85e40
commit 7fb71ace60
2 changed files with 143 additions and 0 deletions

View File

@ -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

View File

@ -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);
}