diff --git a/firmware/basic/stringin.c b/firmware/basic/stringin.c index 20e72bb..cce6e3f 100644 --- a/firmware/basic/stringin.c +++ b/firmware/basic/stringin.c @@ -1,8 +1,9 @@ +#include #include "basic/basic.h" #include "lcd/render.h" #include "lcd/display.h" -#include "lcd/allfonts.h" +#include "lcd/print.h" #define CHARWIDTH 12 #define CHARSPACE 0x20 @@ -23,56 +24,65 @@ void inputInit(char p[],char s[], uint8_t l, uint8_t as, uint8_t ae) { s_input.pos = 0; s_input.dcursor = 0; s_input.done = false; + s[l-1]=0; + for(int i=strlen(s);i<(l-1);i++) + s[i]=0; } void inputMove() { char *cur = s_input.line+s_input.pos+s_input.dcursor; - char key = getInput(); - if (key == BTN_LEFT) { - if (s_input.dcursor >0) { - s_input.dcursor --; - } else if (s_input.pos > 0) { - s_input.pos --; - } - } else if (key == BTN_RIGHT) { - if (s_input.dcursor s_input.asciiend) { - *cur = s_input.asciiend; - } else { - *cur = *cur - 1; - } - } else if (key == BTN_UP) { - if (*cur >= s_input.asciiend) { - *cur = s_input.asciistart; - } else if (*cur < s_input.asciistart) { - *cur = s_input.asciistart; - } else { - *cur = *cur + 1; - } - } else if (key == (BTN_ENTER)) { - s_input.done = true; - } + switch(getInputWaitRepeat()){ + case BTN_LEFT: + if (s_input.dcursor >0) { + s_input.dcursor --; + } else if (s_input.pos > 0) { + s_input.pos --; + } + break; + case BTN_RIGHT: + if (s_input.dcursor s_input.asciiend) { + *cur = s_input.asciiend; + } else { + *cur = *cur - 1; + } + break; + case BTN_DOWN: + if (*cur >= s_input.asciiend) { + *cur = s_input.asciistart; + } else if (*cur < s_input.asciistart) { + *cur = s_input.asciistart; + } else { + *cur = *cur + 1; + } + break; + case BTN_ENTER: + s_input.done = true; +// getInputWaitRelease(); + break; + } } void inputDraw() { - lcdFill(0); + char tmp[2]= {0,0}; + lcdClear(); DoString(0,0,s_input.prompt); for (int dx = 0; dx<= RESX/CHARWIDTH && s_input.pos+dx