X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=ppcskel.git;a=blobdiff_plain;f=main.c;fp=main.c;h=530d9e827ca2be63858d8526bf2e36dc7da1d148;hp=133d998531a4271cbb0e707f33c115b66385adfe;hb=1d0ed6b8602228d940d70e731ca88155ad15b65a;hpb=dd7d06aa840f23f3447befc37ce1ddcbe3a10c29 diff --git a/main.c b/main.c index 133d998..530d9e8 100644 --- a/main.c +++ b/main.c @@ -145,17 +145,33 @@ int main(void) #define TABSIZE 4 /* you are welcome to make this nice :) */ char str[7]; - u16 i, j, y=STDOUT_BORDER_TOP, x=STDOUT_BORDER_LEFT; + u16 i, j, ret=0, y=STDOUT_BORDER_TOP, x=STDOUT_BORDER_LEFT; u16 old_x, old_y; - struct kbrep *k; + struct kbrep *k, *old=NULL; while(1) { memset(str, '\0', 7); - j=0; k = usb_hidkb_getChars(); + j=0; old_x = x; /* save actual x and y position for printing after the loop */ old_y = y; for(i=0; k->keys[i]>0; i++) { + + /* dropping char's if necessary */ + if(old) { + for(j=0; j < 6; j++) { + if(old->keys[j] == k->keys[i]) { + ret = 1; + break; + } + } + } + if(ret) { + ret = 0; + continue; + } + j = 0; + unsigned char key = usb_hidkb_get_char_from_keycode(k->keys[i], (k->mod & MOD_lshift) || (k->mod & MOD_rshift)); /* no key or key not relevant? next, please. */ @@ -166,9 +182,11 @@ int main(void) if (key == '\n') { x = STDOUT_BORDER_LEFT; y += FONT_HEIGHT; + printf("\n"); /* TAB pressed? */ } else if (key == '\t') { x += (TABSIZE*FONT_WIDTH); + printf("\t"); /* BACKSPACE pressed? */ } else if (key == '\r') { @@ -191,12 +209,14 @@ int main(void) y = STDOUT_BORDER_TOP; } } - free(k); + if(old) { + free(old); + } + old = k; if(j > 0) { /* when there was any printable stuff, show it */ print_str_noscroll(old_x, old_y, str); - printf("y: %d\n", y); + printf("%s", str); } - } #if 0