suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
| -rw-r--r-- | keyboard.c | 89 | ||||
| -rw-r--r-- | keyboard.h | 2 | ||||
| -rw-r--r-- | main.c | 8 |
3 files changed, 12 insertions, 87 deletions
@@ -145,61 +145,26 @@ kbd_unpress_key(struct kbd *kb, uint32_t time) { void kbd_release_key(struct kbd *kb, uint32_t time) { kbd_unpress_key(kb, time); - if (kb->print_intersect && kb->last_swipe) { - printf("\n"); - // Important so autocompleted words get typed in time - fflush(stdout); - kbd_draw_layout(kb); - kb->last_swipe = NULL; - } + printf("\n"); + // Important so autocompleted words get typed in time + fflush(stdout); + kbd_draw_layout(kb); } void kbd_motion_key(struct kbd *kb, uint32_t time, uint32_t x, uint32_t y) { - // Output intersecting keys - // (for external 'swiping'-based accelerators). - if (kb->print_intersect) { - if (kb->last_press) { - kbd_unpress_key(kb, time); - // Redraw last press as a swipe. - kbd_draw_key(kb, kb->last_swipe, Swipe); - } - struct key *intersect_key; - intersect_key = kbd_get_key(kb, x, y); - if (intersect_key && - (!kb->last_swipe || intersect_key->label != kb->last_swipe->label)) { - kbd_print_key_stdout(kb, intersect_key); - kb->last_swipe = intersect_key; - kbd_draw_key(kb, kb->last_swipe, Swipe); - } - } else { - kbd_unpress_key(kb, time); - } + } void kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) { - if ((kb->compose == 1) && (k->type != Compose) && (k->type != Mod) && - (k->layout)) { - kb->compose++; - if (kb->debug) - fprintf(stderr, "showing compose %d\n", kb->compose); - kbd_switch_layout(kb, k->layout); - return; - } + switch (k->type) { case Code: - - kb->last_swipe = kb->last_press = k; + kb->last_press = k; kbd_draw_key(kb, k, Press); - if (kb->print || kb->print_intersect) - kbd_print_key_stdout(kb, k); - if (kb->compose) { - if (kb->debug) - fprintf(stderr, "pressing composed key\n"); - kb->compose++; - } + kbd_print_key_stdout(kb, k); break; default: break; @@ -208,47 +173,15 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) { void kbd_print_key_stdout(struct kbd *kb, struct key *k) { - /* printed keys may slightly differ from the actual output - * we generally print what is on the key LABEL and only support the normal - * and shift layers. Other modifiers produce no output (Ctrl,Alt) - * */ - - bool handled = true; - if (k->type == Code) { - switch (k->code) { - case KEY_SPACE: - printf(" "); - break; - case KEY_ENTER: - printf("\n"); - break; - case KEY_BACKSPACE: - printf("\b"); - break; - case KEY_TAB: - printf("\t"); - break; - default: - handled = false; - break; - } - } else if (k->type != Copy) { - return; - } - - if (!handled) { - if ((kb->mods & Shift) || (kb->mods & CapsLock)) - printf("%s", k->shift_label); - else if (!(kb->mods & Ctrl) && !(kb->mods & Alt) && !(kb->mods & Super)) - printf("%s", k->label); - } + /* 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 = (kb->mods & Shift) ? k->shift_label : k->label; + const char *label = k->label; if (kb->debug) fprintf(stderr, "Draw key +%d+%d %dx%d -> %s\n", k->x, k->y, k->w, k->h, label); @@ -91,8 +91,6 @@ struct kbd { struct clr_scheme scheme; struct clr_scheme scheme1; - bool print; - bool print_intersect; uint32_t w, h, s; bool landscape; uint8_t mods; @@ -337,12 +337,10 @@ 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]\n", + "usage: %s [-hv] [-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, " -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"); @@ -443,10 +441,6 @@ main(int argc, char **argv) { keyboard.debug = true; } else if ((!strcmp(argv[i], "-fn")) || (!strcmp(argv[i], "--fn"))) { fc_font_pattern = estrdup(argv[++i]); - } else if (!strcmp(argv[i], "-o")) { - keyboard.print = true; - } else if (!strcmp(argv[i], "-O")) { - keyboard.print_intersect = true; } else if ((!strcmp(argv[i], "-hidden")) || (!strcmp(argv[i], "--hidden"))) { starthidden = true; |