about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rw-r--r--config.h5
-rw-r--r--keyboard.c40
-rw-r--r--keyboard.h22
-rw-r--r--main.c14
5 files changed, 23 insertions, 61 deletions
diff --git a/README.md b/README.md
index 8a66e80..fae9f67 100644
--- a/README.md
+++ b/README.md
@@ -19,9 +19,6 @@ You'll need the following developer packages
 
 Make any customizations you would like in `config.def.h` and run `make`
 
-The default set of layouts is called `mobintl` *(mobile international)*, which groups various layouts aimed at mobile devices
-and also attempts to accommodate various international users. The resulting binary is called `wvkbd-mobintl`.
-
 ## Usage
 
 The keyboard can be hidden by sending it a `SIGUSR1` signal and shown again by sending it `SIGUSR2`. This saves some
diff --git a/config.h b/config.h
index ce6d16f..bdb8dc7 100644
--- a/config.h
+++ b/config.h
@@ -12,9 +12,4 @@ struct clr_scheme scheme = {
   .text = {.color = UINT32_MAX},
 };
 
-/* layers is an ordered list of layouts, used to cycle through */
-static enum layout_id layers[] = {
-  Full, // First layout is the default layout on startup
-};
-
 #endif // config_def_h_INCLUDED
diff --git a/keyboard.c b/keyboard.c
index 00a568b..540f6c9 100644
--- a/keyboard.c
+++ b/keyboard.c
@@ -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);
 }
 
diff --git a/keyboard.h b/keyboard.h
index 876172d..f09003d 100644
--- a/keyboard.h
+++ b/keyboard.h
@@ -7,7 +7,6 @@
 
 struct clr_scheme;
 struct key;
-struct layout;
 struct kbd;
 
 enum key_draw_type {
@@ -26,24 +25,14 @@ struct clr_scheme {
 
 struct key {
 	const char *label;       // primary label
-
-	struct layout *layout;   // pointer back to the parent layout that holds this
-	                         // key
-
 	// actual coordinates on the surface (pixels), will be computed automatically
 	// for all keys
 	uint32_t x, y, w, h;
 };
 
-struct layout {
-	struct key *keys;
-	uint32_t keyheight; // absolute height (pixels)
-};
-
 struct kbd {
 	bool debug;
 
-	struct layout *layout;
 	struct clr_scheme scheme;
 
 	uint32_t w, h, s;
@@ -51,10 +40,8 @@ struct kbd {
 	uint8_t mods;
 	uint8_t compose;
 	struct key *last_press;
-	size_t layer_index;
 
-	struct layout *layouts;
-	enum layout_id *layers;
+	struct key suggs[64];
 
 	struct drwsurf *surf;
 };
@@ -64,17 +51,16 @@ 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);
-void kbd_init_layout(struct layout *l, uint32_t width, uint32_t height);
+void kbd_init(struct kbd *kb);
+void kbd_init_suggs(struct key *suggs, 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);
 void kbd_release_key(struct kbd *kb, uint32_t time);
 void kbd_motion_key(struct kbd *kb, uint32_t time, uint32_t x, uint32_t y);
 void kbd_press_key(struct kbd *kb, struct key *k, uint32_t time);
-void kbd_print_key_stdout(struct kbd *kb, struct key *k);
 void kbd_draw_key(struct kbd *kb, struct key *k, enum key_draw_type);
 void kbd_draw_layout(struct kbd *kb);
-void kbd_resize(struct kbd *kb, struct layout *layouts);
+void kbd_resize(struct kbd *kb);
 double kbd_get_row_length(struct key *k);
 
 #ifndef LAYOUT
diff --git a/main.c b/main.c
index f1cb6ad..ca922ff 100644
--- a/main.c
+++ b/main.c
@@ -258,11 +258,6 @@ display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y,
 		return; // no changes
 	}
 
-	enum layout_id layer;
-	layer = keyboard.layers[0];
-
-	keyboard.layout = &keyboard.layouts[layer];
-
 	zwlr_layer_surface_v1_set_size(layer_surface, 0, height);
 	zwlr_layer_surface_v1_set_exclusive_zone(layer_surface, height);
 	wl_surface_commit(draw_surf.surf);
@@ -317,7 +312,7 @@ layer_surface_configure(void *data, struct zwlr_layer_surface_v1 *surface,
                         uint32_t serial, uint32_t w, uint32_t h) {
 	keyboard.w = w + KBD_PIXEL_OVERSCAN_WIDTH;
 	keyboard.h = h;
-	kbd_resize(&keyboard, layouts);
+	kbd_resize(&keyboard);
 
 	zwlr_layer_surface_v1_ack_configure(surface, serial);
 }
@@ -390,7 +385,8 @@ handle_input(FILE *fd) {
 	line = malloc(1024);
 
 	if (fgets(line, 1024, fd) != NULL) {
-		printf("Retrieved line: %s\n", line);
+		fprintf(stderr, "Retrieved line: %s", line);
+		
 	}
 
 	free(line);
@@ -410,9 +406,7 @@ main(int argc, char **argv) {
 		landscape_height = atoi(tmp);
 
 	/* keyboard settings */
-	keyboard.layers = (enum layout_id *)&layers;
 	keyboard.scheme = scheme;
-	keyboard.layer_index = 0;
 
 	bool starthidden = false;
 
@@ -481,7 +475,7 @@ main(int argc, char **argv) {
 		die("layer_shell not available\n");
 	}
 
-	kbd_init(&keyboard, (struct layout *)&layouts);
+	kbd_init(&keyboard);
 
 	draw_ctx.font_description =
 	  pango_font_description_from_string(fc_font_pattern);