@@ 380,13 380,29 @@ show(int sigint) {
}
void
-handle_input(FILE *fd) {
+handle_input(FILE *fd, struct key *sugg) {
char *line;
line = malloc(1024);
if (fgets(line, 1024, fd) != NULL) {
fprintf(stderr, "Retrieved line: %s", line);
-
+ int i;
+ struct key *key = sugg;
+ char *l = line;
+ for (i = 0; l[i+1]; i++) {
+ if (l[i] == '\t') {
+ // free label?
+ key->label = strndup(l,i);
+ l += i + 1;
+ i = 0;
+ key++;
+ } else if (l[i] == '\n') {
+ break;
+ }
+ }
+ key->label = strndup(l,i);
+ key+=sizeof(struct key*);
+ key->label = NULL;
}
free(line);
@@ 506,7 522,7 @@ main(int argc, char **argv) {
while (run_display) {
while(layer_surface && poll(fds, 2, -1) != -1) {
if (fds[0].revents & POLLIN) {
- handle_input(stdin);
+ handle_input(stdin, keyboard.suggs);
}
if (wl_display_dispatch(display) == -1) {
break;