suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
Diffstat (limited to 'keyboard.c')
-rw-r--r--keyboard.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/keyboard.c b/keyboard.c
index 879704c..373abcb 100644
--- a/keyboard.c
+++ b/keyboard.c
@@ -97,7 +97,14 @@ void kbd_init(struct kbd *kb, struct layout * layouts, char * layer_names_list)
}
fprintf(stderr, "Found %d layers\n",i);
- kb->layout = &kb->layouts[kb->layers[kb->layer_index]];
+ enum layout_id layer;
+ if (kb->landscape) {
+ layer = kb->landscape_layers[kb->layer_index];
+ } else {
+ layer = kb->layers[kb->layer_index];
+ }
+
+ kb->layout = &kb->layouts[layer];
kb->prevlayout = kb->layout;
/* upload keymap */
@@ -236,10 +243,21 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) {
case NextLayer:
//switch to the next layout in the layer sequence
kb->layer_index++;
- if (kb->layers[kb->layer_index] == NumLayouts) {
+ enum layout_id layer;
+ if (kb->landscape) {
+ layer = kb->landscape_layers[kb->layer_index];
+ } else {
+ layer = kb->layers[kb->layer_index];
+ }
+ if (layer == NumLayouts) {
kb->layer_index = 0;
+ if (kb->landscape) {
+ layer = kb->landscape_layers[kb->layer_index];
+ } else {
+ layer = kb->layers[kb->layer_index];
+ }
}
- kbd_switch_layout(kb, &kb->layouts[kb->layers[kb->layer_index]]);
+ kbd_switch_layout(kb, &kb->layouts[layer]);
break;
case BackLayer:
//switch to the previously active layout