suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
Diffstat (limited to 'keyboard.c')
| -rw-r--r-- | keyboard.c | 40 |
1 files changed, 15 insertions, 25 deletions
@@ -12,33 +12,30 @@ exit(1) void -kbd_init(struct kbd *kb, struct layout *layouts) { +kbd_init(struct kbd *kb) { fprintf(stderr, "Initializing keyboard\n"); - kb->layouts = layouts; - - kb->layer_index = 0; - - enum layout_id layer; - layer = kb->layers[kb->layer_index]; - kb->layout = &kb->layouts[layer]; + kb->suggs[0].label = "Hello"; + kb->suggs[1].label = "World"; + kb->suggs[2].label = "World"; + kb->suggs[3].label = NULL; } void -kbd_init_layout(struct layout *l, uint32_t width, uint32_t height) { +kbd_init_suggs(struct key *suggs, uint32_t width, uint32_t height) { uint32_t x = 0, y = 0; uint8_t rows = 1; - l->keyheight = height / rows; + uint32_t keyheight = height / rows; - struct key *k = l->keys; + struct key *k = suggs; double rowlength = kbd_get_row_length(k); while (k->label != NULL) { k->x = x; k->y = y; k->w = width / rowlength; x += k->w; - k->h = l->keyheight; + k->h = keyheight; k++; } } @@ -55,8 +52,7 @@ kbd_get_row_length(struct key *k) { struct key * kbd_get_key(struct kbd *kb, uint32_t x, uint32_t y) { - struct layout *l = kb->layout; - struct key *k = l->keys; + struct key *k = kb->suggs; if (kb->debug) fprintf(stderr, "get key: +%d+%d\n", x, y); while (k->label != NULL) { @@ -95,18 +91,12 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) { if (k->label) { kb->last_press = k; kbd_draw_key(kb, k, Press); - kbd_print_key_stdout(kb, k); + printf("%s", k->label); + fflush(stdout); } } void -kbd_print_key_stdout(struct kbd *kb, struct key *k) { - /* we generally print what is on the key LABEL and only support the normal */ - printf("%s", k->label); - fflush(stdout); -} - -void kbd_draw_key(struct kbd *kb, struct key *k, enum key_draw_type type) { struct drwsurf *d = kb->surf; const char *label = k->label; @@ -131,7 +121,7 @@ kbd_draw_key(struct kbd *kb, struct key *k, enum key_draw_type type) { void kbd_draw_layout(struct kbd *kb) { struct drwsurf *d = kb->surf; - struct key *next_key = kb->layout->keys; + struct key *next_key = kb->suggs; if (kb->debug) fprintf(stderr, "Draw layout"); @@ -144,13 +134,13 @@ kbd_draw_layout(struct kbd *kb) { } void -kbd_resize(struct kbd *kb, struct layout *layouts) { +kbd_resize(struct kbd *kb) { struct drwsurf *d = kb->surf; fprintf(stderr, "Resize %dx%d %d\n", kb->w, kb->h, kb->s); drwsurf_resize(d, kb->w, kb->h, kb->s); - kbd_init_layout(&layouts[0], kb->w, kb->h); + kbd_init_suggs(kb->suggs, kb->w, kb->h); kbd_draw_layout(kb); } |