about summary refs log tree commit diff
path: root/keyboard.c
diff options
context:
space:
mode:
authorStacy Harper <contact@stacyharper.net>2021-08-26 19:20:20 +0200
committerJohn Sullivan <jsullivan@csumb.edu>2021-10-19 23:12:01 -0700
commit4648092db1c169d9e62bb6a0c577ab99434652e7 (patch)
tree07db2c44384c4e725f9382d4b043a21c73f4f4dd /keyboard.c
parent24a9bdc214127281915bbee4df2750adeb21f46a (diff)
downloadsuggpicker-4648092db1c169d9e62bb6a0c577ab99434652e7.tar.gz
Add landscape layers
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