upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/main/keyboard.h
diff options
context:
space:
mode:
Diffstat (limited to 'main/keyboard.h')
-rw-r--r--main/keyboard.h26
1 files changed, 16 insertions, 10 deletions
diff --git a/main/keyboard.h b/main/keyboard.h
index 495c499..9c4118f 100644
--- a/main/keyboard.h
+++ b/main/keyboard.h
@@ -5,11 +5,6 @@
5#include <stdbool.h> 5#include <stdbool.h>
6 6
7#define KB_INPUT_MAX 64 7#define KB_INPUT_MAX 64
8#define KB_KEY_W 28
9#define KB_KEY_H 36
10#define KB_KEY_GAP 2
11#define KB_ROW_COUNT 4
12#define KB_START_Y 70
13 8
14typedef enum { 9typedef enum {
15 KB_ALPHA_LOWER, 10 KB_ALPHA_LOWER,
@@ -28,18 +23,29 @@ typedef enum {
28} kb_action_t; 23} kb_action_t;
29 24
30typedef struct { 25typedef struct {
31 kb_action_t action;
32 char ch;
33} kb_result_t;
34
35typedef struct {
36 char input[KB_INPUT_MAX + 1]; 26 char input[KB_INPUT_MAX + 1];
37 int cursor; 27 int cursor;
38 bool reveal; 28 bool reveal;
39 kb_layer_t layer; 29 kb_layer_t layer;
40} kb_state_t; 30} kb_state_t;
41 31
32typedef struct {
33 kb_action_t action;
34 char ch;
35} kb_result_t;
36
37typedef struct {
38 int key_w;
39 int key_h;
40 int key_gap;
41 int start_y;
42 int screen_w;
43 int row_count;
44} kb_layout_t;
45
42void kb_state_init(kb_state_t *st); 46void kb_state_init(kb_state_t *st);
47void kb_set_layout(const kb_layout_t *layout);
48const kb_layout_t *kb_get_layout(void);
43int kb_get_row_keys(int row, kb_layer_t layer, const char **keys_out); 49int kb_get_row_keys(int row, kb_layer_t layer, const char **keys_out);
44kb_result_t kb_hit_test(int tx, int ty, kb_layer_t layer); 50kb_result_t kb_hit_test(int tx, int ty, kb_layer_t layer);
45void kb_apply(kb_state_t *st, kb_result_t result); 51void kb_apply(kb_state_t *st, kb_result_t result);