qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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 }