keymap.c (2250B)
1 // Copyright 2023 QMK 2 // SPDX-License-Identifier: GPL-2.0-or-later 3 4 #include QMK_KEYBOARD_H 5 6 /* Keymap for 3x4 Macropad 7 * 8 * Layer 0 (Base Layer) - Numpad layout with mute button and layer toggle: 9 * ,----------------------, 10 * | 7 | 8 | 9 | MUTE | 11 * |-------+-------+-------+--------| 12 * | 4 | 5 | 6 | Layer1 | 13 * |-------+-------+-------+--------| 14 * | 1 | 2 | 3 | 0 | 15 * `-----------------------^--------' 16 * 17 * Layer 1 (Function Layer) - Accessed by holding MO(1): 18 * ,----------------------, 19 * | BKSP | / | - | ---- | 20 * |-------+-------+-------+--------| 21 * | = | * | + | ---- | 22 * |-------+-------+-------+--------| 23 * | ENTER | ---- | ---- | . | 24 * `-----------------------^--------' 25 * 26 * The base layer (0) provides standard numpad functionality with: 27 * - Numbers 0-9 in traditional numpad layout 28 * - Mute button in top right 29 * - Layer 1 momentary toggle (MO1) in middle right 30 * 31 * The function layer (1) adds: 32 * - Basic mathematical operators (+, -, *, /) 33 * - Backspace, Enter, and decimal point 34 * - Equal sign for calculations 35 * - Empty slots marked as ---- (KC_NO) 36 */ 37 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 38 39 [0] = LAYOUT_ortho_3x4( 40 KC_KP_7, KC_KP_8, KC_KP_9, KC_MUTE, 41 KC_KP_4, KC_KP_5, KC_KP_6, MO(1), 42 KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_0 43 ), 44 45 [1] = LAYOUT_ortho_3x4( 46 KC_BACKSPACE, KC_KP_SLASH, KC_KP_MINUS, _______, 47 KC_EQUAL, KC_KP_ASTERISK, KC_KP_PLUS, _______, 48 KC_ENTER, _______, _______, KC_KP_DOT 49 ) 50 }; 51 52 53 /* 54 * Handle layer state changes by updating RGB matrix colors 55 * 56 * Sets RGB matrix colors based on active layer: 57 * - Layer 0: Light green (#88FB7A) 58 * - Layer 1: Red 59 * - Other layers: Red (fallback) 60 */ 61 layer_state_t layer_state_set_user(layer_state_t state) { 62 switch (get_highest_layer(state)) { 63 case 0: 64 rgb_matrix_sethsv(85, 255, 251); // #88FB7A for layer 0 65 break; 66 case 1: 67 rgb_matrix_sethsv(0, 255, 255); // Red for layer 1 68 break; 69 default: 70 rgb_matrix_sethsv(0, 255, 255); // Red for any other layer 71 break; 72 } 73 return state; 74 }