Browse Source

Refactor inland/kb83 (#25542)

Update keyboard to match current standards:
* Move LED config to DD
* Revert back to core behaviour for keycodes
* Remove vendor code
* Configure dip switch map
* Align readme
Joel Challis 1 year ago
parent
commit
9dcf2a11b2

+ 2 - 408
keyboards/inland/kb83/kb83.c

@@ -128,128 +128,6 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
     {1, CB10_CA5,   CB11_CA5,   CB12_CA5},
 };
 
-led_config_t g_led_config = {
-    {
-        {  0,       1,      2,      3,      4,      5,      6,      7,      8,      9,      10,     11,     12,     13, NO_LED,     NO_LED},
-        {  14,      15,     16,     17,     18,     19,     20,     21,     22,     23,     24,     25,     26,     27, NO_LED,     28},
-        {  29,      30,     31,     32,     33,     34,     35,     36,     37,     38,     39,     40,     41,     42, NO_LED,     43},
-        {  44,      45,     46,     47,     48,     49,     50,     51,     52,     53,     54,     55,     NO_LED, 56,     NO_LED, 57},
-        {  58,      59,     60,     61,     62,     63,     64,     65,     66,     67,     68, NO_LED,     NO_LED, 69,     70,     71},
-        {  72,      73,     74, NO_LED, NO_LED,     75, NO_LED, NO_LED, NO_LED,     76,     77,     78,     NO_LED, 79,     80,     81}
-    },
-    {
-        {  0,  0}, //  0
-        { 14,  0}, //  1
-        { 29,  0}, //  2
-        { 44,  0}, //  3
-        { 59,  0}, //  4
-        { 74,  0}, //  5
-        { 89,  0}, //  6
-        {104,  0}, //  7
-        {119,  0}, //  8
-        {134,  0}, //  9
-        {149,  0}, // 10
-        {164,  0}, // 11
-        {179,  0}, // 12
-        {194,  0}, // 13
-
-        {  0, 12}, // 14
-        { 14, 12}, // 15
-        { 28, 12}, // 16
-        { 42, 12}, // 17
-        { 56, 12}, // 18
-        { 70, 12}, // 19
-        { 84, 12}, // 20
-        { 98, 12}, // 21
-        {112, 12}, // 22
-        {126, 12}, // 23
-        {140, 12}, // 24
-        {154, 12}, // 25
-        {168, 12}, // 26
-        {182, 12}, // 27
-        {224, 12}, // 28
-
-        {  0, 25}, // 29
-        { 14, 25}, // 30
-        { 28, 25}, // 31
-        { 42, 25}, // 32
-        { 56, 25}, // 33
-        { 70, 25}, // 34
-        { 84, 25}, // 35
-        { 98, 25}, // 36
-        {112, 25}, // 37
-        {126, 25}, // 38
-        {140, 25}, // 39
-        {154, 25}, // 40
-        {168, 25}, // 41
-        {182, 25}, // 42
-        {224, 25}, // 43
-
-        {  0, 38}, // 44
-        { 28, 38}, // 45
-        { 42, 38}, // 46
-        { 56, 38}, // 47
-        { 70, 38}, // 48
-        { 84, 38}, // 49
-        { 98, 38}, // 50
-        {112, 38}, // 51
-        {126, 38}, // 52
-        {140, 38}, // 53
-        {154, 38}, // 54
-        {168, 38}, // 55
-        {182, 38}, // 56
-        {224, 38}, // 57
-
-        {  0, 51}, // 58
-        { 18, 51}, // 59
-        { 37, 51}, // 60
-        { 56, 51}, // 61
-        { 74, 51}, // 62
-        { 93, 51}, // 63
-        {112, 51}, // 64
-        {130, 51}, // 65
-        {149, 51}, // 66
-        {168, 51}, // 67
-        {186, 51}, // 68
-        {200, 51}, // 69
-        {214, 51}, // 70
-        {224, 51}, // 71
-
-        {  0, 64}, // 72
-        { 18, 64}, // 73
-        { 37, 64}, // 74
-        { 92, 64}, // 75
-        {140, 64}, // 76
-        {154, 64}, // 77
-        {168, 64}, // 78
-        {196, 64}, // 80
-        {210, 64}, // 81
-        {224, 64},  // 82
-
-        {0,   0}, //  68 LED 1
-        {0,   16}, //  69 LED 2
-        {0,   32}, //  70 LED 3
-        {0,   48}, //  71 LED 4
-        {0,   64}, //  72 LED 5
-
-        {224, 0 }, //  78 LED 12
-        {224, 16}, //  79 LED 13
-        {224, 32}, //  80 LED 14
-        {224, 48}, //  81 LED 15
-        {224, 64}, //  82 LED 16
-    },
-    {
-		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,  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,
-        2,  2,  2,  2,  2, 
-        2,  2,  2,  2,  2,     
-    }
-};
-
 bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
     if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) {
         return false;
@@ -275,45 +153,14 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
 
 #endif
 
-enum __layers {
-    WIN_B,
-    WIN_FN,
-    MAC_B,
-    MAC_FN
-};
-
-enum colors { 
-    WHITE, 
-    RED, 
-    GREEN, 
-    BLUE 
-};
-enum colors led_color_status = WHITE;
-
 // clang-format on
-static bool     fn_make_flag     = false;
-static bool     Lkey_flag        = false;
-static bool     reset_glint_flag = false;
-static bool     while_test_flag  = false;
-static bool     alarm_flag       = false;
-static uint16_t current_time     = 0;
-static uint8_t  glint_cnt        = 0;
-static uint16_t scancode         = 0;
-static uint8_t  alarm_cnt        = 0;
-static uint8_t  RGB_HSV_level;
-
-hsv_t hsv;
-
-void led_test(uint8_t color);
-void clear_eeprom(void);
-void rgb_hsv_updata_user(void);
 
 bool dip_switch_update_kb(uint8_t index, bool active) {
     if (!dip_switch_update_user(index, active)) {
         return false;
     }
     if (index == 0) {
-        default_layer_set(1UL << (active ? MAC_B : WIN_B));
+        set_single_default_layer(active ? 2 : 0);
     }
     return true;
 }
@@ -323,163 +170,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
         return false;
     }
     switch (keycode) {
-        case MO(WIN_FN):
-        case MO(MAC_FN):
-            fn_make_flag = record->event.pressed;
-            return true;
-        case KC_ESC:
-            if (fn_make_flag && record->event.pressed) {
-                Lkey_flag    = true;
-                current_time = timer_read();
-                scancode     = KC_ESC;
-                return false;
-            } else {
-                Lkey_flag = 0;
-            }
-            return true;
-        case KC_END:
-            if (fn_make_flag && record->event.pressed) {
-                if (while_test_flag) {
-                    while_test_flag = false;
-                    rgb_matrix_init();
-                } else {
-                    Lkey_flag    = true;
-                    current_time = timer_read();
-                    scancode     = KC_END;
-                }
-                return false;
-            } else {
-                Lkey_flag = 0;
-            }
-            return true;
-        case KC_LEFT:
-            if (while_test_flag == true) {
-                if (record->event.pressed) {
-                    if (glint_cnt == 0)
-                        glint_cnt = 3;
-                    else
-                        glint_cnt--;
-                    if ((glint_cnt % 4) == 0) {
-                        rgb_matrix_sethsv_noeeprom(HSV_WHITE);
-                    } else if ((glint_cnt % 4) == 1) {
-                        rgb_matrix_sethsv_noeeprom(HSV_RED);
-                    } else if ((glint_cnt % 4) == 2) {
-                        rgb_matrix_sethsv_noeeprom(HSV_GREEN);
-                    } else if ((glint_cnt % 4) == 3) {
-                        rgb_matrix_sethsv_noeeprom(HSV_BLUE);
-                    }
-                }
-                return false;
-            }
-            return true;
-        case KC_RGHT:
-            if (while_test_flag == true) {
-                if (record->event.pressed) {
-                    glint_cnt++;
-                    if (glint_cnt >= 4) glint_cnt = 0;
-
-                    if ((glint_cnt % 4) == 0) {
-                        rgb_matrix_sethsv_noeeprom(HSV_WHITE);
-                    } else if ((glint_cnt % 4) == 1) {
-                        rgb_matrix_sethsv_noeeprom(HSV_RED);
-                    } else if ((glint_cnt % 4) == 2) {
-                        rgb_matrix_sethsv_noeeprom(HSV_GREEN);
-                    } else if ((glint_cnt % 4) == 3) {
-                        rgb_matrix_sethsv_noeeprom(HSV_BLUE);
-                    }
-                }
-                return false;
-            }
-            return true;
-        case DF(WIN_B):
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                alarm_flag = true;
-                rgb_matrix_toggle_noeeprom();
-                current_time = timer_read();
-                set_single_persistent_default_layer(WIN_B);
-                return false;
-            }
-            return true;
-        case DF(MAC_B):
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                alarm_flag = true;
-                rgb_matrix_toggle_noeeprom();
-                current_time = timer_read();
-                set_single_persistent_default_layer(MAC_B);
-                return false;
-            }
-            return true;
-
-        case QK_RGB_MATRIX_VALUE_UP:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_val() / (RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4)) < 4) {
-                    RGB_HSV_level++;
-                    rgb_matrix_config.hsv.v = (uint8_t)(RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4) * RGB_HSV_level;
-                }
-                rgb_hsv_updata_user();
-            }
-            return false;
-        case QK_RGB_MATRIX_VALUE_DOWN:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_val() / (RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4)) > 0) {
-                    RGB_HSV_level--;
-                    rgb_matrix_config.hsv.v = (uint8_t)(RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4) * RGB_HSV_level;
-                }
-                rgb_hsv_updata_user();
-            }
-            return false;
-        case QK_RGB_MATRIX_SATURATION_UP:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_sat() / (UINT8_MAX / 4)) < 4) {
-                    RGB_HSV_level++;
-                    rgb_matrix_config.hsv.s = (uint8_t)(UINT8_MAX / 4) * RGB_HSV_level;
-                }
-                rgb_hsv_updata_user();
-            }
-            return false;
-        case QK_RGB_MATRIX_SATURATION_DOWN:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_sat() / (UINT8_MAX / 4)) > 0) {
-                    RGB_HSV_level--;
-                    rgb_matrix_config.hsv.s = (uint8_t)(UINT8_MAX / 4) * RGB_HSV_level;
-                }
-                rgb_hsv_updata_user();
-            }
-            return false;
-        case QK_RGB_MATRIX_HUE_UP:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_hue() / (UINT8_MAX / 6)) < 6) {
-                    RGB_HSV_level++;
-                    rgb_matrix_config.hsv.h = (uint8_t)(UINT8_MAX / 6) * RGB_HSV_level;
-                }
-                rgb_hsv_updata_user();
-            }
-            return false;
-        case QK_RGB_MATRIX_HUE_DOWN:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_hue() / (UINT8_MAX / 6)) > 0) {
-                    RGB_HSV_level--;
-                    rgb_matrix_config.hsv.h = (uint8_t)(UINT8_MAX / 6) * RGB_HSV_level;
-                }
-                rgb_hsv_updata_user();
-            }
-            return false;
-        case QK_RGB_MATRIX_SPEED_UP:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_speed() / (UINT8_MAX / 4)) < 4) {
-                    RGB_HSV_level++;
-                    rgb_matrix_set_speed((uint8_t)(UINT8_MAX / 4) * RGB_HSV_level);
-                }
-            }
-            return false;
-        case QK_RGB_MATRIX_SPEED_DOWN:
-            if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) {
-                if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_speed() / (UINT8_MAX / 4)) > 0) {
-                    RGB_HSV_level--;
-                    rgb_matrix_set_speed((uint8_t)(UINT8_MAX / 4) * RGB_HSV_level);
-                }
-            }
-            return false;
         case QK_RGB_MATRIX_TOGGLE:
             if (record->event.pressed) {
                 switch (rgb_matrix_get_flags()) {
@@ -499,102 +189,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
             return false;
 
         default:
-            return process_record_user(keycode, record);
-    }
-}
-
-void housekeeping_task_kb(void) {
-    if (Lkey_flag) {
-        if (scancode == KC_ESC) {
-            if (timer_elapsed(current_time) >= 3000) {
-                Lkey_flag = false;
-                clear_eeprom();
-
-                current_time     = timer_read();
-                reset_glint_flag = true;
-                glint_cnt        = 0;
-                rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
-                rgb_matrix_sethsv_noeeprom(HSV_OFF);
-            }
-        } else if (scancode == KC_END) {
-            if (timer_elapsed(current_time) >= 3000) {
-                Lkey_flag = false;
-                clear_eeprom();
-
-                while_test_flag = true;
-                glint_cnt       = 0;
-                rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
-                rgb_matrix_sethsv_noeeprom(HSV_WHITE);
-            }
-        }
-    } else if (reset_glint_flag) {
-        if ((timer_elapsed(current_time)) >= 300) {
-            current_time = timer_read();
-            if (((glint_cnt++) & 0x01) == 0) {
-                rgb_matrix_sethsv_noeeprom(HSV_RED);
-            } else {
-                rgb_matrix_sethsv_noeeprom(HSV_OFF);
-            }
-            if (glint_cnt >= 7) {
-                glint_cnt        = 0;
-                reset_glint_flag = false;
-                rgb_matrix_init();
-            }
-        }
-    } else if (alarm_cnt != 0) {
-        alarm_cnt--;
-        if (alarm_cnt == 0) {
-            alarm_flag = true;
-            rgb_matrix_toggle_noeeprom();
-            current_time = timer_read();
-        }
-    } else if (alarm_flag) {
-        if ((timer_elapsed(current_time)) >= 200) {
-            rgb_matrix_toggle_noeeprom();
-            alarm_flag = 0;
-        }
-    }
-}
-
-void led_test(uint8_t color) {
-    rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
-
-    switch (color) {
-        case WHITE:
-            rgb_matrix_sethsv_noeeprom(HSV_WHITE);
-            break;
-
-        case RED:
-            rgb_matrix_sethsv_noeeprom(HSV_RED);
-            break;
-
-        case GREEN:
-            rgb_matrix_sethsv_noeeprom(HSV_GREEN);
-            break;
-
-        case BLUE:
-            rgb_matrix_sethsv_noeeprom(HSV_BLUE);
-            break;
+            return true;
     }
 }
-
-void clear_eeprom(void) {
-    layer_state_t default_layer_temp = default_layer_state;
-    eeconfig_init();
-    default_layer_set(default_layer_temp);
-
-#ifdef VIA_ENABLE
-    // This resets the layout options
-    via_set_layout_options(VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT);
-    // This resets the keymaps in EEPROM to what is in flash.
-    dynamic_keymap_reset();
-    // This resets the macros in EEPROM to nothing.
-    dynamic_keymap_macro_reset();
-#endif
-
-    rgb_matrix_enable_noeeprom();
-}
-
-void rgb_hsv_updata_user(void) {
-    rgb_matrix_sethsv(rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v);
-}

+ 94 - 0
keyboards/inland/kb83/keyboard.json

@@ -32,6 +32,100 @@
             "multisplash": true
         },
         "driver": "snled27351",
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 29, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 44, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 59, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 74, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 89, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 104, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 119, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 134, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 149, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 164, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 179, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 194, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
+            {"matrix": [1, 1], "x": 14, "y": 12, "flags": 4},
+            {"matrix": [1, 2], "x": 28, "y": 12, "flags": 4},
+            {"matrix": [1, 3], "x": 42, "y": 12, "flags": 4},
+            {"matrix": [1, 4], "x": 56, "y": 12, "flags": 4},
+            {"matrix": [1, 5], "x": 70, "y": 12, "flags": 4},
+            {"matrix": [1, 6], "x": 84, "y": 12, "flags": 4},
+            {"matrix": [1, 7], "x": 98, "y": 12, "flags": 4},
+            {"matrix": [1, 8], "x": 112, "y": 12, "flags": 4},
+            {"matrix": [1, 9], "x": 126, "y": 12, "flags": 4},
+            {"matrix": [1, 10], "x": 140, "y": 12, "flags": 4},
+            {"matrix": [1, 11], "x": 154, "y": 12, "flags": 4},
+            {"matrix": [1, 12], "x": 168, "y": 12, "flags": 4},
+            {"matrix": [1, 13], "x": 182, "y": 12, "flags": 4},
+            {"matrix": [1, 15], "x": 224, "y": 12, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
+            {"matrix": [2, 1], "x": 14, "y": 25, "flags": 4},
+            {"matrix": [2, 2], "x": 28, "y": 25, "flags": 4},
+            {"matrix": [2, 3], "x": 42, "y": 25, "flags": 4},
+            {"matrix": [2, 4], "x": 56, "y": 25, "flags": 4},
+            {"matrix": [2, 5], "x": 70, "y": 25, "flags": 4},
+            {"matrix": [2, 6], "x": 84, "y": 25, "flags": 4},
+            {"matrix": [2, 7], "x": 98, "y": 25, "flags": 4},
+            {"matrix": [2, 8], "x": 112, "y": 25, "flags": 4},
+            {"matrix": [2, 9], "x": 126, "y": 25, "flags": 4},
+            {"matrix": [2, 10], "x": 140, "y": 25, "flags": 4},
+            {"matrix": [2, 11], "x": 154, "y": 25, "flags": 4},
+            {"matrix": [2, 12], "x": 168, "y": 25, "flags": 4},
+            {"matrix": [2, 13], "x": 182, "y": 25, "flags": 4},
+            {"matrix": [2, 15], "x": 224, "y": 25, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
+            {"matrix": [3, 1], "x": 28, "y": 38, "flags": 4},
+            {"matrix": [3, 2], "x": 42, "y": 38, "flags": 4},
+            {"matrix": [3, 3], "x": 56, "y": 38, "flags": 4},
+            {"matrix": [3, 4], "x": 70, "y": 38, "flags": 4},
+            {"matrix": [3, 5], "x": 84, "y": 38, "flags": 4},
+            {"matrix": [3, 6], "x": 98, "y": 38, "flags": 4},
+            {"matrix": [3, 7], "x": 112, "y": 38, "flags": 4},
+            {"matrix": [3, 8], "x": 126, "y": 38, "flags": 4},
+            {"matrix": [3, 9], "x": 140, "y": 38, "flags": 4},
+            {"matrix": [3, 10], "x": 154, "y": 38, "flags": 4},
+            {"matrix": [3, 11], "x": 168, "y": 38, "flags": 4},
+            {"matrix": [3, 13], "x": 182, "y": 38, "flags": 4},
+            {"matrix": [3, 15], "x": 224, "y": 38, "flags": 4},
+            {"matrix": [4, 0], "x": 0, "y": 51, "flags": 4},
+            {"matrix": [4, 1], "x": 18, "y": 51, "flags": 4},
+            {"matrix": [4, 2], "x": 37, "y": 51, "flags": 4},
+            {"matrix": [4, 3], "x": 56, "y": 51, "flags": 4},
+            {"matrix": [4, 4], "x": 74, "y": 51, "flags": 4},
+            {"matrix": [4, 5], "x": 93, "y": 51, "flags": 4},
+            {"matrix": [4, 6], "x": 112, "y": 51, "flags": 4},
+            {"matrix": [4, 7], "x": 130, "y": 51, "flags": 4},
+            {"matrix": [4, 8], "x": 149, "y": 51, "flags": 4},
+            {"matrix": [4, 9], "x": 168, "y": 51, "flags": 4},
+            {"matrix": [4, 10], "x": 186, "y": 51, "flags": 4},
+            {"matrix": [4, 13], "x": 200, "y": 51, "flags": 4},
+            {"matrix": [4, 14], "x": 214, "y": 51, "flags": 4},
+            {"matrix": [4, 15], "x": 224, "y": 51, "flags": 4},
+            {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [5, 1], "x": 18, "y": 64, "flags": 4},
+            {"matrix": [5, 2], "x": 37, "y": 64, "flags": 4},
+            {"matrix": [5, 5], "x": 92, "y": 64, "flags": 4},
+            {"matrix": [5, 9], "x": 140, "y": 64, "flags": 4},
+            {"matrix": [5, 10], "x": 154, "y": 64, "flags": 4},
+            {"matrix": [5, 11], "x": 168, "y": 64, "flags": 4},
+            {"matrix": [5, 13], "x": 196, "y": 64, "flags": 4},
+            {"matrix": [5, 14], "x": 210, "y": 64, "flags": 4},
+            {"matrix": [5, 15], "x": 224, "y": 64, "flags": 4},
+            {"x": 0, "y": 0, "flags": 2},
+            {"x": 0, "y": 16, "flags": 2},
+            {"x": 0, "y": 32, "flags": 2},
+            {"x": 0, "y": 48, "flags": 2},
+            {"x": 0, "y": 64, "flags": 2},
+            {"x": 224, "y": 0, "flags": 2},
+            {"x": 224, "y": 16, "flags": 2},
+            {"x": 224, "y": 32, "flags": 2},
+            {"x": 224, "y": 48, "flags": 2},
+            {"x": 224, "y": 64, "flags": 2}
+        ],
         "max_brightness": 200,
         "react_on_keyup": true,
         "sleep": true

+ 5 - 0
keyboards/inland/kb83/keymaps/default/keymap.c

@@ -71,3 +71,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
 };
 #endif
 
+#if defined(DIP_SWITCH_MAP_ENABLE)
+const uint16_t PROGMEM dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES] = {
+    DIP_SWITCH_OFF_ON(DF(WIN_B), DF(MAC_B))
+};
+#endif

+ 1 - 0
keyboards/inland/kb83/keymaps/default/rules.mk

@@ -1 +1,2 @@
 ENCODER_MAP_ENABLE = yes
+DIP_SWITCH_MAP_ENABLE = yes

+ 7 - 2
keyboards/inland/kb83/readme.md

@@ -14,6 +14,11 @@ Flashing example for this keyboard:
 
     make inland/kb83:default:flash
 
-**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard.
-
 See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Bootmagic reset**: Hold down the top left key, which programmed as *Esc* while plugging in the keyboard
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available