~ruther/qmk_firmware

da9f894341a20c2e4e293cc2e1bb862785a6ccbf — Joel Challis 1 year, 8 months ago d58f85e
Fix issues with adm42 (#22144)

9 files changed, 121 insertions(+), 328 deletions(-)

D keyboards/adm42/config.h
D keyboards/adm42/rev4/config.h
R keyboards/adm42/{info.json => rev4/info.json}
D keyboards/adm42/rev4/keymaps/default/config.h
D keyboards/adm42/rev4/keymaps/default/keymap.c
A keyboards/adm42/rev4/keymaps/default/keymap.json
D keyboards/adm42/rev4/rev4.c
M keyboards/adm42/rev4/rules.mk
M keyboards/adm42/rules.mk
D keyboards/adm42/config.h => keyboards/adm42/config.h +0 -21
@@ 1,21 0,0 @@
/* Copyright 2020-2022 Lorenzo Leonini
 * SPDX-License-Identifier: GPL-2.0-only
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#pragma once

#if defined(CONSOLE_ENABLE)
	#define DEBUG_MATRIX_SCAN_RATE
#endif

D keyboards/adm42/rev4/config.h => keyboards/adm42/rev4/config.h +0 -44
@@ 1,44 0,0 @@
/* Copyright 2020-2022 Lorenzo Leonini
 * SPDX-License-Identifier: GPL-2.0-only
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#pragma once

#define ADM42_LED E6

#define RGB_MATRIX_LED_COUNT 42
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_LED_PROCESS_LIMIT 21
#define RGB_MATRIX_LED_FLUSH_LIMIT 16
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 20
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS

#define ENABLE_RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGBLIGHT_MODE_STATIC_LIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
#define ENABLE_RGB_MATRIX_BAND_VAL
#define ENABLE_RGB_MATRIX_SPLASH

R keyboards/adm42/info.json => keyboards/adm42/rev4/info.json +75 -2
@@ 9,18 9,91 @@
        "pid": "0xE873",
        "device_version": "0.0.1"
    },
    "features": {
        "bootmagic": true,
        "command": false,
        "console": false,
        "extrakey": true,
        "mousekey": true,
        "nkro": true,
        "rgb_matrix": true
    },
    "ws2812": {
        "pin": "B7"
    },
    "rgb_matrix": {
        "driver": "ws2812",
        "sat_steps": 24
        "animations": {
            "breathing": true,
            "band_val": true,
            "cycle_left_right": true,
            "cycle_up_down": true,
            "cycle_out_in": true,
            "cycle_pinwheel": true,
            "jellybean_raindrops": true,
            "pixel_fractal": true,
            "pixel_rain": true,
            "typing_heatmap": true,
            "digital_rain": true,
            "solid_reactive_simple": true,
            "splash": true
        },
        "layout": [
            {"matrix": [3, 6], "x": 112, "y": 32, "flags": 4},
            {"matrix": [2, 5], "x": 92, "y": 36, "flags": 4},
            {"matrix": [1, 5], "x": 94, "y": 25, "flags": 4},
            {"matrix": [0, 5], "x": 97, "y": 14, "flags": 4},
            {"matrix": [0, 4], "x": 80, "y": 13, "flags": 4},
            {"matrix": [1, 4], "x": 77, "y": 24, "flags": 4},
            {"matrix": [1, 3], "x": 62, "y": 18, "flags": 4},
            {"matrix": [0, 3], "x": 64, "y": 8, "flags": 4},
            {"matrix": [0, 2], "x": 49, "y": 6, "flags": 4},
            {"matrix": [1, 2], "x": 46, "y": 17, "flags": 4},
            {"matrix": [1, 1], "x": 28, "y": 23, "flags": 4},
            {"matrix": [0, 1], "x": 30, "y": 13, "flags": 4},
            {"matrix": [0, 0], "x": 14, "y": 11, "flags": 4},
            {"matrix": [1, 0], "x": 11, "y": 22, "flags": 4},
            {"matrix": [2, 0], "x": 8, "y": 32, "flags": 4},
            {"matrix": [2, 1], "x": 26, "y": 34, "flags": 4},
            {"matrix": [2, 2], "x": 43, "y": 28, "flags": 4},
            {"matrix": [2, 3], "x": 61, "y": 29, "flags": 4},
            {"matrix": [2, 4], "x": 76, "y": 34, "flags": 4},
            {"matrix": [3, 3], "x": 78, "y": 46, "flags": 4},
            {"matrix": [3, 4], "x": 97, "y": 49, "flags": 4},
            {"matrix": [3, 5], "x": 112, "y": 56, "flags": 4},
            {"matrix": [3, 7], "x": 127, "y": 49, "flags": 4},
            {"matrix": [3, 8], "x": 146, "y": 46, "flags": 4},
            {"matrix": [2, 6], "x": 132, "y": 36, "flags": 4},
            {"matrix": [2, 7], "x": 148, "y": 34, "flags": 4},
            {"matrix": [2, 8], "x": 164, "y": 29, "flags": 4},
            {"matrix": [2, 9], "x": 180, "y": 28, "flags": 4},
            {"matrix": [2, 10], "x": 198, "y": 34, "flags": 4},
            {"matrix": [2, 11], "x": 215, "y": 32, "flags": 4},
            {"matrix": [1, 11], "x": 212, "y": 22, "flags": 4},
            {"matrix": [1, 10], "x": 196, "y": 23, "flags": 4},
            {"matrix": [1, 9], "x": 178, "y": 17, "flags": 4},
            {"matrix": [1, 8], "x": 161, "y": 18, "flags": 4},
            {"matrix": [1, 7], "x": 146, "y": 24, "flags": 4},
            {"matrix": [1, 6], "x": 130, "y": 25, "flags": 4},
            {"matrix": [0, 6], "x": 126, "y": 14, "flags": 4},
            {"matrix": [0, 7], "x": 143, "y": 13, "flags": 4},
            {"matrix": [0, 8], "x": 159, "y": 8, "flags": 4},
            {"matrix": [0, 9], "x": 175, "y": 6, "flags": 4},
            {"matrix": [0, 10], "x": 194, "y": 13, "flags": 4},
            {"matrix": [0, 11], "x": 210, "y": 11, "flags": 4}
        ],
        "led_flush_limit": 16,
        "led_process_limit": 21,
        "max_brightness": 170,
        "sat_steps": 24,
        "sleep": true
    },
    "qmk": {
        "tap_keycode_delay": 1
    },
    "build": {
        "debounce_type": "sym_eager_pk"
        "debounce_type": "sym_eager_pk",
        "lto": true
    },
    "matrix_pins": {
        "cols": ["C6", "B6", "B5", "B4", "D7", "D6", "F0", "F1", "F4", "F5", "F6", "F7"],

D keyboards/adm42/rev4/keymaps/default/config.h => keyboards/adm42/rev4/keymaps/default/config.h +0 -2
@@ 1,2 0,0 @@
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
#define QUICK_TAP_TERM_PER_KEY

D keyboards/adm42/rev4/keymaps/default/keymap.c => keyboards/adm42/rev4/keymaps/default/keymap.c +0 -204
@@ 1,204 0,0 @@
/* Copyright 2020-2022 Lorenzo Leonini
 * SPDX-License-Identifier: GPL-2.0-only
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include QMK_KEYBOARD_H

enum custom_layers {
    _QWERTY,
    _COLEMAKDH,
    _SPECIAL,
    _EXTRA,
    _ADM,
    _SETUP,
};

#define LW_GRV LWIN_T(KC_GRV)
#define RW_EQU RWIN_T(KC_EQUAL)
#define RW_BS RWIN_T(KC_BSLS)
#define LC_TAB LCTL_T(KC_TAB)
#define RC_QUT RCTL_T(KC_QUOT)
#define LS_BPC LSFT_T(KC_BSPC)
#define RS_SPC RSFT_T(KC_SPC)
#define LA_BS LALT_T(KC_BSLS)
#define LW_F11 LWIN_T(KC_F11)
#define LC_APP LCTL_T(KC_APP)
#define LA_TOG LALT_T(RGB_TOG)
#define RW_F12 RWIN_T(KC_F12)

#define LLS_ESC LT(_SPECIAL, KC_ESC) 
#define LLS_RALT LT(_SPECIAL, KC_RALT) 
#define LLE_ENT LT(_EXTRA, KC_ENT) 
#define LLA_DEL LT(_ADM, KC_DEL)
#define SETUP MO(_SETUP)

enum custom_keycodes {
    REFLASH = SAFE_RANGE,
    LC_CIRC,
    RC_DLR,
    DF_QWER,
    DF_COLE,
};

// Not a mistake to have KC_LALT (also) on the right, RALT is kept for compose (LLS_RALT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [_QWERTY] = LAYOUT(
        LW_GRV,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    RW_EQU,
        LC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, RC_QUT,
        KC_LALT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_LALT,
                                   LLS_ESC, LS_BPC,  LLA_DEL, LLE_ENT, RS_SPC,  LLS_RALT
    ),
    [_COLEMAKDH] = LAYOUT(
        LW_GRV,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_B,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, RW_EQU,
        LC_TAB,  KC_A,    KC_R,    KC_S,    KC_T,    KC_G,    KC_M,    KC_N,    KC_E,    KC_I,    KC_O,    RC_QUT,
        KC_LALT, KC_Z,    KC_X,    KC_C,    KC_D,    KC_V,    KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLSH, KC_LALT,
                                   LLS_ESC, LS_BPC,  LLA_DEL, LLE_ENT, RS_SPC,  LLS_RALT
    ),

    [_SPECIAL] = LAYOUT(
        _______, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    RW_BS,
        LC_CIRC, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_EXLM, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_MINS, RC_DLR,
        _______, KC_AMPR, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_UNDS, KC_ASTR, KC_HASH, KC_PERC, KC_TILD, _______,
                                   KC_ESC,  _______, KC_DEL,  KC_ENT,  _______, KC_RALT
    ),
    [_EXTRA] = LAYOUT(
        LW_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  RW_F12,
        KC_LCTL, KC_PAUS, KC_INS,  KC_VOLD, KC_VOLU, KC_MUTE, KC_HOME, KC_PGDN, KC_PGUP, KC_END,  KC_APP,  KC_RCTL,
        _______, KC_SLEP, KC_PWR,  KC_MSTP, KC_MNXT, KC_MPLY, _______, KC_BRID, KC_BRIU, KC_PSCR, KC_WAKE, _______,
                                   KC_CAPS, _______, _______, _______, _______, KC_CAPS
    ),
    [_ADM] = LAYOUT(
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_B, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUD, RGB_HUI, XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  RGB_M_P, RGB_SPD, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX,
                                   XXXXXXX, XXXXXXX, XXXXXXX, SETUP,   XXXXXXX, XXXXXXX
    ),
    [_SETUP] = LAYOUT(
        REFLASH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, DF_QWER, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR,
                                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
    ),
};

bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
    // Special if-condition outside the switch because `RC_QUT` overlaps with
    // the `QK_MOD_TAP ... QK_MOD_TAP_MAX` range.
    if (keycode == RC_QUT) {
        return false;
    }
    switch (keycode) {
     case QK_MOD_TAP ... QK_MOD_TAP_MAX:
     case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
        return true;
     default:
        return false;
    }
}

uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
     case LLS_ESC:
     case LLS_RALT:
        return 0;
     default:
        return QUICK_TAP_TERM;
    }
}

static uint16_t last_timer = 0;
static int last_key = 0;
bool cleanup_return(uint16_t keycode, keyrecord_t *record, bool value) {
    if (record->event.pressed) {
        last_key = keycode;
        last_timer = timer_read();
    }
    return value;
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {

#ifdef CONSOLE_ENABLE
    uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
#endif

    switch (keycode) {

     case RC_DLR:
        if (record->event.pressed) {
            register_code(KC_RCTL);
        } else {
            unregister_code(KC_RCTL);
            if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) {
                send_string("$");
            }
        }
        return cleanup_return(keycode, record, false);

     case LC_CIRC:
        if (record->event.pressed) {
            register_code(KC_LCTL);
        } else {
            unregister_code(KC_LCTL);
            if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) {
                send_string("^");
            }
        }
        return cleanup_return(keycode, record, false);

     case DF_QWER:
        if (record->event.pressed) {
            set_single_persistent_default_layer(_QWERTY);
            send_string("QWERTY layout");
        }
        return false;
     case DF_COLE:
        if (record->event.pressed) {
            set_single_persistent_default_layer(_COLEMAKDH);
            send_string("COLEMAKDH layout");
        }
        return false;

     case REFLASH:
        eeconfig_init();
        eeconfig_update_rgb_matrix_default();
        writePinLow(ADM42_LED);
        reset_keyboard();
        return false;

     default:
        return cleanup_return(keycode, record, true);
    }
}

void keyboard_pre_init_kb(void) {
    setPinOutput(ADM42_LED);
    writePinHigh(ADM42_LED);
}

void keyboard_post_init_kb(void) {
    debug_enable = true;
    debug_matrix = false;
    debug_keyboard = false;
    writePinHigh(ADM42_LED);
}

void suspend_power_down_kb(void) {
    writePinLow(ADM42_LED);
}

void suspend_wakeup_init_kb(void) {
  writePinHigh(ADM42_LED);
}

A keyboards/adm42/rev4/keymaps/default/keymap.json => keyboards/adm42/rev4/keymaps/default/keymap.json +44 -0
@@ 0,0 1,44 @@
{
    "keyboard": "adm42/rev4",
    "keymap": "default",
    "commit": "3bf01bb9ed202b14f78105db2aa2a75d01fc4323",
    "layout": "LAYOUT",
    "layers": [
      [
        "LWIN_T(KC_GRV)", "KC_Q",    "KC_W",    "KC_E",         "KC_R",            "KC_T",         "KC_Y",         "KC_U",           "KC_I",          "KC_O",    "KC_P",    "RWIN_T(KC_EQL)",
        "LCTL_T(KC_TAB)", "KC_A",    "KC_S",    "KC_D",         "KC_F",            "KC_G",         "KC_H",         "KC_J",           "KC_K",          "KC_L",    "KC_SCLN", "RCTL_T(KC_QUOT)",
        "KC_LALT",        "KC_Z",    "KC_X",    "KC_C",         "KC_V",            "KC_B",         "KC_N",         "KC_M",           "KC_COMM",       "KC_DOT",  "KC_SLSH", "KC_LALT",
                                                "LT(2,KC_ESC)", "LSFT_T(KC_BSPC)", "LT(4,KC_DEL)", "LT(3,KC_ENT)", "RSFT_T(KC_SPC)", "LT(2,KC_RALT)"
      ],
      [
        "LWIN_T(KC_GRV)", "KC_Q",    "KC_W",    "KC_F",         "KC_P",            "KC_B",         "KC_J",         "KC_L",           "KC_U",          "KC_Y",    "KC_SCLN", "RWIN_T(KC_EQL)",
        "LCTL_T(KC_TAB)", "KC_A",    "KC_R",    "KC_S",         "KC_T",            "KC_G",         "KC_M",         "KC_N",           "KC_E",          "KC_I",    "KC_O",    "RCTL_T(KC_QUOT)",
        "KC_LALT",        "KC_Z",    "KC_X",    "KC_C",         "KC_D",            "KC_V",         "KC_K",         "KC_H",           "KC_COMM",       "KC_DOT",  "KC_SLSH", "KC_LALT",
                                                "LT(2,KC_ESC)", "LSFT_T(KC_BSPC)", "LT(4,KC_DEL)", "LT(3,KC_ENT)", "RSFT_T(KC_SPC)", "LT(2,KC_RALT)"
      ],
      [
        "_______", "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "RWIN_T(KC_BSLS)",
        "KC_LCTL", "KC_LBRC", "KC_RBRC", "KC_LPRN", "KC_RPRN", "KC_EXLM", "KC_LEFT", "KC_DOWN", "KC_UP",   "KC_RGHT", "KC_MINS", "KC_RCTL",
        "_______", "KC_AMPR", "KC_AT",   "KC_LCBR", "KC_RCBR", "KC_PIPE", "KC_UNDS", "KC_ASTR", "KC_HASH", "KC_PERC", "KC_TILD", "_______",
                                         "KC_ESC",  "_______", "KC_DEL",  "KC_ENT",  "_______", "KC_RALT"
      ],
      [
        "LWIN_T(KC_F11)", "KC_F1",   "KC_F2",   "KC_F3",   "KC_F4",   "KC_F5",   "KC_F6",   "KC_F7",   "KC_F8",   "KC_F9",   "KC_F10",  "RWIN_T(KC_F12)",
        "KC_LCTL",        "KC_PAUS", "KC_INS",  "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_HOME", "KC_PGDN", "KC_PGUP", "KC_END",  "KC_APP",  "KC_RCTL",
        "_______",        "KC_SLEP", "KC_PWR",  "KC_MSTP", "KC_MNXT", "KC_MPLY", "_______", "KC_BRID", "KC_BRIU", "KC_PSCR", "KC_WAKE", "_______",
                                                "KC_CAPS", "_______", "_______", "_______", "_______", "KC_CAPS"
      ],
      [
        "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RGB_M_B", "RGB_VAD", "RGB_VAI",  "RGB_SAD", "RGB_SAI", "XXXXXXX",
        "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "RGB_HUD", "RGB_HUI", "XXXXXXX",
        "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RGB_M_P", "RGB_SPD", "RGB_SPI",  "XXXXXXX", "XXXXXXX", "XXXXXXX",
                                         "XXXXXXX", "XXXXXXX", "XXXXXXX", "MO(5)",   "XXXXXXX", "XXXXXXX"
      ],
      [
        "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX",
        "XXXXXXX", "DF(0)",   "DF(1)",   "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX",
        "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "EE_CLR",
                                         "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX"
      ]
    ]
}
\ No newline at end of file

D keyboards/adm42/rev4/rev4.c => keyboards/adm42/rev4/rev4.c +0 -39
@@ 1,39 0,0 @@
/* Copyright 2020-2022 Lorenzo Leonini
 * SPDX-License-Identifier: GPL-2.0-only
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "quantum.h"

led_config_t g_led_config = {
    {
        {12, 11, 8, 7, 4, 3, 36, 37, 38, 39, 40, 41},
        {13, 10, 9, 6, 5, 2, 35, 34, 33, 32, 31, 30},
        {14, 15, 16, 17, 18, 1, 24, 25, 26, 27, 28, 29},
        {NO_LED, NO_LED, NO_LED, 19, 20, 21, 0, 22, 23, NO_LED, NO_LED, NO_LED}
    }, {
        {112, 32}, {92,  36}, {94,  25}, {97,  14}, {80,  13}, {77,  24},
        {62,  18}, {64,  8},  {49,  6},  {46,  17}, {28,  23}, {30,  13},
        {14,  11}, {11,  22}, {8,   32}, {26,  34}, {43,  28}, {61,  29},
        {76,  34}, {78,  46}, {97,  49}, {112, 56}, {127, 49}, {146, 46},
        {132, 36}, {148, 34}, {164, 29}, {180, 28}, {198, 34}, {215, 32},
        {212, 22}, {196, 23}, {178, 17}, {161, 18}, {146, 24}, {130, 25},
        {126, 14}, {143, 13}, {159, 8},  {175, 6},  {194, 13}, {210, 11}
    }, {
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
        4, 4, 4, 4, 4, 4
    }
};

M keyboards/adm42/rev4/rules.mk => keyboards/adm42/rev4/rules.mk +1 -1
@@ 1,1 1,1 @@
RGB_MATRIX_ENABLE = yes
# This file intentionally left blank

M keyboards/adm42/rules.mk => keyboards/adm42/rules.mk +1 -15
@@ 1,15 1,1 @@
# Build Options
#   change yes to no to disable
#
BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no        # Mouse keys
EXTRAKEY_ENABLE = yes       # Audio control and System control
CONSOLE_ENABLE = no         # Console for debug
COMMAND_ENABLE = no         # Commands for debug and configuration
NKRO_ENABLE = no            # Enable N-Key Rollover
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
AUDIO_ENABLE = no           # Audio output
LTO_ENABLE = yes

DEFAULT_FOLDER = adm42/rev4
DEFAULT_FOLDER = adm42/rev4
\ No newline at end of file

Do not follow this link