aboutsummaryrefslogtreecommitdiffstats
path: root/src/keymat.h
blob: 9def47b5c39ae4e702b7e0da8f70b8cf1358bee4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

#include "util.h"

#include <stdint.h>

#define KEY_ROWS_HALF 4
#define KEY_ROWS (KEY_ROWS_HALF * 2)
#define KEY_COLS 6
#define KEY_COUNT (KEY_ROWS * KEY_COLS)

#define KEYMAT_HALF(keymat, side) ((side) == LEFT ? &(keymat)[0] : &(keymat)[KEY_ROWS_HALF])

void keymat_init(void);
bool keymat_scan(void);
uint32_t keymat_encode_half(int side);
void keymat_decode_half(int side, uint32_t mask);

void keymat_debug(void);

extern bool keymat_prev[KEY_ROWS][KEY_COLS];
extern bool keymat[KEY_ROWS][KEY_COLS];