blob: d7b34004cb429381458650656b4cfab0e4af1bc6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#ifndef KEYBOARD_H
#define KEYBOARD_H
#include <stdint.h>
#include <stdbool.h>
#define KB_INPUT_MAX 64
#define KB_KEY_W 28
#define KB_KEY_H 36
#define KB_KEY_GAP 2
#define KB_ROW_COUNT 4
#define KB_START_Y 310
typedef enum {
KB_ALPHA_LOWER,
KB_ALPHA_UPPER,
KB_NUMSYM
} kb_layer_t;
typedef enum {
KB_ACTION_NONE = 0,
KB_ACTION_CHAR,
KB_ACTION_SHIFT,
KB_ACTION_BACKSPACE,
KB_ACTION_DONE,
KB_ACTION_LAYER,
KB_ACTION_SPACE
} kb_action_t;
typedef struct {
kb_action_t action;
char ch;
} kb_result_t;
typedef struct {
char input[KB_INPUT_MAX + 1];
int cursor;
bool reveal;
kb_layer_t layer;
} kb_state_t;
void kb_state_init(kb_state_t *st);
int kb_get_row_keys(int row, kb_layer_t layer, const char **keys_out);
kb_result_t kb_hit_test(int tx, int ty, kb_layer_t layer);
void kb_apply(kb_state_t *st, kb_result_t result);
#endif
|