diff --git a/keyboards/framework/macropad/keymaps/default/keymap.c b/keyboards/framework/macropad/keymaps/default/keymap.c index fff852a9e5..ecef137f0e 100644 --- a/keyboards/framework/macropad/keymaps/default/keymap.c +++ b/keyboards/framework/macropad/keymaps/default/keymap.c @@ -6,58 +6,58 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * ┌───────┬───────┬───────┬───────┐ - * 4 keys │ RGB │RGB Nxt│ RGB + │ Sleep │ - * │Toggle │Effect │Brightn│ │ - * ├───────┼───────┼───────┼───────┤ - * 4 keys │Numpad │RGB Prv│ RGB - │ RGB BL│ - * │Layer │Effect │Brightn│ Step │ - * ├───────┼───────┼───────┼───────┤ - * 4 keys │ RGB + │ RGB + │ RGB + │ <-- │ - * │ Hue │ Sat │ Speed │ │ - * ├───────┼───────┼───────┼───────┤ - * 4 keys │ RGB - │ RGB - │ RGB - │ Enter │ - * │ Hue │ Sat │ Speed │ │ - * ├───────┼───────┼───────┼───────┤ - * 4 keys │ │ Up │ │ │ - * │ │ │ │ │ - * ├───────┼───────┼───────┼───────┤ - * 4 keys │ Left │ Down │ Right │ │ - * │ │ │ │ │ - * └───────┴───────┴───────┴───────┘ - * 24 total - */ - [0] = LAYOUT( - RGB_TOG, RGB_MOD, RGB_VAI, KC_SLEP, - TG(1), RGB_RMOD,RGB_VAD, BL_STEP, - RGB_HUI, RGB_SAI, RGB_SPI, KC_BSPC, - RGB_HUD, RGB_SAD, RGB_SPD, KC_ENT, - XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, - KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX - ), - /* Numpad * ┌────┬────┬────┬────┐ * 4 keys │Esc │Calc│ = │ <- │ * ├────┼────┼────┼────┤ - * 4 keys │ │ / │ * │ - │ + * 4 keys │ Num│ / │ * │ - │ * ├────┼────┼────┼────┤ - * 4 keys │ 7 │ 8 │ 9 │ + │ + * 3 keys │ 7 │ 8 │ 9 │ + │ * ├────┼────┼────┼────┤ * 4 keys │ 4 │ 5 │ 6 │ + │ * ├────┼────┼────┼────┤ - * 4 keys │ 1 │ 2 │ 3 │Entr│ + * 3 keys │ 1 │ 2 │ 3 │Entr│ * ├────┼────┼────┼────┤ - * 4 keys │ 0 │ 0 │ . │Entr│ - * └────┴────┴────┴────┘ - * 24 total + * 3 keys │ 0 │ 0 │ . │Entr│ + * └────┴────┴────┴────┴ + * 21 total */ - [1] = LAYOUT( + [_NUMLOCK] = LAYOUT( KC_ESC, KC_CALC, KC_EQL, KC_BSPC, - _______, KC_PSLS, KC_PAST, KC_PMNS, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_P1, KC_P2, KC_P3, KC_PENT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + /* + * ┌───────┬───────┬───────┬───────┐ + * 4 keys │ RGB │ RGB + │ RGB + │ RGB + │ + * │Toggle │ Speed │ Hue │ Sat │ + * ├───────┼───────┼───────┼───────┤ + * 4 keys │Numlock│ RGB - │ RGB - │ RGB - │ + * │ │ Speed │ Hue │ Sat │ + * ├───────┼───────┼───────┼───────┤ + * 4 keys │ Home │ ↑ │ Page │RGB Nxt│ + * │ │ │ Up │Effect │ + * ├───────┼───────┼───────┼───────┤ + * 4 keys │ ← │ │ → │RGB Prv│ + * │ │ │ │Effect │ + * ├───────┼───────┼───────┼───────┤ + * 4 keys │ End │ ↓ │ Page │ BL │ + * │ │ │ Down │ Step │ + * ├───────┼───────┼───────┼───────┤ + * 4 keys │ Insert│ Insert│ Delete│ BL │ + * │ │ │ │ Step │ + * └───────┴───────┴───────┴───────┘ + * 24 total + */ + [_FN] = LAYOUT( + RGB_TOG, RGB_SPI, RGB_HUI, RGB_SAI, + _______, RGB_SPD, RGB_HUD, RGB_SAD, + _______, _______, _______, RGB_MOD, + _______, _______, _______, RGB_RMOD, + _______, _______, _______, BL_STEP, + _______, _______, _______, BL_STEP ), /* Alphabet * ┌────┬────┬────┬────┐ @@ -75,19 +75,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────┘ * 24 total */ - [2] = LAYOUT( + [_FACTORY] = LAYOUT( KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, KC_X - ) + ), }; +bool led_update_user(led_t led_state) { + // Change layer if numlock state changes, either triggered by OS or + // by numlock key on this keyboard + if (led_state.num_lock) { + layer_off(_FN); + } else { + layer_on(_FN); + } + return true; +} + void enable_factory_mode(bool enable) { if (enable) - layer_on(2); + layer_on(_FACTORY); else - layer_off(2); + layer_off(_FACTORY); } diff --git a/keyboards/framework/macropad/macropad.c b/keyboards/framework/macropad/macropad.c index 3c74f4c7f8..88c1c34c57 100644 --- a/keyboards/framework/macropad/macropad.c +++ b/keyboards/framework/macropad/macropad.c @@ -79,3 +79,12 @@ led_config_t g_led_config = { { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 } }; + +void keyboard_post_init_user(void) { + // Sync initial numlock state from the host + if (host_keyboard_led_state().num_lock) { + layer_on(_NUMLOCK); + } else { + layer_off(_FN); + } +} diff --git a/keyboards/framework/macropad/macropad.h b/keyboards/framework/macropad/macropad.h index b2af646e1e..78b831e81e 100644 --- a/keyboards/framework/macropad/macropad.h +++ b/keyboards/framework/macropad/macropad.h @@ -15,3 +15,9 @@ { K108, H1, H2, KC_NO, H4, K107, K109, K110 }, \ { KC_NO, KC_NO, KC_NO, KC_NO, H3, KC_NO, KC_NO, KC_NO }, \ } + +enum _layers { + _NUMLOCK, + _FN, + _FACTORY, +};