From 8a5517352c460bf7f1f691c63734b51d24f1ad0c Mon Sep 17 00:00:00 2001 From: Aleksandr Lebedev Date: Sun, 1 Mar 2026 22:08:14 +0100 Subject: [PATCH] Moonlander firmware + helper scripts --- moonlander/bin/moonlander-flash.sh | 7 + moonlander/bin/oryx-download.sh | 13 ++ moonlander/bin/oryx-flash.sh | 3 + .../zsa/moonlander/keymaps/main/config.h | 9 + .../zsa/moonlander/keymaps/main/i18n.h | 10 + .../zsa/moonlander/keymaps/main/keymap.c | 171 ++++++++++++++++++ .../zsa/moonlander/keymaps/main/keymap.json | 7 + .../zsa/moonlander/keymaps/main/rules.mk | 7 + 8 files changed, 227 insertions(+) create mode 100755 moonlander/bin/moonlander-flash.sh create mode 100755 moonlander/bin/oryx-download.sh create mode 100755 moonlander/bin/oryx-flash.sh create mode 100644 moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h create mode 100644 moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/i18n.h create mode 100644 moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c create mode 100644 moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json create mode 100644 moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk diff --git a/moonlander/bin/moonlander-flash.sh b/moonlander/bin/moonlander-flash.sh new file mode 100755 index 0000000..523bf5e --- /dev/null +++ b/moonlander/bin/moonlander-flash.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh +OLDPATH=$PATH +export PATH="$HOME/.local/bin:$OLDPATH" +qmk compile -kb zsa/moonlander/revb -km main +qmk flash -kb zsa/moonlander/revb -km main +export PATH=$OLDPATH +unset OLDPATH diff --git a/moonlander/bin/oryx-download.sh b/moonlander/bin/oryx-download.sh new file mode 100755 index 0000000..2c3ab84 --- /dev/null +++ b/moonlander/bin/oryx-download.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + +URL=$1 + +mkdir -p /tmp/flash +pushd /tmp/flash +curl $URL -o firmware.zip +unzip ./firmware.zip +pushd ./zsa_moonlander_office-qwerty-german-developer-c_source +cp -f ./* ~/dotfiles/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/ +popd +popd +rm -rf /tmp/flash diff --git a/moonlander/bin/oryx-flash.sh b/moonlander/bin/oryx-flash.sh new file mode 100755 index 0000000..0359d19 --- /dev/null +++ b/moonlander/bin/oryx-flash.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +URL=$1 +oryx-download.sh $URL && moonlander-flash.sh diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h new file mode 100644 index 0000000..22827a5 --- /dev/null +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h @@ -0,0 +1,9 @@ +#undef RGB_MATRIX_TIMEOUT +#define RGB_MATRIX_TIMEOUT 300000 + +#define USB_SUSPEND_WAKEUP_DELAY 0 +#define SERIAL_NUMBER "Kqb5l/MaB6VN" +#define LAYER_STATE_8BIT + +#define RGB_MATRIX_STARTUP_SPD 60 + diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/i18n.h b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/i18n.h new file mode 100644 index 0000000..13864e0 --- /dev/null +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/i18n.h @@ -0,0 +1,10 @@ +#define US_DEG S(ALGR(KC_SCLN)) +#define US_SUP2 ALGR(KC_2) +#define US_SUP3 ALGR(KC_3) +#define US_EURO ALGR(KC_5) +#define US_ADIA ALGR(KC_Q) +#define US_SS ALGR(KC_S) +#define US_UDIA ALGR(KC_Y) +#define US_ODIA ALGR(KC_P) +#define US_MICR ALGR(KC_M) +#define US_TILD S(KC_GRV) diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c new file mode 100644 index 0000000..0e24f87 --- /dev/null +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c @@ -0,0 +1,171 @@ +#include QMK_KEYBOARD_H +#include "version.h" +#define MOON_LED_LEVEL LED_LEVEL +#ifndef ZSA_SAFE_RANGE +#define ZSA_SAFE_RANGE SAFE_RANGE +#endif + +enum custom_keycodes { + RGB_SLD = ZSA_SAFE_RANGE, +}; + + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_moonlander( + LSFT(KC_LEFT_ALT),KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RIGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_LEFT_ALT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(3), MEH_T(KC_TAB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, TG(2), KC_GRAVE, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLASH, KC_EQUAL, KC_UP, TG(1), + KC_LEFT_CTRL, TG(4), KC_LEFT_ALT, KC_COMMA, KC_DOT, KC_LEFT_GUI, MT(MOD_LCTL, KC_ESCAPE),KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, + MT(MOD_LGUI, KC_SPACE),KC_BSPC, KC_DELETE, MT(MOD_RALT, KC_TAB),KC_ENTER, ALL_T(KC_SPACE) + ), + [1] = LAYOUT_moonlander( + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_INSERT, KC_PAGE_UP, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LPRN, KC_RPRN, KC_HOME, KC_PGDN, KC_END, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [2] = LAYOUT_moonlander( + KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_TRANSPARENT, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_TRANSPARENT, KC_TRANSPARENT, KC_DOWN, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRANSPARENT, + KC_TRANSPARENT, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RGB_MODE_FORWARD, RGB_TOG, KC_0, KC_0, KC_DOT, KC_EQUAL, KC_TRANSPARENT, + RGB_VAD, RGB_VAI, TOGGLE_LAYER_COLOR, RGB_SLD, RGB_HUD, RGB_HUI + ), + [3] = LAYOUT_moonlander( + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_ON, KC_TRANSPARENT, DM_REC1, DM_REC2, DM_RSTP, KC_TRANSPARENT, QK_BOOT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_OFF, KC_TRANSPARENT, DM_PLY1, DM_PLY2, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_UP,KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN1, KC_MS_BTN2, KC_MS_JIGGLER_TOGGLE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN,KC_RIGHT_CTRL, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [4] = LAYOUT_moonlander( + KC_ESCAPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LEFT_CTRL, KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LEFT_SHIFT, KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LEFT_CTRL, KC_TRANSPARENT, KC_LEFT_ALT, KC_TRANSPARENT, KC_B, KC_ENTER, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_SPACE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), +}; + + + + + +extern rgb_config_t rgb_matrix_config; + +RGB hsv_to_rgb_with_value(HSV hsv) { + RGB rgb = hsv_to_rgb( hsv ); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + return (RGB){ f * rgb.r, f * rgb.g, f * rgb.b }; +} + +void keyboard_post_init_user(void) { + rgb_matrix_enable(); +} + +const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = { + [0] = { {173,205,220}, {131,81,242}, {131,81,242}, {131,81,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {180,255,233}, {14,222,242}, {131,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,255,255}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} }, + + [1] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [3] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {74,255,255}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {41,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,255,255}, {74,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,255,255}, {74,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {210,218,204}, {210,218,204}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [4] = { {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {0,0,0}, {0,245,245}, {0,245,245}, {0,245,245}, {87,218,204}, {0,0,0}, {0,0,0}, {87,218,204}, {0,0,0}, {0,245,245}, {0,0,0}, {87,218,204}, {87,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {87,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {44,233,244}, {0,0,0}, {0,0,0} }, + +}; + +void set_layer_color(int layer) { + for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + if (!hsv.h && !hsv.s && !hsv.v) { + rgb_matrix_set_color( i, 0, 0, 0 ); + } else { + RGB rgb = hsv_to_rgb_with_value(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + } +} + +bool rgb_matrix_indicators_user(void) { + if (rawhid_state.rgb_control) { + return false; + } + if (!keyboard_config.disable_layer_led) { + switch (biton32(layer_state)) { + case 0: + set_layer_color(0); + break; + case 1: + set_layer_color(1); + break; + case 2: + set_layer_color(2); + break; + case 3: + set_layer_color(3); + break; + case 4: + set_layer_color(4); + break; + default: + if (rgb_matrix_get_flags() == LED_FLAG_NONE) { + rgb_matrix_set_color_all(0, 0, 0); + } + } + } else { + if (rgb_matrix_get_flags() == LED_FLAG_NONE) { + rgb_matrix_set_color_all(0, 0, 0); + } + } + + return true; +} + + + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QK_MODS ... QK_MODS_MAX: + // Mouse and consumer keys (volume, media) with modifiers work inconsistently across operating systems, + // this makes sure that modifiers are always applied to the key that was pressed. + if (IS_MOUSE_KEYCODE(QK_MODS_GET_BASIC_KEYCODE(keycode)) || IS_CONSUMER_KEYCODE(QK_MODS_GET_BASIC_KEYCODE(keycode))) { + if (record->event.pressed) { + add_mods(QK_MODS_GET_MODS(keycode)); + send_keyboard_report(); + wait_ms(2); + register_code(QK_MODS_GET_BASIC_KEYCODE(keycode)); + return false; + } else { + wait_ms(2); + del_mods(QK_MODS_GET_MODS(keycode)); + } + } + break; + + case RGB_SLD: + if (rawhid_state.rgb_control) { + return false; + } + if (record->event.pressed) { + rgblight_mode(1); + } + return false; + } + return true; +} + diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json new file mode 100644 index 0000000..884fca9 --- /dev/null +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json @@ -0,0 +1,7 @@ +{ + "modules": [ + "zsa/oryx", + "zsa/mousejiggler", + "zsa/defaults" + ] +} diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk new file mode 100644 index 0000000..e354f0d --- /dev/null +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk @@ -0,0 +1,7 @@ +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +AUDIO_ENABLE = no +ORYX_ENABLE = yes +RGB_MATRIX_CUSTOM_KB = yes +DYNAMIC_MACRO_ENABLE = yes +SPACE_CADET_ENABLE = no