ajout de input_str() (alpha)
This commit is contained in:
parent
d74dc85e40
commit
7fb71ace60
|
@ -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
|
||||
|
|
141
src/userinput.c
141
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue