suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
| -rw-r--r-- | keyboard.c | 8 | ||||
| -rw-r--r-- | keyboard.h | 14 |
2 files changed, 5 insertions, 17 deletions
@@ -44,10 +44,10 @@ kbd_init_layout(struct layout *l, uint32_t width, uint32_t height) { y += l->keyheight; x = 0; rowlength = kbd_get_row_length(k + 1); - } else if (k->width > 0) { + } else if (k->type == Code) { k->x = x; k->y = y; - k->w = ((double)width / rowlength) * k->width; + k->w = width / rowlength; x += k->w; } k->h = l->keyheight; @@ -59,7 +59,7 @@ double kbd_get_row_length(struct key *k) { double l = 0.0; while ((k->type != Last) && (k->type != EndRow)) { - l += k->width; + l += 1.0; k++; } return l; @@ -132,7 +132,7 @@ kbd_draw_key(struct kbd *kb, struct key *k, enum key_draw_type type) { if (kb->debug) fprintf(stderr, "Draw key +%d+%d %dx%d -> %s\n", k->x, k->y, k->w, k->h, label); - struct clr_scheme *scheme = (k->scheme == 0) ? &(kb->scheme) : &(kb->scheme1); + struct clr_scheme *scheme = &(kb->scheme); switch (type) { case Unpress: draw_inset(d, k->x, k->y, k->w, k->h, KBD_KEY_BORDER, scheme->fg); @@ -15,15 +15,6 @@ struct kbd; enum key_type { Pad = 0, // Padding, not a pressable key Code, // A normal key emitting a keycode - Mod, // A modifier key - Copy, // Copy key, copies the unicode value specified in code (creates and - // activates temporary keymap) - // used for keys that are not part of the keymap - Layout, // Layout switch to a specific layout - BackLayer, // Layout switch to the layout that was previously active - NextLayer, // Layout switch to the next layout in the layers sequence - Compose, // Compose modifier key, switches to a specific associated layout - // upon next keypress EndRow, // Incidates the end of a key row Last, // Indicated the end of a layout }; @@ -57,13 +48,10 @@ struct clr_scheme { struct key { const char *label; // primary label - const double width; // relative width (1.0) - const enum key_type type; + const enum key_type type; struct layout *layout; // pointer back to the parent layout that holds this // key - const uint32_t code_mod; /* modifier to force when this key is pressed */ - uint8_t scheme; // index of the scheme to use bool reset_mod; /* reset modifiers when clicked */ // actual coordinates on the surface (pixels), will be computed automatically |