suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
-rw-r--r--keyboard.c8
-rw-r--r--keyboard.h14
2 files changed, 5 insertions, 17 deletions
diff --git a/keyboard.c b/keyboard.c
index ee50827..a964c34 100644
--- a/keyboard.c
+++ b/keyboard.c
@@ -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);
diff --git a/keyboard.h b/keyboard.h
index af3e2b1..520ca05 100644
--- a/keyboard.h
+++ b/keyboard.h
@@ -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