From 1751470785a110729afc01f3947b406bc40ceb43 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 15 Jun 2020 17:03:34 -0400 Subject: Initial work on keymap transforms for non-standard matrixes. * Allows "gaps" for keyboards like Kyra. * Allows keyboards with matrixes that don't map the logical key locations to have normal looking keymaps when defined. --- .../shields/kyria/keymaps/default/include/keymap.h | 5 +++ app/boards/shields/kyria/keymaps/default/keymap.c | 34 +++++++++++++++ .../shields/kyria/keymaps/default/keymap.overlay | 50 ++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 app/boards/shields/kyria/keymaps/default/include/keymap.h create mode 100644 app/boards/shields/kyria/keymaps/default/keymap.c create mode 100644 app/boards/shields/kyria/keymaps/default/keymap.overlay (limited to 'app/boards/shields/kyria/keymaps/default') diff --git a/app/boards/shields/kyria/keymaps/default/include/keymap.h b/app/boards/shields/kyria/keymaps/default/include/keymap.h new file mode 100644 index 0000000..01cd9e5 --- /dev/null +++ b/app/boards/shields/kyria/keymaps/default/include/keymap.h @@ -0,0 +1,5 @@ + +#include + +#define CC_RAIS ZC_CSTM(1) +#define CC_LOWR ZC_CSTM(2) \ No newline at end of file diff --git a/app/boards/shields/kyria/keymaps/default/keymap.c b/app/boards/shields/kyria/keymaps/default/keymap.c new file mode 100644 index 0000000..067cd08 --- /dev/null +++ b/app/boards/shields/kyria/keymaps/default/keymap.c @@ -0,0 +1,34 @@ + +#include +#include +#include + +bool zmk_handle_key_user(struct zmk_key_event *key_event) +{ + switch (key_event->key) + { + case CC_LOWR: + if (key_event->pressed) + { + zmk_keymap_layer_activate(1); + } + else + { + zmk_keymap_layer_deactivate(1); + } + + return false; + case CC_RAIS: + if (key_event->pressed) + { + zmk_keymap_layer_activate(2); + } + else + { + zmk_keymap_layer_deactivate(2); + } + return false; + } + + return true; +}; diff --git a/app/boards/shields/kyria/keymaps/default/keymap.overlay b/app/boards/shields/kyria/keymaps/default/keymap.overlay new file mode 100644 index 0000000..62c842d --- /dev/null +++ b/app/boards/shields/kyria/keymaps/default/keymap.overlay @@ -0,0 +1,50 @@ +#include +#include +#include + +/ { + chosen { + zmk,keymap = &keymap0; + }; + + keymap0: keymap { + compatible = "zmk,keymap"; + label ="Default Kyria Keymap"; + layers = <&default>; + transform = <&default_transform>; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,keymap-transform"; + map = < + IDENTITY_ROW(0, 6) OFFSET_ROW(6, 0, 6) + IDENTITY_ROW(1, 6) OFFSET_ROW(6, 1, 6) + IDENTITY_ROW(2, 8) OFFSET_ROW(8, 2, 8) + OFFSET_ROW(3, 3, 5) OFFSET_ROW(8, 3, 5) + >; + }; + + five_column_transform: keymap_transform_1 { + compatible = "zmk,keymap-transform"; + map = < + IDENTITY_ROW(0, 5) OFFSET_ROW(5, 0, 5) + IDENTITY_ROW(1, 5) OFFSET_ROW(6, 1, 5) + IDENTITY_ROW(2, 7) OFFSET_ROW(7, 2, 7) + OFFSET_ROW(2, 3, 5) OFFSET_ROW(7, 3, 5) + >; + }; + + layers { + compatible = "zmk,layers"; + + default: layer_0 { + label = "DEFAULT"; + keys = < + KC_ESC KC_Q KC_W KC_E KC_R KC_T KC_Y KC_U KC_I KC_O KC_P KC_PIPE + KC_BKSP KC_A KC_S KC_D KC_F KC_G KC_H KC_J KC_K KC_L KC_SCLN KC_QUOT + KC_LSFT KC_Z KC_X KC_C KC_V KC_B KC_LSFT KC_LSFT KC_LSFT KC_LSFT KC_N KC_M KC_CMMA KC_DOT KC_BSLH KC_MIN + KC_LGUI KC_DEL KC_RET KC_SPC KC_ESC KC_RET KC_SPC KC_TAB KC_BKSP KC_RALT + >; + }; + }; +}; -- cgit v1.2.3