diff options
author | Pete Johanson <peter@peterjohanson.com> | 2020-06-25 14:39:08 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-25 14:39:08 -0400 |
commit | c457d9880d31bf638272495be1891adf172bcaee (patch) | |
tree | 51d57bfea704c616ef9357bfba9bffcaf113d062 /app/src/matrix_transform.c | |
parent | b1cab32c66d19d453b89fcec6f4211367e45827a (diff) | |
parent | f2f9d4502122a332aa6f35ac87d9f6b5e3ff7335 (diff) |
Merge pull request #32 from petejohanson/core/refactor-keymap-to-behaviors
Refactor keymap to behaviors
Diffstat (limited to 'app/src/matrix_transform.c')
-rw-r--r-- | app/src/matrix_transform.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/src/matrix_transform.c b/app/src/matrix_transform.c new file mode 100644 index 0000000..7e8b481 --- /dev/null +++ b/app/src/matrix_transform.c @@ -0,0 +1,30 @@ + +#include <zephyr.h> +#include <zmk/matrix_transform.h> +#include <zmk/matrix.h> +#include <dt-bindings/zmk/matrix-transform.h> + +#define HAS_TRANSFORM DT_HAS_CHOSEN(zmk_matrix_transform) + +#if HAS_TRANSFORM +#define ZMK_KEYMAP_TRANSFORM_NODE DT_CHOSEN(zmk_matrix_transform) +#define ZMK_KEYMAP_LEN DT_PROP_LEN(ZMK_KEYMAP_TRANSFORM_NODE, map) + +#define _TRANSFORM_ENTRY(i, _) \ + [(KT_ROW(DT_PROP_BY_IDX(ZMK_KEYMAP_TRANSFORM_NODE, map, i)) * ZMK_MATRIX_COLS) + KT_COL(DT_PROP_BY_IDX(ZMK_KEYMAP_TRANSFORM_NODE, map, i))] = i, + +static u32_t transform[] = + { UTIL_LISTIFY(ZMK_KEYMAP_LEN, _TRANSFORM_ENTRY, 0) }; + +#endif + +u32_t zmk_matrix_transform_row_column_to_position(u32_t row, u32_t column) +{ + u32_t matrix_index = (row * ZMK_MATRIX_COLS) + column; + +#if HAS_TRANSFORM + return transform[matrix_index]; +#else + return matrix_index; +#endif /* HAS_TRANSFORM */ +}; |