suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
| -rw-r--r-- | keyboard.c | 22 | ||||
| -rw-r--r-- | keyboard.h | 2 | ||||
| -rw-r--r-- | main.c | 12 |
3 files changed, 4 insertions, 32 deletions
@@ -39,7 +39,7 @@ kbd_get_rows(struct layout *l) { } void -kbd_init(struct kbd *kb, struct layout *layouts, char *layer_names_list) { +kbd_init(struct kbd *kb, struct layout *layouts) { char *s; int i; bool found; @@ -54,26 +54,6 @@ kbd_init(struct kbd *kb, struct layout *layouts, char *layer_names_list) { kb->layer_index = 0; - if (layer_names_list) { - uint8_t numlayers = 0; - kb->layers = malloc(MAX_LAYERS * sizeof(enum layout_id)); - s = strtok(layer_names_list, ","); - while (s != NULL) { - if (numlayers + 1 == MAX_LAYERS) { - fprintf(stderr, "too many layers specified"); - exit(3); - } - found = false; - kb->layers[numlayers++] = 0; - s = strtok(NULL, ","); - } - kb->layers[numlayers] = NumLayouts; // mark the end of the sequence - if (numlayers == 0) { - fprintf(stderr, "No layers defined\n"); - exit(3); - } - } - i = 0; enum layout_id lid = kb->layers[0]; while (lid != NumLayouts) { @@ -115,7 +115,7 @@ void draw_inset(struct drwsurf *ds, uint32_t x, uint32_t y, uint32_t width, void draw_over_inset(struct drwsurf *ds, uint32_t x, uint32_t y, uint32_t width, uint32_t height, uint32_t border, Color color); -void kbd_init(struct kbd *kb, struct layout *layouts, char *layer_names_list); +void kbd_init(struct kbd *kb, struct layout *layouts); void kbd_init_layout(struct layout *l, uint32_t width, uint32_t height); struct key *kbd_get_key(struct kbd *kb, uint32_t x, uint32_t y); void kbd_unpress_key(struct kbd *kb, uint32_t time); @@ -337,14 +337,12 @@ layer_surface_closed(void *data, struct zwlr_layer_surface_v1 *surface) { void usage(char *argv0) { fprintf(stderr, - "usage: %s [-hov] [-H height] [-L landscape height] [-fn font] [-l " - "layers]\n", + "usage: %s [-hov] [-H height] [-L landscape height] [-fn font]\n", argv0); fprintf(stderr, "Options:\n"); fprintf(stderr, " -D - Enable debug\n"); fprintf(stderr, " -o - Print pressed keys to standard output\n"); fprintf(stderr, " -O - Print intersected keys to standard output\n"); - fprintf(stderr, " -l - Comma separated list of layers\n"); fprintf(stderr, " -H [int] - Height in pixels\n"); fprintf(stderr, " -L [int] - Landscape height in pixels\n"); fprintf(stderr, " --fn [font] - Set font (e.g: DejaVu Sans 20)\n"); @@ -396,14 +394,11 @@ show(int sigint) { int main(int argc, char **argv) { /* parse command line arguments */ - char *layer_names_list = NULL; const char *fc_font_pattern = NULL; height = normal_height = KBD_PIXEL_HEIGHT; landscape_height = KBD_PIXEL_LANDSCAPE_HEIGHT; char *tmp; - if ((tmp = getenv("WVKBD_LAYERS"))) - layer_names_list = estrdup(tmp); if ((tmp = getenv("WVKBD_HEIGHT"))) normal_height = atoi(tmp); if ((tmp = getenv("WVKBD_LANDSCAPE_HEIGHT"))) @@ -432,9 +427,6 @@ main(int argc, char **argv) { usage(argv[0]); exit(1); } - if (layer_names_list) - free(layer_names_list); - layer_names_list = estrdup(argv[++i]); } else if (!strcmp(argv[i], "-H")) { if (i >= argc - 1) { usage(argv[0]); @@ -491,7 +483,7 @@ main(int argc, char **argv) { die("layer_shell not available\n"); } - kbd_init(&keyboard, (struct layout *)&layouts, layer_names_list); + kbd_init(&keyboard, (struct layout *)&layouts); draw_ctx.font_description = pango_font_description_from_string(fc_font_pattern); |