From d654fad5480dd7aef1d1c8372e19cfa588d2c96d Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Mon, 30 Jun 2025 10:51:05 +0800
Subject: [PATCH 01/23] Added keyboard 8s200
---
keyboards/hfdkb/8s200/8s200.c | 439 ++++++++++++++++++
keyboards/hfdkb/8s200/8s200.h | 11 +
.../hfdkb/8s200/8s200_via_v1_01_20250213.json | 234 ++++++++++
.../hfdkb/8s200/8s200_via_v1_06_20250613.json | 224 +++++++++
keyboards/hfdkb/8s200/config.h | 43 ++
keyboards/hfdkb/8s200/halconf.h | 24 +
keyboards/hfdkb/8s200/keyboard.json | 234 ++++++++++
.../hfdkb/8s200/keymaps/default/keymap.c | 57 +++
keyboards/hfdkb/8s200/mcuconf.h | 34 ++
9 files changed, 1300 insertions(+)
create mode 100644 keyboards/hfdkb/8s200/8s200.c
create mode 100644 keyboards/hfdkb/8s200/8s200.h
create mode 100644 keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json
create mode 100644 keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json
create mode 100644 keyboards/hfdkb/8s200/config.h
create mode 100644 keyboards/hfdkb/8s200/halconf.h
create mode 100644 keyboards/hfdkb/8s200/keyboard.json
create mode 100644 keyboards/hfdkb/8s200/keymaps/default/keymap.c
create mode 100644 keyboards/hfdkb/8s200/mcuconf.h
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
new file mode 100644
index 00000000000..2bc67e52dff
--- /dev/null
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -0,0 +1,439 @@
+/* Copyright (C) 2022 jonylee@hfd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
+
+#include "quantum.h"
+// clang-format off
+
+#ifdef RGB_MATRIX_ENABLE
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {1, SW3_CS1, SW2_CS1, SW1_CS1},
+ {1, C_2, B_2, A_2},
+ {1, C_3, B_3, A_3},
+ {1, C_4, B_4, A_4},
+ {1, C_5, B_5, A_5},
+ {1, C_6, B_6, A_6},
+ {1, C_7, B_7, A_7},
+ {1, C_8, B_8, A_8},
+ {1, C_9, B_9, A_9},
+ {1, C_10, B_10, A_10},
+ {1, C_11, B_11, A_11},
+ {1, C_12, B_12, A_12},
+ {1, C_13, B_13, A_13},
+ {1, C_14, B_14, A_14},
+ {1, C_15, B_15, A_15},
+ {1, C_16, B_16, A_16},
+
+ {0, F_1, E_1, D_1},
+ {0, F_2, E_2, D_2},
+ {0, F_3, E_3, D_3},
+ {0, F_4, E_4, D_4},
+ {0, F_5, E_5, D_5},
+ {0, F_6, E_6, D_6},
+ {0, F_7, E_7, D_7},
+ {0, F_8, E_8, D_8},
+ {0, F_9, E_9, D_9},
+ {0, F_10, E_10, D_10},
+ {0, F_11, E_11, D_11},
+ {0, F_12, E_12, D_12},
+ {0, F_13, E_13, D_13},
+ {1, F_1, E_1, D_1},
+
+ {0, I_1, H_1, G_1},
+ {0, I_2, H_2, G_2},
+ {0, I_3, H_3, G_3},
+ {0, I_4, H_4, G_4},
+ {0, I_5, H_5, G_5},
+ {0, I_6, H_6, G_6},
+ {0, I_7, H_7, G_7},
+ {0, I_8, H_8, G_8},
+ {0, I_9, H_9, G_9},
+ {0, I_10, H_10, G_10},
+ {0, I_11, H_11, G_11},
+ {0, I_12, H_12, G_12},
+ {0, I_13, H_13, G_13},
+ {1, F_5, E_5, D_5},
+ {1, F_2, E_2, D_2},
+
+ {0, L_1, K_1, J_1},
+ {0, L_3, K_3, J_3},
+ {0, L_4, K_4, J_4},
+ {0, L_5, K_5, J_5},
+ {0, L_6, K_6, J_6},
+ {0, L_7, K_7, J_7},
+ {0, L_8, K_8, J_8},
+ {0, L_9, K_9, J_9},
+ {0, L_10, K_10, J_10},
+ {0, L_11, K_11, J_11},
+ {0, L_12, K_12, J_12},
+ {1, F_9, E_9, D_9},
+ {1, F_8, E_8, D_8},
+ {1, F_6, E_6, D_6},
+ {1, F_3, E_3, D_3},
+
+ {0, L_13, K_13, J_13},
+ {0, L_14, K_14, J_14},
+ {0, L_15, K_15, J_15},
+ {0, L_16, K_16, J_16},
+
+ {0, I_14, H_14, G_14},
+
+ {0, I_15, H_15, G_15},
+ {0, I_16, H_16, G_16},
+ {0, F_14, E_14, D_14},
+ {0, F_15, E_15, D_15},
+ {0, F_16, E_16, D_16},
+ {1, F_7, E_7, D_7},
+ {1, F_4, E_4, D_4},
+
+ {0, L_2, K_2, J_2},
+ {1, D_10, E_10, F_10},
+ {1, D_11, E_11, F_11},
+};
+#endif
+// clang-format on
+typedef union {
+ uint32_t raw;
+ struct {
+ bool first_boot;
+ uint8_t rgb_mode;
+ };
+} keyboard_config_t;
+keyboard_config_t keyboard_config;
+
+uint8_t rgb_test_en;
+uint8_t rgb_test_index;
+uint32_t long_pressed_time;
+uint16_t long_pressed_keycode;
+uint8_t all_blink_cnt;
+uint32_t all_blink_time;
+RGB all_blink_color;
+uint8_t single_blink_cnt;
+uint8_t single_blink_index;
+RGB single_blink_color;
+uint32_t single_blink_time;
+uint8_t EE_CLR_blink_cnt;
+RGB EE_CLR_blink_color;
+uint32_t EE_CLR_blink_time;
+
+const uint8_t rgb_test_color_table[][3] = {
+ {RGB_WHITE},
+ {RGB_RED},
+ {RGB_GREEN},
+ {RGB_BLUE},
+};
+// clang-format off
+static uint8_t rgb_matrix_effects_table[] = {
+ RGB_MATRIX_BREATHING,
+ RGB_MATRIX_SOLID_COLOR,
+ RGB_MATRIX_CYCLE_LEFT_RIGHT,
+ RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
+ RGB_MATRIX_CYCLE_OUT_IN_DUAL,
+ RGB_MATRIX_DUAL_BEACON,
+ RGB_MATRIX_RAINBOW_BEACON,
+ RGB_MATRIX_RAINDROPS,
+ RGB_MATRIX_SOLID_REACTIVE,
+};
+
+// clang-format on
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘按键事件
+ if (process_record_user(keycode, record) != true) { // 自定义按键处理
+ return false; // 用户已处理了按键事件无需进一步处理
+ }
+ switch (keycode) {
+ case SW_OS1:
+ if (record->event.pressed) {
+ long_pressed_time = timer_read32();
+ long_pressed_keycode = SW_OS1;
+ } else {
+ long_pressed_time = 0;
+ }
+ break;
+ case RGB_TEST:
+ if (record->event.pressed) {
+ long_pressed_time = timer_read32();
+ long_pressed_keycode = RGB_TEST;
+ } else {
+ long_pressed_time = 0;
+ }
+ break;
+ case NK_TOGG:
+ if (record->event.pressed) {
+ long_pressed_time = timer_read32();
+ long_pressed_keycode = NK_TOGG;
+ } else {
+ long_pressed_time = 0;
+ }
+ return false;
+ case EE_CLR:
+ if (record->event.pressed) {
+ long_pressed_time = timer_read32();
+ long_pressed_keycode = EE_CLR;
+ } else {
+ long_pressed_time = 0;
+ }
+ return false;
+ case KC_DEL:
+ if (record->event.pressed) {
+ if (rgb_test_en) {
+ rgb_test_en = false;
+ return false;
+ }
+ }
+ break;
+ case KC_DOWN:
+ if (record->event.pressed) {
+ if (rgb_test_en) {
+ rgb_test_index++;
+ rgb_test_index %= 4;
+ return false;
+ }
+ }
+ break;
+ case RGB_SPI:
+ if (record->event.pressed) {
+ rgb_matrix_increase_speed();
+ if (rgb_matrix_get_speed() >= 255) {
+ rgb_matrix_config.speed = 255;
+ }
+ }
+ return false;
+ case RGB_SPD:
+ if (record->event.pressed) {
+ rgb_matrix_decrease_speed();
+ if (rgb_matrix_get_speed() <= 27) {
+ rgb_matrix_config.speed = 27;
+ }
+ }
+ return false;
+ // case GU_TOGG:
+ // if (record->event.pressed) {
+ // } else {
+ // if (keymap_config.no_gui) {
+ // single_blink_time = timer_read32();
+ // single_blink_cnt = 2;
+ // single_blink_index = 74;
+ // single_blink_color = (RGB){100, 100, 100};
+ // }
+ // }
+ // break;
+ case RGB_MOD:
+ if (record->event.pressed) {
+ keyboard_config.rgb_mode++;
+ if (keyboard_config.rgb_mode > (sizeof(rgb_matrix_effects_table) / sizeof(rgb_matrix_effects_table[0]))) {
+ keyboard_config.rgb_mode = 0;
+ }
+ eeconfig_update_user(keyboard_config.raw);
+ if (keyboard_config.rgb_mode == 9) {
+ // rgb_matrix_disable_noeeprom();
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ } else {
+ // rgb_matrix_enable();
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
+ }
+ // if (rgb_matrix_get_mode() == RGB_MATRIX_NONE) {
+ // }
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ if (keyboard_config.rgb_mode == 9) {
+ return false;
+ }
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ } break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ } break;
+ }
+ }
+ return false;
+ default:
+ break;
+ }
+ return true;
+}
+
+void matrix_init_kb(void) {
+#ifdef RGB_DRIVER_SDB_PIN
+ setPinOutputOpenDrain(RGB_DRIVER_SDB_PIN);
+ writePinHigh(RGB_DRIVER_SDB_PIN);
+#endif
+
+ matrix_init_user();
+}
+
+void keyboard_post_init_kb() {
+ // rgb_matrix_config.hsv.h = 170;
+ // rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
+ keyboard_config.raw = eeconfig_read_user();
+ rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
+ if (keyboard_config.rgb_mode == 9) {
+ // rgb_matrix_disable_noeeprom();
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+
+ keyboard_post_init_user(); // call matrix_init_user() at the end of this function
+}
+
+void housekeeping_task_kb(void) {
+ if (!keyboard_config.first_boot) {
+ keymap_config.nkro = 1; // 全键无冲
+ eeconfig_update_keymap(keymap_config.raw);
+ keyboard_config.first_boot = 1;
+ rgb_matrix_config.hsv.h = 170;
+ eeconfig_update_user(keyboard_config.raw);
+ // HSV hsv = rgb_matrix_get_hsv();
+ // hsv.h = 170;
+ // RGB rgb = hsv_to_rgb(hsv);
+ // rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
+ }
+
+#ifdef CONSOLE_ENABLE
+ debug_enable = true;
+#endif
+ if ((timer_elapsed32(long_pressed_time) > 2000) && (long_pressed_time)) { // 检查是否有按键长按
+ long_pressed_time = 0;
+ switch (long_pressed_keycode) {
+ case RGB_TEST:
+ rgb_test_en = 1;
+ break;
+ case SW_OS1:
+ if (get_highest_layer(default_layer_state) == 0) { // MAC_BASE
+ set_single_persistent_default_layer(2);
+ keymap_config.no_gui = 0;
+ eeconfig_update_keymap(keymap_config.raw); // Write default value to EEPROM now
+ single_blink_time = timer_read32();
+ single_blink_cnt = 2;
+ single_blink_index = 73;
+ single_blink_color = (RGB){100, 100, 100};
+ } else if (get_highest_layer(default_layer_state) == 2) { // WIN_BASE
+ set_single_persistent_default_layer(0);
+ single_blink_time = timer_read32();
+ single_blink_cnt = 2;
+ single_blink_index = 73;
+ single_blink_color = (RGB){.r = 0, .g = 0, .b = 100};
+ }
+ break;
+ case NK_TOGG:
+ keymap_config.nkro = !keymap_config.nkro;
+ eeconfig_update_keymap(keymap_config.raw);
+ single_blink_time = timer_read32();
+ single_blink_cnt = 6;
+ single_blink_index = 13;
+ single_blink_color = (RGB){100, 100, 100};
+ break;
+ case EE_CLR:
+ // eeconfig_update_rgb_matrix_default();
+
+ EE_CLR_blink_time = timer_read32();
+ EE_CLR_blink_cnt = 6;
+ // EE_CLR_blink_index = 64;
+ EE_CLR_blink_color = (RGB){.r = 100, .g = 100, .b = 100};
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (rgb_matrix_indicators_advanced_user(led_min, led_max) != true) {
+ return false;
+ }
+ // rgb_matrix_set_color(73, 0, 0, 0);
+ // rgb_matrix_set_color(74, 0, 0, 0);
+
+ if (rgb_test_en) {
+ rgb_matrix_set_color_all(rgb_test_color_table[rgb_test_index][0], rgb_test_color_table[rgb_test_index][1], rgb_test_color_table[rgb_test_index][2]);
+ }
+
+ /*************************************************************************************/
+ if (all_blink_cnt) { // 全键闪烁
+ rgb_matrix_set_color_all(0, 0, 0);
+ if (timer_elapsed32(all_blink_time) > 300) {
+ all_blink_time = timer_read32();
+ all_blink_cnt--;
+ }
+ if (all_blink_cnt & 0x1) {
+ rgb_matrix_set_color_all(all_blink_color.r, all_blink_color.g, all_blink_color.b);
+ }
+ }
+
+ if (single_blink_cnt) { // 单键闪烁
+ if (timer_elapsed32(single_blink_time) > 300) {
+ single_blink_time = timer_read32();
+ single_blink_cnt--;
+ }
+ if (single_blink_cnt % 2) {
+ rgb_matrix_set_color(single_blink_index, single_blink_color.r, single_blink_color.g, single_blink_color.b);
+ } else {
+ rgb_matrix_set_color(single_blink_index, 0, 0, 0);
+ }
+ }
+ /*************************************************************************************/
+ if (EE_CLR_blink_cnt) { // 复位闪烁
+ if (EE_CLR_blink_cnt % 2) {
+ rgb_matrix_set_color(73, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
+ rgb_matrix_set_color(74, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
+ } else {
+ rgb_matrix_set_color(73, 0, 0, 0);
+ rgb_matrix_set_color(74, 0, 0, 0);
+ }
+ if (timer_elapsed32(EE_CLR_blink_time) > 300) {
+ if (EE_CLR_blink_cnt > 0) {
+ EE_CLR_blink_time = timer_read32();
+ EE_CLR_blink_cnt--;
+ }
+ if (!EE_CLR_blink_cnt) {
+ eeconfig_init();
+ eeconfig_update_rgb_matrix_default();
+ keyboard_config.rgb_mode = 0;
+ rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
+ // rgb_matrix_set_color_all(RGB_BLUE);
+ rgb_matrix_config.hsv.h = 170;
+ eeconfig_update_user(keyboard_config.raw); // Write default value to EEPROM now
+ keymap_config.no_gui = 0;
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ }
+ }
+ /*************************************************************************************/
+ // caps lock red
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(72, 100, 100, 100);
+ } else {
+ rgb_matrix_set_color(72, 0, 0, 0);
+ }
+
+ if (keymap_config.no_gui) {
+ rgb_matrix_set_color(61, 100, 100, 100);
+ }
+
+ return true;
+}
diff --git a/keyboards/hfdkb/8s200/8s200.h b/keyboards/hfdkb/8s200/8s200.h
new file mode 100644
index 00000000000..42c5b29b0cd
--- /dev/null
+++ b/keyboards/hfdkb/8s200/8s200.h
@@ -0,0 +1,11 @@
+// Copyright 2023 JoyLee (@itarze)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+enum user_keycodes {
+ SW_OS1 = QK_KB_0,
+ RGB_TEST,
+};
diff --git a/keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json b/keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json
new file mode 100644
index 00000000000..0745088db71
--- /dev/null
+++ b/keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json
@@ -0,0 +1,234 @@
+{
+ "name": "AIRONE Pro",
+ "vendorId": "0xFFFE",
+ "productId": "0x0096",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 200],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["All Off", 0],
+ ["SOLID_COLOR", 1],
+ ["BREATHING", 2],
+ ["CYCLE_ALL", 3],
+ ["CYCLE_LEFT_RIGHT", 4],
+ ["CYCLE_UP_DOWN", 5],
+ ["RAINBOW_MOVING_CHEVRON", 6],
+ ["CYCLE_OUT_IN", 7],
+ ["CYCLE_OUT_IN_DUAL", 8],
+ ["CYCLE_PINWHEEL", 9],
+ ["CYCKE_SPIRAL", 10],
+ ["DUAL_BEACON", 11],
+ ["RAINBOW_BEACON", 12],
+ ["RAINDROPS", 13],
+ ["TYPING_HEATMAP", 14],
+ ["SOLID_REACTIVE_SIMPLE", 15],
+ ["SOLID_REACTIVE", 16],
+ ["SOLID_REACTIVE_NEXUS", 17],
+ ["MATRIX_MULTISPLASH", 18]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "matrix": { "rows": 5, "cols": 16 },
+ "customKeycodes":[
+ {"name":"BT DEV1","title":"BT_HOST1","shortName":"BT_HOST1"},
+ {"name":"BT DEV2","title":"BT_HOST2","shortName":"BT_HOST2"},
+ {"name":"BT DEV3","title":"BT_HOST3","shortName":"BT_HOST3"},
+ {"name":"2.4G","title":"BT_2_4G","shortName":"BT_2_4G"},
+ {"name":"USB","title":"BT_USB","shortName":"BT_USB"},
+ {"name":"BT_VOL","title":"BT_VOL","shortName":"BT_VOL"}
+ ],
+ "layouts": {
+ "keymap":[
+ [
+ {
+ "c": "#AAAAAA"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "c": "#AAAAAA"
+ },
+ "0,14",
+ "0,15"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "x": 0.25,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,14",
+ {
+ "c": "#AAAAAA"
+ },
+ "1,15"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "x": 1.25,
+ "c": "#AAAAAA"
+ },
+ "2,15"
+ ],
+ [
+ {
+ "w": 2
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12",
+ {
+ "c": "#AAAAAA"
+ },
+ "3,13",
+ {
+ "c": "#777777"
+ },
+ "3,14",
+ {
+ "c": "#AAAAAA"
+ },
+ "3,15"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "4,0",
+ {
+ "w": 1.25
+ },
+ "4,1",
+ {
+ "w": 1.25
+ },
+ "4,2",
+ "4,3",
+ {
+ "w": 3.5
+ },
+ "4,6",
+ "4,9",
+ {
+ "w": 1.25
+ },
+ "4,10",
+ {
+ "w": 1.25
+ },
+ "4,11",
+ {
+ "w": 1.25
+ },
+ "4,12",
+ {
+ "c": "#777777"
+ },
+ "4,13",
+ "4,14",
+ "4,15"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json b/keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json
new file mode 100644
index 00000000000..b9f65b94277
--- /dev/null
+++ b/keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json
@@ -0,0 +1,224 @@
+{
+ "name": "AIRONE PRO",
+ "vendorId": "0xFFFE",
+ "productId": "0x0096",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 200],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["All Off", 0],
+ ["MATRIX_SOLID_COLOR", 1],
+ ["BREATHING", 2],
+ ["CYCLE_LEFT_RIGHT", 3],
+ ["RAINBOW_MOVING_CHEVRON", 4],
+ ["CYCLE_OUT_IN_DUAL", 5],
+ ["DUAL_BEACON", 6],
+ ["RAINBOW_BEACON", 7],
+ ["RAINDROPS", 8],
+ ["SOLID_REACTIVE", 16]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "customKeycodes":[
+ {"name":"SW_OS1","title":"Switch OS between Mac and Windows","shortName":"SW_OS1"}
+ ],
+ "matrix": { "rows": 5, "cols": 16 },
+ "layouts": {
+ "keymap":[
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "c": "#AAAAAA"
+ },
+ "0,14",
+ "0,15"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "x": 0.25,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,14",
+ {
+ "c": "#AAAAAA"
+ },
+ "1,15"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "x": 1.25,
+ "c": "#AAAAAA"
+ },
+ "2,15"
+ ],
+ [
+ {
+ "w": 2
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12",
+ {
+ "c": "#AAAAAA"
+ },
+ "3,13",
+ {
+ "c": "#777777"
+ },
+ "3,14",
+ {
+ "c": "#AAAAAA"
+ },
+ "3,15"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "4,0",
+ {
+ "w": 1.25
+ },
+ "4,1",
+ {
+ "w": 1.25
+ },
+ "4,2",
+ "4,3",
+ {
+ "w": 3.5,
+ "c": "#cccccc"
+ },
+ "4,6",
+ {
+ "c": "#AAAAAA"
+ },
+ "4,9",
+ {
+ "w": 1.25
+ },
+ "4,10",
+ {
+ "w": 1.25
+ },
+ "4,11",
+ {
+ "w": 1.25
+ },
+ "4,12",
+ {
+ "c": "#777777"
+ },
+ "4,13",
+ "4,14",
+ "4,15"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
new file mode 100644
index 00000000000..054f67e1bd6
--- /dev/null
+++ b/keyboards/hfdkb/8s200/config.h
@@ -0,0 +1,43 @@
+/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
+
+#pragma once
+
+/* Use 6 dynamic keymap layers */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
+
+#define RGB_DRIVER_SDB_PIN A15
+
+#define RGB_DRIVER_EN_PIN B2
+
+/* I2C Config for LED Driver */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110100
+#define DRIVER_ADDR_2 0b1110111
+#define I2C1_SDA_PIN B7
+#define I2C1_SCL_PIN B6
+#define I2C1_SCL_PAL_MODE 4
+#define I2C1_OPMODE OPMODE_I2C
+#define I2C1_CLOCK_SPEED 400000
+
+/* SPI Config for spi flash*/
+#define SPI_DRIVER SPIDQ
+#define SPI_SCK_PIN B3
+#define SPI_MOSI_PIN B5
+#define SPI_MISO_PIN B4
+#define SPI_MOSI_PAL_MODE 5
+
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
diff --git a/keyboards/hfdkb/8s200/halconf.h b/keyboards/hfdkb/8s200/halconf.h
new file mode 100644
index 00000000000..11715fe3156
--- /dev/null
+++ b/keyboards/hfdkb/8s200/halconf.h
@@ -0,0 +1,24 @@
+/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
new file mode 100644
index 00000000000..457c38d9ba7
--- /dev/null
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -0,0 +1,234 @@
+{
+ "manufacturer": "hfd",
+ "keyboard_name": "AIRONE PRO",
+ "maintainer": "jonylee@hfd",
+ "processor": "WB32FQ95",
+ "bootloader": "wb32-dfu",
+ "usb": {
+ "vid": "0xFFFE",
+ "pid": "0x0096",
+ "device_version": "1.0.9",
+ "suspend_wakeup_delay": 1000
+ },
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "host": {
+ "default": {
+ "nkro": true
+ }
+ },
+ "matrix_pins": {
+ "cols": ["C1","C2","C3","A0","A1","A2","A3","A4","A5","A6","A7","C4","C5","B0","B1","B2"],
+ "rows": ["C6", "C7", "C8", "C9", "A8"]
+ },
+ "eeprom": {
+ "driver": "wear_leveling",
+ "wear_leveling": {
+ "driver": "spi_flash",
+ "backing_size": 8192
+ }
+ },
+ "rgb_matrix": {
+ "driver": "is31fl3731",
+ "max_brightness": 180,
+ "val_steps": 45,
+ "speed_steps": 57,
+ "hue_steps": 32,
+ "react_on_keyup": true,
+ "sleep": true,
+ "animations": {
+ "solid_color": false,
+ "breathing": true,
+ "cycle_all": false,
+ "cycle_left_right": true,
+ "cycle_up_down": false,
+ "cycle_out_in": false,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": true,
+ "cycle_pinwheel": false,
+ "cycle_spiral": false,
+ "dual_beacon": true,
+ "rainbow_beacon": true,
+ "raindrops": true,
+ "typing_heatmap": false,
+ "solid_reactive_simple": false,
+ "solid_reactive": true,
+ "multisplash": false
+ },
+ "default": {
+ "speed": 141
+ },
+ "layout": [
+ { "flags": 4, "matrix": [0,0], "x": 7, "y": 3},
+ { "flags": 4, "matrix": [0,1], "x": 21, "y": 3},
+ { "flags": 4, "matrix": [0,2], "x": 35, "y": 3},
+ { "flags": 4, "matrix": [0,3], "x": 49, "y": 3},
+ { "flags": 4, "matrix": [0,4], "x": 63, "y": 3},
+ { "flags": 4, "matrix": [0,5], "x": 77, "y": 3},
+ { "flags": 4, "matrix": [0,6], "x": 91, "y": 3},
+ { "flags": 4, "matrix": [0,7], "x": 105, "y": 3},
+ { "flags": 4, "matrix": [0,8], "x": 119, "y": 3},
+ { "flags": 4, "matrix": [0,9], "x": 133, "y": 3},
+ { "flags": 4, "matrix": [0,10], "x": 147, "y": 3},
+ { "flags": 4, "matrix": [0,11], "x": 161, "y": 3},
+ { "flags": 4, "matrix": [0,12], "x": 175, "y": 3},
+ { "flags": 4, "matrix": [0,13], "x": 189, "y": 3},
+ { "flags": 4, "matrix": [0,14], "x": 203, "y": 3},
+ { "flags": 4, "matrix": [0,15], "x": 217, "y": 3},
+
+ { "flags": 4, "matrix": [1,0], "x": 10, "y": 16},
+ { "flags": 4, "matrix": [1,1], "x": 28, "y": 16},
+ { "flags": 4, "matrix": [1,2], "x": 42, "y": 16},
+ { "flags": 4, "matrix": [1,3], "x": 56, "y": 16},
+ { "flags": 4, "matrix": [1,4], "x": 70, "y": 16},
+ { "flags": 4, "matrix": [1,5], "x": 84, "y": 16},
+ { "flags": 4, "matrix": [1,6], "x": 98, "y": 16},
+ { "flags": 4, "matrix": [1,7], "x": 112, "y": 16},
+ { "flags": 4, "matrix": [1,8], "x": 126, "y": 16},
+ { "flags": 4, "matrix": [1,9], "x": 140, "y": 16},
+ { "flags": 4, "matrix": [1,10], "x": 154, "y": 16},
+ { "flags": 4, "matrix": [1,11], "x": 168, "y": 16},
+ { "flags": 4, "matrix": [1,12], "x": 182, "y": 16},
+ { "flags": 4, "matrix": [1,15], "x": 217, "y": 16},
+
+ { "flags": 1, "matrix": [2,0], "x": 12, "y": 29},
+ { "flags": 4, "matrix": [2,1], "x": 32, "y": 29},
+ { "flags": 4, "matrix": [2,2], "x": 46, "y": 29},
+ { "flags": 4, "matrix": [2,3], "x": 60, "y": 29},
+ { "flags": 4, "matrix": [2,4], "x": 74, "y": 29},
+ { "flags": 4, "matrix": [2,5], "x": 88, "y": 29},
+ { "flags": 4, "matrix": [2,6], "x": 102, "y": 29},
+ { "flags": 4, "matrix": [2,7], "x": 116, "y": 29},
+ { "flags": 4, "matrix": [2,8], "x": 130, "y": 29},
+ { "flags": 4, "matrix": [2,9], "x": 144, "y": 29},
+ { "flags": 4, "matrix": [2,10], "x": 158, "y": 29},
+ { "flags": 4, "matrix": [2,11], "x": 172, "y": 29},
+ { "flags": 1, "matrix": [2,12], "x": 186, "y": 29},
+ { "flags": 4, "matrix": [2,14], "x": 201, "y": 19},
+ { "flags": 4, "matrix": [2,15], "x": 217, "y": 29},
+
+ { "flags": 1, "matrix": [3,0], "x": 14, "y": 41},
+ { "flags": 4, "matrix": [3,2], "x": 35, "y": 41},
+ { "flags": 4, "matrix": [3,3], "x": 49, "y": 41},
+ { "flags": 4, "matrix": [3,4], "x": 63, "y": 41},
+ { "flags": 4, "matrix": [3,5], "x": 77, "y": 41},
+ { "flags": 4, "matrix": [3,6], "x": 91, "y": 41},
+ { "flags": 4, "matrix": [3,7], "x": 105, "y": 41},
+ { "flags": 4, "matrix": [3,8], "x": 119, "y": 41},
+ { "flags": 4, "matrix": [3,9], "x": 133, "y": 41},
+ { "flags": 4, "matrix": [3,10], "x": 147, "y": 41},
+ { "flags": 4, "matrix": [3,11], "x": 161, "y": 41},
+ { "flags": 4, "matrix": [3,12], "x": 175, "y": 41},
+ { "flags": 1, "matrix": [3,13], "x": 189, "y": 41},
+ { "flags": 1, "matrix": [3,14], "x": 203, "y": 41},
+ { "flags": 1, "matrix": [3,15], "x": 217, "y": 41},
+
+ { "flags": 1, "matrix": [4,0], "x": 9, "y": 54},
+ { "flags": 1, "matrix": [4,1], "x": 26, "y": 54},
+ { "flags": 1, "matrix": [4,2], "x": 44, "y": 54},
+ { "flags": 1, "matrix": [4,3], "x": 60, "y": 54},
+ { "flags": 4, "matrix": [4,6], "x": 91, "y": 54},
+ { "flags": 1, "matrix": [4,9], "x": 122, "y": 54},
+ { "flags": 1, "matrix": [4,10], "x": 138, "y": 54},
+ { "flags": 1, "matrix": [4,11], "x": 156, "y": 54},
+ { "flags": 1, "matrix": [4,12], "x": 173, "y": 54},
+ { "flags": 1, "matrix": [4,13], "x": 189, "y": 54},
+ { "flags": 1, "matrix": [4,14], "x": 203, "y": 54},
+ { "flags": 1, "matrix": [4,15], "x": 217, "y": 54},
+
+ { "flags": 2, "x": 10, "y": 29},
+ { "flags": 2, "x": 81, "y": 54},
+ { "flags": 2, "x": 101, "y": 54}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_ansi": {
+ "layout": [
+ { "matrix": [0,0], "x": 0, "y":0 },
+ { "matrix": [0,1], "x": 1, "y":0 },
+ { "matrix": [0,2], "x": 2, "y":0 },
+ { "matrix": [0,3], "x": 3, "y":0 },
+ { "matrix": [0,4], "x": 4, "y":0 },
+ { "matrix": [0,5], "x": 5, "y":0 },
+ { "matrix": [0,6], "x": 6, "y":0 },
+ { "matrix": [0,7], "x": 7, "y":0 },
+ { "matrix": [0,8], "x": 8, "y":0 },
+ { "matrix": [0,9], "x": 9, "y":0 },
+ { "matrix": [0,10], "x": 10, "y":0 },
+ { "matrix": [0,11], "x": 11, "y":0 },
+ { "matrix": [0,12], "x": 12, "y":0 },
+ { "matrix": [0,13], "x": 13, "y":0 },
+ { "matrix": [0,14], "x": 14, "y":0 },
+ { "matrix": [0,15], "x": 15, "y":0 },
+
+ { "matrix": [1,0], "w": 1.5, "x": 0, "y": 1 },
+ { "matrix": [1,1], "x": 1.5, "y": 1 },
+ { "matrix": [1,2], "x": 2.5, "y": 1 },
+ { "matrix": [1,3], "x": 3.5, "y": 1 },
+ { "matrix": [1,4], "x": 4.5, "y": 1 },
+ { "matrix": [1,5], "x": 5.5, "y": 1 },
+ { "matrix": [1,6], "x": 6.5, "y": 1 },
+ { "matrix": [1,7], "x": 7.5, "y": 1 },
+ { "matrix": [1,8], "x": 8.5, "y": 1 },
+ { "matrix": [1,9], "x": 9.5, "y": 1 },
+ { "matrix": [1,10], "x": 10.5, "y": 1 },
+ { "matrix": [1,11], "x": 11.5, "y": 1 },
+ { "matrix": [1,12], "x": 12.5, "y": 1 },
+ { "matrix": [1,15], "x": 15, "y": 1 },
+
+ { "matrix": [2,0], "w": 1.75, "x": 0, "y": 2 },
+ { "matrix": [2,1], "x": 1.75, "y": 2 },
+ { "matrix": [2,2], "x": 2.75, "y": 2 },
+ { "matrix": [2,3], "x": 3.75, "y": 2 },
+ { "matrix": [2,4], "x": 4.75, "y": 2 },
+ { "matrix": [2,5], "x": 5.75, "y": 2 },
+ { "matrix": [2,6], "x": 6.75, "y": 2 },
+ { "matrix": [2,7], "x": 7.75, "y": 2 },
+ { "matrix": [2,8], "x": 8.75, "y": 2 },
+ { "matrix": [2,9], "x": 9.75, "y": 2 },
+ { "matrix": [2,10], "x": 10.75, "y": 2 },
+ { "matrix": [2,11], "x": 11.75, "y": 2 },
+ { "matrix": [2,12], "x": 12.75, "y": 2 },
+ { "matrix": [2,14], "w": 1.25, "h": 2, "x": 13.75, "y": 2 },
+ { "matrix": [2,15], "x": 15, "y": 2 },
+
+ { "matrix": [3,0], "w": 2, "x": 2.25, "y": 3 },
+ { "matrix": [3,2], "x": 2, "y": 3 },
+ { "matrix": [3,3], "x": 3, "y": 3 },
+ { "matrix": [3,4], "x": 4, "y": 3 },
+ { "matrix": [3,5], "x": 5, "y": 3 },
+ { "matrix": [3,6], "x": 6, "y": 3 },
+ { "matrix": [3,7], "x": 7, "y": 3 },
+ { "matrix": [3,8], "x": 8, "y": 3 },
+ { "matrix": [3,9], "x": 9, "y": 3 },
+ { "matrix": [3,10], "x": 10, "y": 3 },
+ { "matrix": [3,11], "x": 11, "y": 3 },
+ { "matrix": [3,12], "x": 12, "y": 3 },
+ { "matrix": [3,13], "x": 13, "y": 3 },
+ { "matrix": [3,14], "x": 14, "y": 3 },
+ { "matrix": [3,15], "x": 15, "y": 3 },
+
+ { "matrix": [4,0], "w": 1.25, "x": 0, "y": 4 },
+ { "matrix": [4,1], "w": 1.25, "x": 1.25, "y": 4 },
+ { "matrix": [4,2], "w": 1.25, "x": 2.5, "y": 4 },
+ { "matrix": [4,3], "x": 3.75, "y": 4 },
+ { "matrix": [4,6], "w": 3.5, "x": 4.75, "y": 4 },
+ { "matrix": [4,9], "x": 8.25, "y": 4 },
+ { "matrix": [4,10], "w": 1.25, "x": 9.25, "y": 4 },
+ { "matrix": [4,11], "w": 1.25, "x": 10.5, "y": 4 },
+ { "matrix": [4,12], "w": 1.25, "x": 11.75, "y": 4 },
+ { "matrix": [4,13], "x": 13, "y": 4 },
+ { "matrix": [4,14], "x": 14, "y": 4 },
+ { "matrix": [4,15], "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/hfdkb/8s200/keymaps/default/keymap.c b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
new file mode 100644
index 00000000000..7599ed7ef50
--- /dev/null
+++ b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+// Copyright 2023 JoyLee (@itarze)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬────┐
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│INS│HOME│DEL |
+ * ├───├───├───├───├───├───├───├───├───├───├───├───├───├───┴────├────┤
+ * │` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp │PGUP│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤────┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PGDN│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤────┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │END │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─────┬───┘────┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ ↑ │ICON│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬────┼───┼────┤
+ * │Ctrl│GUI │Alt │ │Alt│Ctl│FN │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴────┴───┴────┘
+ */
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, _______,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/hfdkb/8s200/mcuconf.h b/keyboards/hfdkb/8s200/mcuconf.h
new file mode 100644
index 00000000000..23a3f1e9682
--- /dev/null
+++ b/keyboards/hfdkb/8s200/mcuconf.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 2022 jonylee@hfd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef WB32_I2C_USE_I2C1
+#define WB32_I2C_USE_I2C1 TRUE
+
+#undef WB32_SPI_USE_QSPI
+#define WB32_SPI_USE_QSPI TRUE
+
+#undef WB32_SPI_USE_SPIM2
+#define WB32_SPI_USE_SPIM2 TRUE
+
+#undef WB32_SPI_QSPI_IRQ_PRIORITY
+#define WB32_SPI_QSPI_IRQ_PRIORITY 9
+
+#undef WB32_SPI_SPIM2_IRQ_PRIORITY
+#define WB32_SPI_SPIM2_IRQ_PRIORITY 10
From 14e14305c353a6cb5a7cd1163cbde27c76da6ffa Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Mon, 30 Jun 2025 17:58:55 +0800
Subject: [PATCH 02/23] 8s200: Updated to new pattern
---
keyboards/hfdkb/8s200/8s200.c | 283 +++++++-----------
keyboards/hfdkb/8s200/8s200.h | 1 -
.../hfdkb/8s200/8s200_via_v1_01_20250213.json | 234 ---------------
.../hfdkb/8s200/8s200_via_v1_06_20250613.json | 224 --------------
keyboards/hfdkb/8s200/config.h | 6 +-
keyboards/hfdkb/8s200/keyboard.json | 4 +-
.../hfdkb/8s200/keymaps/default/keymap.c | 121 ++++----
7 files changed, 183 insertions(+), 690 deletions(-)
delete mode 100644 keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json
delete mode 100644 keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 2bc67e52dff..73f00c6de5c 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -14,101 +14,100 @@
* along with this program. If not, see .
*/
-#include "quantum.h"
-// clang-format off
+#include QMK_KEYBOARD_H
+// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{1, SW3_CS1, SW2_CS1, SW1_CS1},
- {1, C_2, B_2, A_2},
- {1, C_3, B_3, A_3},
- {1, C_4, B_4, A_4},
- {1, C_5, B_5, A_5},
- {1, C_6, B_6, A_6},
- {1, C_7, B_7, A_7},
- {1, C_8, B_8, A_8},
- {1, C_9, B_9, A_9},
- {1, C_10, B_10, A_10},
- {1, C_11, B_11, A_11},
- {1, C_12, B_12, A_12},
- {1, C_13, B_13, A_13},
- {1, C_14, B_14, A_14},
- {1, C_15, B_15, A_15},
- {1, C_16, B_16, A_16},
+ {1, SW3_CS2, SW2_CS2, SW1_CS2},
+ {1, SW3_CS3, SW2_CS3, SW1_CS3},
+ {1, SW3_CS4, SW2_CS4, SW1_CS4},
+ {1, SW3_CS5, SW2_CS5, SW1_CS5},
+ {1, SW3_CS6, SW2_CS6, SW1_CS6},
+ {1, SW3_CS7, SW2_CS7, SW1_CS7},
+ {1, SW3_CS8, SW2_CS8, SW1_CS8},
+ {1, SW3_CS9, SW2_CS9, SW1_CS9},
+ {1, SW3_CS10, SW2_CS10, SW1_CS10},
+ {1, SW3_CS11, SW2_CS11, SW1_CS11},
+ {1, SW3_CS12, SW2_CS12, SW1_CS12},
+ {1, SW3_CS13, SW2_CS13, SW1_CS13},
+ {1, SW3_CS14, SW2_CS14, SW1_CS14},
+ {1, SW3_CS15, SW2_CS15, SW1_CS15},
+ {1, SW3_CS16, SW2_CS16, SW1_CS16},
- {0, F_1, E_1, D_1},
- {0, F_2, E_2, D_2},
- {0, F_3, E_3, D_3},
- {0, F_4, E_4, D_4},
- {0, F_5, E_5, D_5},
- {0, F_6, E_6, D_6},
- {0, F_7, E_7, D_7},
- {0, F_8, E_8, D_8},
- {0, F_9, E_9, D_9},
- {0, F_10, E_10, D_10},
- {0, F_11, E_11, D_11},
- {0, F_12, E_12, D_12},
- {0, F_13, E_13, D_13},
- {1, F_1, E_1, D_1},
+ {0, SW6_CS1, SW5_CS1, SW4_CS1},
+ {0, SW6_CS2, SW5_CS2, SW4_CS2},
+ {0, SW6_CS3, SW5_CS3, SW4_CS3},
+ {0, SW6_CS4, SW5_CS4, SW4_CS4},
+ {0, SW6_CS5, SW5_CS5, SW4_CS5},
+ {0, SW6_CS6, SW5_CS6, SW4_CS6},
+ {0, SW6_CS7, SW5_CS7, SW4_CS7},
+ {0, SW6_CS8, SW5_CS8, SW4_CS8},
+ {0, SW6_CS9, SW5_CS9, SW4_CS9},
+ {0, SW6_CS10, SW5_CS10, SW4_CS10},
+ {0, SW6_CS11, SW5_CS11, SW4_CS11},
+ {0, SW6_CS12, SW5_CS12, SW4_CS12},
+ {0, SW6_CS13, SW5_CS13, SW4_CS13},
+ {1, SW6_CS1, SW5_CS1, SW4_CS1},
- {0, I_1, H_1, G_1},
- {0, I_2, H_2, G_2},
- {0, I_3, H_3, G_3},
- {0, I_4, H_4, G_4},
- {0, I_5, H_5, G_5},
- {0, I_6, H_6, G_6},
- {0, I_7, H_7, G_7},
- {0, I_8, H_8, G_8},
- {0, I_9, H_9, G_9},
- {0, I_10, H_10, G_10},
- {0, I_11, H_11, G_11},
- {0, I_12, H_12, G_12},
- {0, I_13, H_13, G_13},
- {1, F_5, E_5, D_5},
- {1, F_2, E_2, D_2},
+ {0, SW9_CS1, SW8_CS1, SW7_CS1},
+ {0, SW9_CS2, SW8_CS2, SW7_CS2},
+ {0, SW9_CS3, SW8_CS3, SW7_CS3},
+ {0, SW9_CS4, SW8_CS4, SW7_CS4},
+ {0, SW9_CS5, SW8_CS5, SW7_CS5},
+ {0, SW9_CS6, SW8_CS6, SW7_CS6},
+ {0, SW9_CS7, SW8_CS7, SW7_CS7},
+ {0, SW9_CS8, SW8_CS8, SW7_CS8},
+ {0, SW9_CS9, SW8_CS9, SW7_CS9},
+ {0, SW9_CS10, SW8_CS10, SW7_CS10},
+ {0, SW9_CS11, SW8_CS11, SW7_CS11},
+ {0, SW9_CS12, SW8_CS12, SW7_CS12},
+ {0, SW9_CS13, SW8_CS13, SW7_CS13},
+ {1, SW6_CS5, SW5_CS5, SW4_CS5},
+ {1, SW6_CS2, SW5_CS2, SW4_CS2},
- {0, L_1, K_1, J_1},
- {0, L_3, K_3, J_3},
- {0, L_4, K_4, J_4},
- {0, L_5, K_5, J_5},
- {0, L_6, K_6, J_6},
- {0, L_7, K_7, J_7},
- {0, L_8, K_8, J_8},
- {0, L_9, K_9, J_9},
- {0, L_10, K_10, J_10},
- {0, L_11, K_11, J_11},
- {0, L_12, K_12, J_12},
- {1, F_9, E_9, D_9},
- {1, F_8, E_8, D_8},
- {1, F_6, E_6, D_6},
- {1, F_3, E_3, D_3},
+ {0, SW12_CS1, SW11_CS1, SW10_CS1},
+ {0, SW12_CS3, SW11_CS3, SW10_CS3},
+ {0, SW12_CS4, SW11_CS4, SW10_CS4},
+ {0, SW12_CS5, SW11_CS5, SW10_CS5},
+ {0, SW12_CS6, SW11_CS6, SW10_CS6},
+ {0, SW12_CS7, SW11_CS7, SW10_CS7},
+ {0, SW12_CS8, SW11_CS8, SW10_CS8},
+ {0, SW12_CS9, SW11_CS9, SW10_CS9},
+ {0, SW12_CS10, SW11_CS10, SW10_CS10},
+ {0, SW12_CS11, SW11_CS11, SW10_CS11},
+ {0, SW12_CS12, SW11_CS12, SW10_CS12},
+ {1, SW6_CS9, SW5_CS9, SW4_CS9},
+ {1, SW6_CS8, SW5_CS8, SW4_CS8},
+ {1, SW6_CS6, SW5_CS6, SW4_CS6},
+ {1, SW6_CS3, SW5_CS3, SW4_CS3},
- {0, L_13, K_13, J_13},
- {0, L_14, K_14, J_14},
- {0, L_15, K_15, J_15},
- {0, L_16, K_16, J_16},
+ {0, SW12_CS13, SW11_CS13, SW10_CS13},
+ {0, SW12_CS14, SW11_CS14, SW10_CS14},
+ {0, SW12_CS15, SW11_CS15, SW10_CS15},
+ {0, SW12_CS16, SW11_CS16, SW10_CS16},
+ {0, SW9_CS14, SW8_CS14, SW7_CS14},
+ {0, SW9_CS15, SW8_CS15, SW7_CS15},
+ {0, SW9_CS16, SW8_CS16, SW7_CS16},
+ {0, SW6_CS14, SW5_CS14, SW4_CS14},
+ {0, SW6_CS15, SW5_CS15, SW4_CS15},
+ {0, SW6_CS16, SW5_CS16, SW4_CS16},
+ {1, SW6_CS7, SW5_CS7, SW4_CS7},
+ {1, SW6_CS4, SW5_CS4, SW4_CS4},
- {0, I_14, H_14, G_14},
-
- {0, I_15, H_15, G_15},
- {0, I_16, H_16, G_16},
- {0, F_14, E_14, D_14},
- {0, F_15, E_15, D_15},
- {0, F_16, E_16, D_16},
- {1, F_7, E_7, D_7},
- {1, F_4, E_4, D_4},
-
- {0, L_2, K_2, J_2},
- {1, D_10, E_10, F_10},
- {1, D_11, E_11, F_11},
+ {0, SW12_CS2, SW11_CS2, SW10_CS2},
+ {1, SW6_CS10, SW5_CS10, SW4_CS10},
+ {1, SW6_CS11, SW5_CS11, SW4_CS11},
};
#endif
+
// clang-format on
typedef union {
uint32_t raw;
@@ -119,8 +118,6 @@ typedef union {
} keyboard_config_t;
keyboard_config_t keyboard_config;
-uint8_t rgb_test_en;
-uint8_t rgb_test_index;
uint32_t long_pressed_time;
uint16_t long_pressed_keycode;
uint8_t all_blink_cnt;
@@ -152,11 +149,10 @@ static uint8_t rgb_matrix_effects_table[] = {
RGB_MATRIX_RAINDROPS,
RGB_MATRIX_SOLID_REACTIVE,
};
-
// clang-format on
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘按键事件
- if (process_record_user(keycode, record) != true) { // 自定义按键处理
- return false; // 用户已处理了按键事件无需进一步处理
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (process_record_user(keycode, record) != true) {
+ return false;
}
switch (keycode) {
case SW_OS1:
@@ -167,14 +163,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘
long_pressed_time = 0;
}
break;
- case RGB_TEST:
- if (record->event.pressed) {
- long_pressed_time = timer_read32();
- long_pressed_keycode = RGB_TEST;
- } else {
- long_pressed_time = 0;
- }
- break;
case NK_TOGG:
if (record->event.pressed) {
long_pressed_time = timer_read32();
@@ -191,24 +179,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘
long_pressed_time = 0;
}
return false;
- case KC_DEL:
- if (record->event.pressed) {
- if (rgb_test_en) {
- rgb_test_en = false;
- return false;
- }
- }
- break;
- case KC_DOWN:
- if (record->event.pressed) {
- if (rgb_test_en) {
- rgb_test_index++;
- rgb_test_index %= 4;
- return false;
- }
- }
- break;
- case RGB_SPI:
+ case RM_SPDU:
if (record->event.pressed) {
rgb_matrix_increase_speed();
if (rgb_matrix_get_speed() >= 255) {
@@ -216,7 +187,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘
}
}
return false;
- case RGB_SPD:
+ case RM_SPDD:
if (record->event.pressed) {
rgb_matrix_decrease_speed();
if (rgb_matrix_get_speed() <= 27) {
@@ -224,18 +195,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘
}
}
return false;
- // case GU_TOGG:
- // if (record->event.pressed) {
- // } else {
- // if (keymap_config.no_gui) {
- // single_blink_time = timer_read32();
- // single_blink_cnt = 2;
- // single_blink_index = 74;
- // single_blink_color = (RGB){100, 100, 100};
- // }
- // }
- // break;
- case RGB_MOD:
+ case RM_NEXT:
if (record->event.pressed) {
keyboard_config.rgb_mode++;
if (keyboard_config.rgb_mode > (sizeof(rgb_matrix_effects_table) / sizeof(rgb_matrix_effects_table[0]))) {
@@ -243,19 +203,15 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘
}
eeconfig_update_user(keyboard_config.raw);
if (keyboard_config.rgb_mode == 9) {
- // rgb_matrix_disable_noeeprom();
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
} else {
- // rgb_matrix_enable();
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
}
- // if (rgb_matrix_get_mode() == RGB_MATRIX_NONE) {
- // }
}
return false;
- case RGB_TOG:
+ case QK_RGB_MATRIX_TOGGLE:
if (record->event.pressed) {
if (keyboard_config.rgb_mode == 9) {
return false;
@@ -270,6 +226,10 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // 处理键盘
} break;
}
}
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable();
+ }
return false;
default:
break;
@@ -282,56 +242,39 @@ void matrix_init_kb(void) {
setPinOutputOpenDrain(RGB_DRIVER_SDB_PIN);
writePinHigh(RGB_DRIVER_SDB_PIN);
#endif
-
matrix_init_user();
}
void keyboard_post_init_kb() {
- // rgb_matrix_config.hsv.h = 170;
- // rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
keyboard_config.raw = eeconfig_read_user();
rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
if (keyboard_config.rgb_mode == 9) {
- // rgb_matrix_disable_noeeprom();
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
}
-
- keyboard_post_init_user(); // call matrix_init_user() at the end of this function
+ keyboard_post_init_user();
}
void housekeeping_task_kb(void) {
if (!keyboard_config.first_boot) {
- keymap_config.nkro = 1; // 全键无冲
- eeconfig_update_keymap(keymap_config.raw);
keyboard_config.first_boot = 1;
rgb_matrix_config.hsv.h = 170;
eeconfig_update_user(keyboard_config.raw);
- // HSV hsv = rgb_matrix_get_hsv();
- // hsv.h = 170;
- // RGB rgb = hsv_to_rgb(hsv);
- // rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
}
-#ifdef CONSOLE_ENABLE
- debug_enable = true;
-#endif
- if ((timer_elapsed32(long_pressed_time) > 2000) && (long_pressed_time)) { // 检查是否有按键长按
+ if ((timer_elapsed32(long_pressed_time) > 2000) && (long_pressed_time)) {
long_pressed_time = 0;
switch (long_pressed_keycode) {
- case RGB_TEST:
- rgb_test_en = 1;
- break;
case SW_OS1:
- if (get_highest_layer(default_layer_state) == 0) { // MAC_BASE
+ if (get_highest_layer(default_layer_state) == 0) {
set_single_persistent_default_layer(2);
keymap_config.no_gui = 0;
- eeconfig_update_keymap(keymap_config.raw); // Write default value to EEPROM now
+ eeconfig_update_keymap(&keymap_config);
single_blink_time = timer_read32();
single_blink_cnt = 2;
single_blink_index = 73;
single_blink_color = (RGB){100, 100, 100};
- } else if (get_highest_layer(default_layer_state) == 2) { // WIN_BASE
+ } else if (get_highest_layer(default_layer_state) == 2) {
set_single_persistent_default_layer(0);
single_blink_time = timer_read32();
single_blink_cnt = 2;
@@ -341,18 +284,15 @@ void housekeeping_task_kb(void) {
break;
case NK_TOGG:
keymap_config.nkro = !keymap_config.nkro;
- eeconfig_update_keymap(keymap_config.raw);
+ eeconfig_update_keymap(&keymap_config);
single_blink_time = timer_read32();
single_blink_cnt = 6;
single_blink_index = 13;
single_blink_color = (RGB){100, 100, 100};
break;
case EE_CLR:
- // eeconfig_update_rgb_matrix_default();
-
- EE_CLR_blink_time = timer_read32();
- EE_CLR_blink_cnt = 6;
- // EE_CLR_blink_index = 64;
+ EE_CLR_blink_time = timer_read32();
+ EE_CLR_blink_cnt = 6;
EE_CLR_blink_color = (RGB){.r = 100, .g = 100, .b = 100};
break;
default:
@@ -365,15 +305,9 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
if (rgb_matrix_indicators_advanced_user(led_min, led_max) != true) {
return false;
}
- // rgb_matrix_set_color(73, 0, 0, 0);
- // rgb_matrix_set_color(74, 0, 0, 0);
-
- if (rgb_test_en) {
- rgb_matrix_set_color_all(rgb_test_color_table[rgb_test_index][0], rgb_test_color_table[rgb_test_index][1], rgb_test_color_table[rgb_test_index][2]);
- }
/*************************************************************************************/
- if (all_blink_cnt) { // 全键闪烁
+ if (all_blink_cnt) {
rgb_matrix_set_color_all(0, 0, 0);
if (timer_elapsed32(all_blink_time) > 300) {
all_blink_time = timer_read32();
@@ -384,7 +318,7 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
}
}
- if (single_blink_cnt) { // 单键闪烁
+ if (single_blink_cnt) {
if (timer_elapsed32(single_blink_time) > 300) {
single_blink_time = timer_read32();
single_blink_cnt--;
@@ -396,7 +330,7 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
}
}
/*************************************************************************************/
- if (EE_CLR_blink_cnt) { // 复位闪烁
+ if (EE_CLR_blink_cnt) {
if (EE_CLR_blink_cnt % 2) {
rgb_matrix_set_color(73, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
rgb_matrix_set_color(74, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
@@ -414,16 +348,15 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
eeconfig_update_rgb_matrix_default();
keyboard_config.rgb_mode = 0;
rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
- // rgb_matrix_set_color_all(RGB_BLUE);
rgb_matrix_config.hsv.h = 170;
- eeconfig_update_user(keyboard_config.raw); // Write default value to EEPROM now
+ eeconfig_update_user(keyboard_config.raw);
keymap_config.no_gui = 0;
keymap_config.nkro = 1;
- eeconfig_update_keymap(keymap_config.raw);
+ eeconfig_update_keymap(&keymap_config);
}
}
}
- /*************************************************************************************/
+
// caps lock red
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(72, 100, 100, 100);
@@ -433,6 +366,10 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
if (keymap_config.no_gui) {
rgb_matrix_set_color(61, 100, 100, 100);
+ } else {
+ if (!rgb_matrix_get_flags()) {
+ rgb_matrix_set_color(61, 0, 0, 0);
+ }
}
return true;
diff --git a/keyboards/hfdkb/8s200/8s200.h b/keyboards/hfdkb/8s200/8s200.h
index 42c5b29b0cd..5137826fd4a 100644
--- a/keyboards/hfdkb/8s200/8s200.h
+++ b/keyboards/hfdkb/8s200/8s200.h
@@ -7,5 +7,4 @@
enum user_keycodes {
SW_OS1 = QK_KB_0,
- RGB_TEST,
};
diff --git a/keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json b/keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json
deleted file mode 100644
index 0745088db71..00000000000
--- a/keyboards/hfdkb/8s200/8s200_via_v1_01_20250213.json
+++ /dev/null
@@ -1,234 +0,0 @@
-{
- "name": "AIRONE Pro",
- "vendorId": "0xFFFE",
- "productId": "0x0096",
- "keycodes": ["qmk_lighting"],
- "menus": [
- {
- "label": "Lighting",
- "content": [
- {
- "label": "Backlight",
- "content": [
- {
- "label": "Brightness",
- "type": "range",
- "options": [0, 200],
- "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
- },
- {
- "label": "Effect",
- "type": "dropdown",
- "content": ["id_qmk_rgb_matrix_effect", 3, 2],
- "options": [
- ["All Off", 0],
- ["SOLID_COLOR", 1],
- ["BREATHING", 2],
- ["CYCLE_ALL", 3],
- ["CYCLE_LEFT_RIGHT", 4],
- ["CYCLE_UP_DOWN", 5],
- ["RAINBOW_MOVING_CHEVRON", 6],
- ["CYCLE_OUT_IN", 7],
- ["CYCLE_OUT_IN_DUAL", 8],
- ["CYCLE_PINWHEEL", 9],
- ["CYCKE_SPIRAL", 10],
- ["DUAL_BEACON", 11],
- ["RAINBOW_BEACON", 12],
- ["RAINDROPS", 13],
- ["TYPING_HEATMAP", 14],
- ["SOLID_REACTIVE_SIMPLE", 15],
- ["SOLID_REACTIVE", 16],
- ["SOLID_REACTIVE_NEXUS", 17],
- ["MATRIX_MULTISPLASH", 18]
- ]
- },
- {
- "showIf": "{id_qmk_rgb_matrix_effect} != 0",
- "label": "Effect Speed",
- "type": "range",
- "options": [0, 255],
- "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
- },
- {
- "showIf": "{id_qmk_rgb_matrix_effect} != 0",
- "label": "Color",
- "type": "color",
- "content": ["id_qmk_rgb_matrix_color", 3, 4]
- }
- ]
- }
- ]
- }
- ],
- "matrix": { "rows": 5, "cols": 16 },
- "customKeycodes":[
- {"name":"BT DEV1","title":"BT_HOST1","shortName":"BT_HOST1"},
- {"name":"BT DEV2","title":"BT_HOST2","shortName":"BT_HOST2"},
- {"name":"BT DEV3","title":"BT_HOST3","shortName":"BT_HOST3"},
- {"name":"2.4G","title":"BT_2_4G","shortName":"BT_2_4G"},
- {"name":"USB","title":"BT_USB","shortName":"BT_USB"},
- {"name":"BT_VOL","title":"BT_VOL","shortName":"BT_VOL"}
- ],
- "layouts": {
- "keymap":[
- [
- {
- "c": "#AAAAAA"
- },
- "0,0",
- {
- "c": "#cccccc"
- },
- "0,1",
- "0,2",
- "0,3",
- "0,4",
- "0,5",
- "0,6",
- "0,7",
- "0,8",
- "0,9",
- "0,10",
- "0,11",
- "0,12",
- "0,13",
- {
- "c": "#AAAAAA"
- },
- "0,14",
- "0,15"
- ],
- [
- {
- "w": 1.5
- },
- "1,0",
- {
- "c": "#cccccc"
- },
- "1,1",
- "1,2",
- "1,3",
- "1,4",
- "1,5",
- "1,6",
- "1,7",
- "1,8",
- "1,9",
- "1,10",
- "1,11",
- "1,12",
- {
- "x": 0.25,
- "c": "#777777",
- "w": 1.25,
- "h": 2,
- "w2": 1.5,
- "h2": 1,
- "x2": -0.25
- },
- "2,14",
- {
- "c": "#AAAAAA"
- },
- "1,15"
- ],
- [
- {
- "w": 1.75
- },
- "2,0",
- {
- "c": "#cccccc"
- },
- "2,1",
- "2,2",
- "2,3",
- "2,4",
- "2,5",
- "2,6",
- "2,7",
- "2,8",
- "2,9",
- "2,10",
- "2,11",
- "2,12",
- {
- "x": 1.25,
- "c": "#AAAAAA"
- },
- "2,15"
- ],
- [
- {
- "w": 2
- },
- "3,0",
- {
- "c": "#cccccc"
- },
- "3,2",
- "3,3",
- "3,4",
- "3,5",
- "3,6",
- "3,7",
- "3,8",
- "3,9",
- "3,10",
- "3,11",
- "3,12",
- {
- "c": "#AAAAAA"
- },
- "3,13",
- {
- "c": "#777777"
- },
- "3,14",
- {
- "c": "#AAAAAA"
- },
- "3,15"
- ],
- [
- {
- "w": 1.25
- },
- "4,0",
- {
- "w": 1.25
- },
- "4,1",
- {
- "w": 1.25
- },
- "4,2",
- "4,3",
- {
- "w": 3.5
- },
- "4,6",
- "4,9",
- {
- "w": 1.25
- },
- "4,10",
- {
- "w": 1.25
- },
- "4,11",
- {
- "w": 1.25
- },
- "4,12",
- {
- "c": "#777777"
- },
- "4,13",
- "4,14",
- "4,15"
- ]
- ]
- }
- }
diff --git a/keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json b/keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json
deleted file mode 100644
index b9f65b94277..00000000000
--- a/keyboards/hfdkb/8s200/8s200_via_v1_06_20250613.json
+++ /dev/null
@@ -1,224 +0,0 @@
-{
- "name": "AIRONE PRO",
- "vendorId": "0xFFFE",
- "productId": "0x0096",
- "keycodes": ["qmk_lighting"],
- "menus": [
- {
- "label": "Lighting",
- "content": [
- {
- "label": "Backlight",
- "content": [
- {
- "label": "Brightness",
- "type": "range",
- "options": [0, 200],
- "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
- },
- {
- "label": "Effect",
- "type": "dropdown",
- "content": ["id_qmk_rgb_matrix_effect", 3, 2],
- "options": [
- ["All Off", 0],
- ["MATRIX_SOLID_COLOR", 1],
- ["BREATHING", 2],
- ["CYCLE_LEFT_RIGHT", 3],
- ["RAINBOW_MOVING_CHEVRON", 4],
- ["CYCLE_OUT_IN_DUAL", 5],
- ["DUAL_BEACON", 6],
- ["RAINBOW_BEACON", 7],
- ["RAINDROPS", 8],
- ["SOLID_REACTIVE", 16]
- ]
- },
- {
- "showIf": "{id_qmk_rgb_matrix_effect} != 0",
- "label": "Effect Speed",
- "type": "range",
- "options": [0, 255],
- "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
- },
- {
- "showIf": "{id_qmk_rgb_matrix_effect} != 0",
- "label": "Color",
- "type": "color",
- "content": ["id_qmk_rgb_matrix_color", 3, 4]
- }
- ]
- }
- ]
- }
- ],
- "customKeycodes":[
- {"name":"SW_OS1","title":"Switch OS between Mac and Windows","shortName":"SW_OS1"}
- ],
- "matrix": { "rows": 5, "cols": 16 },
- "layouts": {
- "keymap":[
- [
- {
- "c": "#777777"
- },
- "0,0",
- {
- "c": "#cccccc"
- },
- "0,1",
- "0,2",
- "0,3",
- "0,4",
- "0,5",
- "0,6",
- "0,7",
- "0,8",
- "0,9",
- "0,10",
- "0,11",
- "0,12",
- "0,13",
- {
- "c": "#AAAAAA"
- },
- "0,14",
- "0,15"
- ],
- [
- {
- "w": 1.5
- },
- "1,0",
- {
- "c": "#cccccc"
- },
- "1,1",
- "1,2",
- "1,3",
- "1,4",
- "1,5",
- "1,6",
- "1,7",
- "1,8",
- "1,9",
- "1,10",
- "1,11",
- "1,12",
- {
- "x": 0.25,
- "c": "#777777",
- "w": 1.25,
- "h": 2,
- "w2": 1.5,
- "h2": 1,
- "x2": -0.25
- },
- "2,14",
- {
- "c": "#AAAAAA"
- },
- "1,15"
- ],
- [
- {
- "w": 1.75
- },
- "2,0",
- {
- "c": "#cccccc"
- },
- "2,1",
- "2,2",
- "2,3",
- "2,4",
- "2,5",
- "2,6",
- "2,7",
- "2,8",
- "2,9",
- "2,10",
- "2,11",
- "2,12",
- {
- "x": 1.25,
- "c": "#AAAAAA"
- },
- "2,15"
- ],
- [
- {
- "w": 2
- },
- "3,0",
- {
- "c": "#cccccc"
- },
- "3,2",
- "3,3",
- "3,4",
- "3,5",
- "3,6",
- "3,7",
- "3,8",
- "3,9",
- "3,10",
- "3,11",
- "3,12",
- {
- "c": "#AAAAAA"
- },
- "3,13",
- {
- "c": "#777777"
- },
- "3,14",
- {
- "c": "#AAAAAA"
- },
- "3,15"
- ],
- [
- {
- "w": 1.25
- },
- "4,0",
- {
- "w": 1.25
- },
- "4,1",
- {
- "w": 1.25
- },
- "4,2",
- "4,3",
- {
- "w": 3.5,
- "c": "#cccccc"
- },
- "4,6",
- {
- "c": "#AAAAAA"
- },
- "4,9",
- {
- "w": 1.25
- },
- "4,10",
- {
- "w": 1.25
- },
- "4,11",
- {
- "w": 1.25
- },
- "4,12",
- {
- "c": "#777777"
- },
- "4,13",
- "4,14",
- "4,15"
- ]
- ]
- }
- }
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index 054f67e1bd6..88e580f796f 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -24,9 +24,9 @@
#define RGB_DRIVER_EN_PIN B2
/* I2C Config for LED Driver */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110100
-#define DRIVER_ADDR_2 0b1110111
+#define IS31FL3733_DRIVER_COUNT 2
+#define IS31FL3733_I2C_ADDRESS_1 0b1110100
+#define IS31FL3733_I2C_ADDRESS_2 0b1110111
#define I2C1_SDA_PIN B7
#define I2C1_SCL_PIN B6
#define I2C1_SCL_PAL_MODE 4
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index 457c38d9ba7..baaadba63e6 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -37,7 +37,7 @@
}
},
"rgb_matrix": {
- "driver": "is31fl3731",
+ "driver": "is31fl3733",
"max_brightness": 180,
"val_steps": 45,
"speed_steps": 57,
@@ -150,7 +150,7 @@
]
},
"layouts": {
- "LAYOUT_ansi": {
+ "LAYOUT_72_jis": {
"layout": [
{ "matrix": [0,0], "x": 0, "y":0 },
{ "matrix": [0,1], "x": 1, "y":0 },
diff --git a/keyboards/hfdkb/8s200/keymaps/default/keymap.c b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
index 7599ed7ef50..9d43608094e 100644
--- a/keyboards/hfdkb/8s200/keymaps/default/keymap.c
+++ b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
@@ -1,57 +1,72 @@
-// Copyright 2023 JoyLee (@itarze)
-// SPDX-License-Identifier: GPL-2.0-or-later
+/* Copyright 2022 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
#include QMK_KEYBOARD_H
+#include "keymap_japanese.h"
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬────┐
- * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│INS│HOME│DEL |
- * ├───├───├───├───├───├───├───├───├───├───├───├───├───├───┴────├────┤
- * │` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp │PGUP│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤────┤
- * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PGDN│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤────┤
- * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │END │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─────┬───┘────┤
- * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ ↑ │ICON│
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬────┼───┼────┤
- * │Ctrl│GUI │Alt │ │Alt│Ctl│FN │ ← │ ↓ │ → │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴────┴───┴────┘
- */
- [0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_DEL,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, _______,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-
- [1] = LAYOUT_all(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
- [2] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
- [3] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ MAC_BASE,
+ MAC_FN,
+ FUNCTION,
+ RESERVED,
+};
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[WIN_BASE] = LAYOUT_72_jis( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[WIN_FN] = LAYOUT_72_jis( /* FN */
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
+ _______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, MO(FUNCTION), _______, _______, RM_SPDD, RM_VALD, RM_SPDU),
+
+[MAC_BASE] = LAYOUT_72_jis( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[MAC_FN] = LAYOUT_72_jis( /* FN */
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
+ _______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
+ _______, _______, _______, _______, _______, MO(FUNCTION), _______, _______, _______, RM_SPDD, RM_VALD, RM_SPDU),
+
+[FUNCTION] = LAYOUT_72_jis( /* Function keys */
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+[RESERVED] = LAYOUT_72_jis( /* Rerserved layer */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
From 7f8100c8fa6fa0d3757f03a9518bd8522c2d0926 Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Thu, 3 Jul 2025 10:09:34 +0800
Subject: [PATCH 03/23] Refacted some codes
---
keyboards/hfdkb/8s200/8s200.c | 67 +++++++++----------
keyboards/hfdkb/8s200/8s200.h | 19 +++++-
keyboards/hfdkb/8s200/config.h | 14 ++--
keyboards/hfdkb/8s200/halconf.h | 2 -
keyboards/hfdkb/8s200/keyboard.json | 12 +---
.../hfdkb/8s200/keymaps/default/keymap.c | 62 ++++++++---------
keyboards/hfdkb/8s200/readme.md | 24 +++++++
7 files changed, 112 insertions(+), 88 deletions(-)
create mode 100644 keyboards/hfdkb/8s200/readme.md
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 73f00c6de5c..7124c6f4a25 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022 jonylee@hfd
+/* Copyright (C) 2025 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -103,8 +103,8 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{1, SW6_CS4, SW5_CS4, SW4_CS4},
{0, SW12_CS2, SW11_CS2, SW10_CS2},
- {1, SW6_CS10, SW5_CS10, SW4_CS10},
- {1, SW6_CS11, SW5_CS11, SW4_CS11},
+ {1, SW4_CS10, SW5_CS10, SW6_CS10},
+ {1, SW4_CS11, SW5_CS11, SW6_CS11},
};
#endif
@@ -112,31 +112,24 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
typedef union {
uint32_t raw;
struct {
- bool first_boot;
uint8_t rgb_mode;
};
} keyboard_config_t;
keyboard_config_t keyboard_config;
-uint32_t long_pressed_time;
-uint16_t long_pressed_keycode;
-uint8_t all_blink_cnt;
-uint32_t all_blink_time;
-RGB all_blink_color;
-uint8_t single_blink_cnt;
-uint8_t single_blink_index;
-RGB single_blink_color;
-uint32_t single_blink_time;
-uint8_t EE_CLR_blink_cnt;
-RGB EE_CLR_blink_color;
-uint32_t EE_CLR_blink_time;
+static uint32_t long_pressed_time;
+static uint16_t long_pressed_keycode;
+static uint8_t all_blink_cnt;
+static uint32_t all_blink_time;
+static RGB all_blink_color;
+static uint8_t single_blink_cnt;
+static uint8_t single_blink_index;
+static RGB single_blink_color;
+static uint32_t single_blink_time;
+static uint8_t EE_CLR_blink_cnt;
+static RGB EE_CLR_blink_color;
+static uint32_t EE_CLR_blink_time;
-const uint8_t rgb_test_color_table[][3] = {
- {RGB_WHITE},
- {RGB_RED},
- {RGB_GREEN},
- {RGB_BLUE},
-};
// clang-format off
static uint8_t rgb_matrix_effects_table[] = {
RGB_MATRIX_BREATHING,
@@ -149,6 +142,9 @@ static uint8_t rgb_matrix_effects_table[] = {
RGB_MATRIX_RAINDROPS,
RGB_MATRIX_SOLID_REACTIVE,
};
+
+#define RGB_MATRIX_EFFECTS_COUNT (sizeof(rgb_matrix_effects_table) / sizeof(rgb_matrix_effects_table[0]))
+
// clang-format on
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (process_record_user(keycode, record) != true) {
@@ -198,11 +194,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
case RM_NEXT:
if (record->event.pressed) {
keyboard_config.rgb_mode++;
- if (keyboard_config.rgb_mode > (sizeof(rgb_matrix_effects_table) / sizeof(rgb_matrix_effects_table[0]))) {
+ if (keyboard_config.rgb_mode > RGB_MATRIX_EFFECTS_COUNT) {
keyboard_config.rgb_mode = 0;
}
eeconfig_update_user(keyboard_config.raw);
- if (keyboard_config.rgb_mode == 9) {
+ if (keyboard_config.rgb_mode == RGB_MATRIX_EFFECTS_COUNT) {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
} else {
@@ -213,7 +209,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return false;
case QK_RGB_MATRIX_TOGGLE:
if (record->event.pressed) {
- if (keyboard_config.rgb_mode == 9) {
+ if (keyboard_config.rgb_mode == RGB_MATRIX_EFFECTS_COUNT) {
return false;
}
switch (rgb_matrix_get_flags()) {
@@ -237,6 +233,13 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return true;
}
+void eeconfig_init_kb() {
+ rgb_matrix_config.hsv.h = 170;
+ eeconfig_update_user(keyboard_config.raw);
+
+ eeconfig_init_user();
+}
+
void matrix_init_kb(void) {
#ifdef RGB_DRIVER_SDB_PIN
setPinOutputOpenDrain(RGB_DRIVER_SDB_PIN);
@@ -248,7 +251,7 @@ void matrix_init_kb(void) {
void keyboard_post_init_kb() {
keyboard_config.raw = eeconfig_read_user();
rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
- if (keyboard_config.rgb_mode == 9) {
+ if (keyboard_config.rgb_mode == RGB_MATRIX_EFFECTS_COUNT) {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
}
@@ -256,12 +259,6 @@ void keyboard_post_init_kb() {
}
void housekeeping_task_kb(void) {
- if (!keyboard_config.first_boot) {
- keyboard_config.first_boot = 1;
- rgb_matrix_config.hsv.h = 170;
- eeconfig_update_user(keyboard_config.raw);
- }
-
if ((timer_elapsed32(long_pressed_time) > 2000) && (long_pressed_time)) {
long_pressed_time = 0;
switch (long_pressed_keycode) {
@@ -299,6 +296,8 @@ void housekeeping_task_kb(void) {
break;
}
}
+
+ housekeeping_task_user();
}
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
@@ -306,7 +305,6 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
return false;
}
- /*************************************************************************************/
if (all_blink_cnt) {
rgb_matrix_set_color_all(0, 0, 0);
if (timer_elapsed32(all_blink_time) > 300) {
@@ -329,7 +327,7 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(single_blink_index, 0, 0, 0);
}
}
- /*************************************************************************************/
+
if (EE_CLR_blink_cnt) {
if (EE_CLR_blink_cnt % 2) {
rgb_matrix_set_color(73, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
@@ -364,6 +362,7 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(72, 0, 0, 0);
}
+ // GUI lock white
if (keymap_config.no_gui) {
rgb_matrix_set_color(61, 100, 100, 100);
} else {
diff --git a/keyboards/hfdkb/8s200/8s200.h b/keyboards/hfdkb/8s200/8s200.h
index 5137826fd4a..5e554b9b8cb 100644
--- a/keyboards/hfdkb/8s200/8s200.h
+++ b/keyboards/hfdkb/8s200/8s200.h
@@ -1,10 +1,23 @@
-// Copyright 2023 JoyLee (@itarze)
-// SPDX-License-Identifier: GPL-2.0-or-later
+/* Copyright (C) 2025 jonylee@hfd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 .
+ */
#pragma once
#include "quantum.h"
enum user_keycodes {
- SW_OS1 = QK_KB_0,
+ SW_OS1 = SAFE_RANGE,
};
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index 88e580f796f..d4c9fd7eb41 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* Use 6 dynamic keymap layers */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 6
-
-#define RGB_DRIVER_SDB_PIN A15
-
-#define RGB_DRIVER_EN_PIN B2
-
/* I2C Config for LED Driver */
#define IS31FL3733_DRIVER_COUNT 2
#define IS31FL3733_I2C_ADDRESS_1 0b1110100
@@ -33,6 +26,10 @@
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000
+#define RGB_DRIVER_SDB_PIN A15
+
+#define RGB_DRIVER_EN_PIN B2
+
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
@@ -41,3 +38,6 @@
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
+
+/* Use 6 dynamic keymap layers */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
diff --git a/keyboards/hfdkb/8s200/halconf.h b/keyboards/hfdkb/8s200/halconf.h
index 11715fe3156..b25fa8815fa 100644
--- a/keyboards/hfdkb/8s200/halconf.h
+++ b/keyboards/hfdkb/8s200/halconf.h
@@ -18,7 +18,5 @@
#define HAL_USE_I2C TRUE
#define HAL_USE_SPI TRUE
-#define SPI_USE_WAIT TRUE
-#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index baaadba63e6..7d6da6582e7 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -13,8 +13,6 @@
"diode_direction": "ROW2COL",
"features": {
"bootmagic": true,
- "command": false,
- "console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
@@ -47,21 +45,13 @@
"animations": {
"solid_color": false,
"breathing": true,
- "cycle_all": false,
"cycle_left_right": true,
- "cycle_up_down": false,
- "cycle_out_in": false,
"cycle_out_in_dual": true,
"rainbow_moving_chevron": true,
- "cycle_pinwheel": false,
- "cycle_spiral": false,
"dual_beacon": true,
"rainbow_beacon": true,
"raindrops": true,
- "typing_heatmap": false,
- "solid_reactive_simple": false,
- "solid_reactive": true,
- "multisplash": false
+ "solid_reactive": true
},
"default": {
"speed": 141
diff --git a/keyboards/hfdkb/8s200/keymaps/default/keymap.c b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
index 9d43608094e..b35a05d558c 100644
--- a/keyboards/hfdkb/8s200/keymaps/default/keymap.c
+++ b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright (C) 2025 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,51 +19,51 @@
enum layers {
WIN_BASE,
- WIN_FN,
+ _FN1,
MAC_BASE,
- MAC_FN,
- FUNCTION,
- RESERVED,
+ _FN2,
+ _FN3,
+ _FN4,
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[WIN_BASE] = LAYOUT_72_jis( /* Base */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_DEL,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+[WIN_BASE] = LAYOUT_72_jis(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[WIN_FN] = LAYOUT_72_jis( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
- _______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
- _______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
- _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
- _______, GU_TOGG, _______, _______, _______, _______, MO(FUNCTION), _______, _______, RM_SPDD, RM_VALD, RM_SPDU),
+[_FN1] = LAYOUT_72_jis(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
+ _______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, MO(_FN3),_______, _______, RM_SPDD, RM_VALD, RM_SPDU),
-[MAC_BASE] = LAYOUT_72_jis( /* Base */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_DEL,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+[MAC_BASE] = LAYOUT_72_jis(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, JP_YEN, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN2),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[MAC_FN] = LAYOUT_72_jis( /* FN */
- KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
- _______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
- _______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
- _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
- _______, _______, _______, _______, _______, MO(FUNCTION), _______, _______, _______, RM_SPDD, RM_VALD, RM_SPDU),
+[_FN2] = LAYOUT_72_jis(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
+ _______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
+ _______, _______, _______, _______, _______, MO(_FN3),_______, _______, _______, RM_SPDD, RM_VALD, RM_SPDU),
-[FUNCTION] = LAYOUT_72_jis( /* Function keys */
+[_FN3] = LAYOUT_72_jis(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-[RESERVED] = LAYOUT_72_jis( /* Rerserved layer */
+[_FN4] = LAYOUT_72_jis(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/hfdkb/8s200/readme.md b/keyboards/hfdkb/8s200/readme.md
new file mode 100644
index 00000000000..f7172ccb6ca
--- /dev/null
+++ b/keyboards/hfdkb/8s200/readme.md
@@ -0,0 +1,24 @@
+# 8s200
+
+This is a customizable 65% and jis keyboard.
+
+* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
+* Hardware Supported: 8s200
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hfdkb/8s200:default
+
+Flashing example for this keyboard:
+
+ make hfdkb/8s200:default:flash
+
+
+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:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the button on the back of the PCB
From 65c5a7a1eafa089eed34bcba299f5c482696e7ce Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Fri, 4 Jul 2025 10:01:38 +0800
Subject: [PATCH 04/23] Initialize the keyboard_config to zero
---
keyboards/hfdkb/8s200/8s200.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 7124c6f4a25..823646c0914 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -235,6 +235,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
void eeconfig_init_kb() {
rgb_matrix_config.hsv.h = 170;
+ keyboard_config.raw = 0;
eeconfig_update_user(keyboard_config.raw);
eeconfig_init_user();
From bbb1d764fe2da17abb6442fae9e14e6fbbbde34e Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Fri, 4 Jul 2025 16:47:40 +0800
Subject: [PATCH 05/23] Added picture and link for 8s200
---
keyboards/hfdkb/8s200/readme.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/keyboards/hfdkb/8s200/readme.md b/keyboards/hfdkb/8s200/readme.md
index f7172ccb6ca..dbe117a909b 100644
--- a/keyboards/hfdkb/8s200/readme.md
+++ b/keyboards/hfdkb/8s200/readme.md
@@ -1,9 +1,12 @@
# 8s200
+
+
This is a customizable 65% and jis keyboard.
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
* Hardware Supported: 8s200
+* Hardware Availability: [Mistel AIRONE PRO Black-JIS keyboard](https://mistelkeyboard.com/products/2a25e7752bf9a3d8e66548816250028a)
Make example for this keyboard (after setting up your build environment):
From 5b7e69c121a8384183c5e78510e8a8d698684e6c Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Fri, 4 Jul 2025 17:04:46 +0800
Subject: [PATCH 06/23] Updated the picture link
---
keyboards/hfdkb/8s200/readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/readme.md b/keyboards/hfdkb/8s200/readme.md
index dbe117a909b..879b1b32262 100644
--- a/keyboards/hfdkb/8s200/readme.md
+++ b/keyboards/hfdkb/8s200/readme.md
@@ -1,6 +1,6 @@
# 8s200
-
+
This is a customizable 65% and jis keyboard.
From 329775594335ec2e55cbe45e9a573486b94b4ef8 Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Fri, 4 Jul 2025 17:07:17 +0800
Subject: [PATCH 07/23] Back to origional picture link
---
keyboards/hfdkb/8s200/readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/readme.md b/keyboards/hfdkb/8s200/readme.md
index 879b1b32262..dbe117a909b 100644
--- a/keyboards/hfdkb/8s200/readme.md
+++ b/keyboards/hfdkb/8s200/readme.md
@@ -1,6 +1,6 @@
# 8s200
-
+
This is a customizable 65% and jis keyboard.
From 121eb2b79dc3aa1924e84616d7a3b95f0c6dd6a4 Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Fri, 4 Jul 2025 17:17:26 +0800
Subject: [PATCH 08/23] Updated the picture link
---
keyboards/hfdkb/8s200/readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/readme.md b/keyboards/hfdkb/8s200/readme.md
index dbe117a909b..113c8c8ef4f 100644
--- a/keyboards/hfdkb/8s200/readme.md
+++ b/keyboards/hfdkb/8s200/readme.md
@@ -1,6 +1,6 @@
# 8s200
-
+
This is a customizable 65% and jis keyboard.
From 5b791829ef3e575714cdd8e711272adf585b04e2 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Sun, 6 Jul 2025 18:24:53 +0800
Subject: [PATCH 09/23] Update keyboards/hfdkb/8s200/8s200.c
Co-authored-by: Drashna Jaelre
---
keyboards/hfdkb/8s200/8s200.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 823646c0914..ac3c900d747 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -241,12 +241,12 @@ void eeconfig_init_kb() {
eeconfig_init_user();
}
-void matrix_init_kb(void) {
+void keyboard_pre_init_kb(void) {
#ifdef RGB_DRIVER_SDB_PIN
- setPinOutputOpenDrain(RGB_DRIVER_SDB_PIN);
- writePinHigh(RGB_DRIVER_SDB_PIN);
+ gpio_set_pin_output_open_drain(RGB_DRIVER_SDB_PIN);
+ gpio_write_pin_high(RGB_DRIVER_SDB_PIN);
#endif
- matrix_init_user();
+ keyboard_pre_init_user();
}
void keyboard_post_init_kb() {
From 436bbfc014165d9dff84d9a95aa0d771137c85cc Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Sun, 6 Jul 2025 18:25:04 +0800
Subject: [PATCH 10/23] Update keyboards/hfdkb/8s200/8s200.h
Co-authored-by: Drashna Jaelre
---
keyboards/hfdkb/8s200/8s200.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/8s200.h b/keyboards/hfdkb/8s200/8s200.h
index 5e554b9b8cb..c43f568c475 100644
--- a/keyboards/hfdkb/8s200/8s200.h
+++ b/keyboards/hfdkb/8s200/8s200.h
@@ -19,5 +19,5 @@
#include "quantum.h"
enum user_keycodes {
- SW_OS1 = SAFE_RANGE,
+ SW_OS1 = QK_KB,
};
From 18961b319d15fcfac644043b45bad404b2c9f534 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:21:43 +0800
Subject: [PATCH 11/23] Update keyboards/hfdkb/8s200/8s200.c
Co-authored-by: Drashna Jaelre
---
keyboards/hfdkb/8s200/8s200.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index ac3c900d747..8eea435b289 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -234,7 +234,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
}
void eeconfig_init_kb() {
- rgb_matrix_config.hsv.h = 170;
keyboard_config.raw = 0;
eeconfig_update_user(keyboard_config.raw);
From a7344a4932d88a3b0f79d3656d91ebcb15cb51ac Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:22:01 +0800
Subject: [PATCH 12/23] Update keyboards/hfdkb/8s200/config.h
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/config.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index d4c9fd7eb41..a5daae236ec 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -38,6 +38,3 @@
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
-
-/* Use 6 dynamic keymap layers */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 6
From 0695a9dd87d3d26fa8dcc6b3cf48af347b3380f8 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:22:12 +0800
Subject: [PATCH 13/23] Update keyboards/hfdkb/8s200/keyboard.json
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/keyboard.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index 7d6da6582e7..b6582e5704c 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -43,7 +43,6 @@
"react_on_keyup": true,
"sleep": true,
"animations": {
- "solid_color": false,
"breathing": true,
"cycle_left_right": true,
"cycle_out_in_dual": true,
From 264f70adaaf43079e3d8855737b22357157393fa Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:22:58 +0800
Subject: [PATCH 14/23] Update keyboards/hfdkb/8s200/config.h
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/config.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index a5daae236ec..7fd5639ea39 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -18,8 +18,11 @@
/* I2C Config for LED Driver */
#define IS31FL3733_DRIVER_COUNT 2
-#define IS31FL3733_I2C_ADDRESS_1 0b1110100
-#define IS31FL3733_I2C_ADDRESS_2 0b1110111
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_SCL_GND
+#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_SCL_VCC
+#define IS31FL3733_SDB_PIN A15
+
+
#define I2C1_SDA_PIN B7
#define I2C1_SCL_PIN B6
#define I2C1_SCL_PAL_MODE 4
From 55102f2ff69e242e9a3b0ec6eb85d8cf6cd68189 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:23:22 +0800
Subject: [PATCH 15/23] Update keyboards/hfdkb/8s200/config.h
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/config.h | 4 ----
1 file changed, 4 deletions(-)
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index 7fd5639ea39..0774cbb2eff 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -23,10 +23,6 @@
#define IS31FL3733_SDB_PIN A15
-#define I2C1_SDA_PIN B7
-#define I2C1_SCL_PIN B6
-#define I2C1_SCL_PAL_MODE 4
-#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000
#define RGB_DRIVER_SDB_PIN A15
From 2f2455fda49bdd868faed27bef8e9dfefc97ed38 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:23:33 +0800
Subject: [PATCH 16/23] Update keyboards/hfdkb/8s200/config.h
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/config.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index 0774cbb2eff..d47e21b643b 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -24,9 +24,6 @@
#define I2C1_CLOCK_SPEED 400000
-
-#define RGB_DRIVER_SDB_PIN A15
-
#define RGB_DRIVER_EN_PIN B2
/* SPI Config for spi flash*/
From 7ac8b0685628b4a7d55f8bb77ef76ba0ec23dc1f Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:23:46 +0800
Subject: [PATCH 17/23] Update keyboards/hfdkb/8s200/config.h
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/config.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index d47e21b643b..a604d816cbd 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -17,7 +17,6 @@
#pragma once
/* I2C Config for LED Driver */
-#define IS31FL3733_DRIVER_COUNT 2
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_SCL_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_SCL_VCC
#define IS31FL3733_SDB_PIN A15
From 80ecf62f08bc005d831ff2c70b04ee812f525737 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:23:56 +0800
Subject: [PATCH 18/23] Update keyboards/hfdkb/8s200/keyboard.json
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/keyboard.json | 3 ---
1 file changed, 3 deletions(-)
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index b6582e5704c..85ca9f9762b 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -37,9 +37,6 @@
"rgb_matrix": {
"driver": "is31fl3733",
"max_brightness": 180,
- "val_steps": 45,
- "speed_steps": 57,
- "hue_steps": 32,
"react_on_keyup": true,
"sleep": true,
"animations": {
From ea203947a3c85a1512a08a67e8ea52d64a38591a Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:24:06 +0800
Subject: [PATCH 19/23] Update keyboards/hfdkb/8s200/keyboard.json
Co-authored-by: Drashna Jaelre
---
keyboards/hfdkb/8s200/keyboard.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index 85ca9f9762b..9358f440df8 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -50,6 +50,7 @@
"solid_reactive": true
},
"default": {
+ "hue": 170,
"speed": 141
},
"layout": [
From 6965bb744077a3898708811a86dfb8f59c87ff8c Mon Sep 17 00:00:00 2001
From: galican <2831039915@qq.com>
Date: Mon, 7 Jul 2025 14:53:38 +0800
Subject: [PATCH 20/23] Removed 8s200.h. Replaced the rbg matrix deriver with
snled27351 according to actual schematic diagram. Removed all ''blink' and
"rgb_matrix_effect_table" logic. Removed unused pin definiton like
RGB_DRIVER_SDB_PIN and RGB_DRIVER_EN_PIN.
---
keyboards/hfdkb/8s200/8s200.c | 365 ++++--------------
keyboards/hfdkb/8s200/8s200.h | 23 --
keyboards/hfdkb/8s200/config.h | 8 +-
keyboards/hfdkb/8s200/keyboard.json | 5 +-
.../hfdkb/8s200/keymaps/default/keymap.c | 4 +-
5 files changed, 84 insertions(+), 321 deletions(-)
delete mode 100644 keyboards/hfdkb/8s200/8s200.h
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 8eea435b289..284d360bfc2 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -18,200 +18,104 @@
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
- {1, SW3_CS1, SW2_CS1, SW1_CS1},
- {1, SW3_CS2, SW2_CS2, SW1_CS2},
- {1, SW3_CS3, SW2_CS3, SW1_CS3},
- {1, SW3_CS4, SW2_CS4, SW1_CS4},
- {1, SW3_CS5, SW2_CS5, SW1_CS5},
- {1, SW3_CS6, SW2_CS6, SW1_CS6},
- {1, SW3_CS7, SW2_CS7, SW1_CS7},
- {1, SW3_CS8, SW2_CS8, SW1_CS8},
- {1, SW3_CS9, SW2_CS9, SW1_CS9},
- {1, SW3_CS10, SW2_CS10, SW1_CS10},
- {1, SW3_CS11, SW2_CS11, SW1_CS11},
- {1, SW3_CS12, SW2_CS12, SW1_CS12},
- {1, SW3_CS13, SW2_CS13, SW1_CS13},
- {1, SW3_CS14, SW2_CS14, SW1_CS14},
- {1, SW3_CS15, SW2_CS15, SW1_CS15},
- {1, SW3_CS16, SW2_CS16, SW1_CS16},
+ {1, CB3_CA1, CB2_CA1, CB1_CA1},
+ {1, CB3_CA2, CB2_CA2, CB1_CA2},
+ {1, CB3_CA3, CB2_CA3, CB1_CA3},
+ {1, CB3_CA4, CB2_CA4, CB1_CA4},
+ {1, CB3_CA5, CB2_CA5, CB1_CA5},
+ {1, CB3_CA6, CB2_CA6, CB1_CA6},
+ {1, CB3_CA7, CB2_CA7, CB1_CA7},
+ {1, CB3_CA8, CB2_CA8, CB1_CA8},
+ {1, CB3_CA9, CB2_CA9, CB1_CA9},
+ {1, CB3_CA10, CB2_CA10, CB1_CA10},
+ {1, CB3_CA11, CB2_CA11, CB1_CA11},
+ {1, CB3_CA12, CB2_CA12, CB1_CA12},
+ {1, CB3_CA13, CB2_CA13, CB1_CA13},
+ {1, CB3_CA14, CB2_CA14, CB1_CA14},
+ {1, CB3_CA15, CB2_CA15, CB1_CA15},
+ {1, CB3_CA16, CB2_CA16, CB1_CA16},
- {0, SW6_CS1, SW5_CS1, SW4_CS1},
- {0, SW6_CS2, SW5_CS2, SW4_CS2},
- {0, SW6_CS3, SW5_CS3, SW4_CS3},
- {0, SW6_CS4, SW5_CS4, SW4_CS4},
- {0, SW6_CS5, SW5_CS5, SW4_CS5},
- {0, SW6_CS6, SW5_CS6, SW4_CS6},
- {0, SW6_CS7, SW5_CS7, SW4_CS7},
- {0, SW6_CS8, SW5_CS8, SW4_CS8},
- {0, SW6_CS9, SW5_CS9, SW4_CS9},
- {0, SW6_CS10, SW5_CS10, SW4_CS10},
- {0, SW6_CS11, SW5_CS11, SW4_CS11},
- {0, SW6_CS12, SW5_CS12, SW4_CS12},
- {0, SW6_CS13, SW5_CS13, SW4_CS13},
- {1, SW6_CS1, SW5_CS1, SW4_CS1},
+ {0, CB6_CA1, CB5_CA1, CB4_CA1},
+ {0, CB6_CA2, CB5_CA2, CB4_CA2},
+ {0, CB6_CA3, CB5_CA3, CB4_CA3},
+ {0, CB6_CA4, CB5_CA4, CB4_CA4},
+ {0, CB6_CA5, CB5_CA5, CB4_CA5},
+ {0, CB6_CA6, CB5_CA6, CB4_CA6},
+ {0, CB6_CA7, CB5_CA7, CB4_CA7},
+ {0, CB6_CA8, CB5_CA8, CB4_CA8},
+ {0, CB6_CA9, CB5_CA9, CB4_CA9},
+ {0, CB6_CA10, CB5_CA10, CB4_CA10},
+ {0, CB6_CA11, CB5_CA11, CB4_CA11},
+ {0, CB6_CA12, CB5_CA12, CB4_CA12},
+ {0, CB6_CA13, CB5_CA13, CB4_CA13},
+ {1, CB6_CA1, CB5_CA1, CB4_CA1},
- {0, SW9_CS1, SW8_CS1, SW7_CS1},
- {0, SW9_CS2, SW8_CS2, SW7_CS2},
- {0, SW9_CS3, SW8_CS3, SW7_CS3},
- {0, SW9_CS4, SW8_CS4, SW7_CS4},
- {0, SW9_CS5, SW8_CS5, SW7_CS5},
- {0, SW9_CS6, SW8_CS6, SW7_CS6},
- {0, SW9_CS7, SW8_CS7, SW7_CS7},
- {0, SW9_CS8, SW8_CS8, SW7_CS8},
- {0, SW9_CS9, SW8_CS9, SW7_CS9},
- {0, SW9_CS10, SW8_CS10, SW7_CS10},
- {0, SW9_CS11, SW8_CS11, SW7_CS11},
- {0, SW9_CS12, SW8_CS12, SW7_CS12},
- {0, SW9_CS13, SW8_CS13, SW7_CS13},
- {1, SW6_CS5, SW5_CS5, SW4_CS5},
- {1, SW6_CS2, SW5_CS2, SW4_CS2},
+ {0, CB9_CA1, CB8_CA1, CB7_CA1},
+ {0, CB9_CA2, CB8_CA2, CB7_CA2},
+ {0, CB9_CA3, CB8_CA3, CB7_CA3},
+ {0, CB9_CA4, CB8_CA4, CB7_CA4},
+ {0, CB9_CA5, CB8_CA5, CB7_CA5},
+ {0, CB9_CA6, CB8_CA6, CB7_CA6},
+ {0, CB9_CA7, CB8_CA7, CB7_CA7},
+ {0, CB9_CA8, CB8_CA8, CB7_CA8},
+ {0, CB9_CA9, CB8_CA9, CB7_CA9},
+ {0, CB9_CA10, CB8_CA10, CB7_CA10},
+ {0, CB9_CA11, CB8_CA11, CB7_CA11},
+ {0, CB9_CA12, CB8_CA12, CB7_CA12},
+ {0, CB9_CA13, CB8_CA13, CB7_CA13},
+ {1, CB6_CA5, CB5_CA5, CB4_CA5},
+ {1, CB6_CA2, CB5_CA2, CB4_CA2},
- {0, SW12_CS1, SW11_CS1, SW10_CS1},
- {0, SW12_CS3, SW11_CS3, SW10_CS3},
- {0, SW12_CS4, SW11_CS4, SW10_CS4},
- {0, SW12_CS5, SW11_CS5, SW10_CS5},
- {0, SW12_CS6, SW11_CS6, SW10_CS6},
- {0, SW12_CS7, SW11_CS7, SW10_CS7},
- {0, SW12_CS8, SW11_CS8, SW10_CS8},
- {0, SW12_CS9, SW11_CS9, SW10_CS9},
- {0, SW12_CS10, SW11_CS10, SW10_CS10},
- {0, SW12_CS11, SW11_CS11, SW10_CS11},
- {0, SW12_CS12, SW11_CS12, SW10_CS12},
- {1, SW6_CS9, SW5_CS9, SW4_CS9},
- {1, SW6_CS8, SW5_CS8, SW4_CS8},
- {1, SW6_CS6, SW5_CS6, SW4_CS6},
- {1, SW6_CS3, SW5_CS3, SW4_CS3},
+ {0, CB12_CA1, CB11_CA1, CB10_CA1},
+ {0, CB12_CA3, CB11_CA3, CB10_CA3},
+ {0, CB12_CA4, CB11_CA4, CB10_CA4},
+ {0, CB12_CA5, CB11_CA5, CB10_CA5},
+ {0, CB12_CA6, CB11_CA6, CB10_CA6},
+ {0, CB12_CA7, CB11_CA7, CB10_CA7},
+ {0, CB12_CA8, CB11_CA8, CB10_CA8},
+ {0, CB12_CA9, CB11_CA9, CB10_CA9},
+ {0, CB12_CA10, CB11_CA10, CB10_CA10},
+ {0, CB12_CA11, CB11_CA11, CB10_CA11},
+ {0, CB12_CA12, CB11_CA12, CB10_CA12},
+ {1, CB6_CA9, CB5_CA9, CB4_CA9},
+ {1, CB6_CA8, CB5_CA8, CB4_CA8},
+ {1, CB6_CA6, CB5_CA6, CB4_CA6},
+ {1, CB6_CA3, CB5_CA3, CB4_CA3},
- {0, SW12_CS13, SW11_CS13, SW10_CS13},
- {0, SW12_CS14, SW11_CS14, SW10_CS14},
- {0, SW12_CS15, SW11_CS15, SW10_CS15},
- {0, SW12_CS16, SW11_CS16, SW10_CS16},
- {0, SW9_CS14, SW8_CS14, SW7_CS14},
- {0, SW9_CS15, SW8_CS15, SW7_CS15},
- {0, SW9_CS16, SW8_CS16, SW7_CS16},
- {0, SW6_CS14, SW5_CS14, SW4_CS14},
- {0, SW6_CS15, SW5_CS15, SW4_CS15},
- {0, SW6_CS16, SW5_CS16, SW4_CS16},
- {1, SW6_CS7, SW5_CS7, SW4_CS7},
- {1, SW6_CS4, SW5_CS4, SW4_CS4},
+ {0, CB12_CA13, CB11_CA13, CB10_CA13},
+ {0, CB12_CA14, CB11_CA14, CB10_CA14},
+ {0, CB12_CA15, CB11_CA15, CB10_CA15},
+ {0, CB12_CA16, CB11_CA16, CB10_CA16},
+ {0, CB9_CA14, CB8_CA14, CB7_CA14},
+ {0, CB9_CA15, CB8_CA15, CB7_CA15},
+ {0, CB9_CA16, CB8_CA16, CB7_CA16},
+ {0, CB6_CA14, CB5_CA14, CB4_CA14},
+ {0, CB6_CA15, CB5_CA15, CB4_CA15},
+ {0, CB6_CA16, CB5_CA16, CB4_CA16},
+ {1, CB6_CA7, CB5_CA7, CB4_CA7},
+ {1, CB6_CA4, CB5_CA4, CB4_CA4},
- {0, SW12_CS2, SW11_CS2, SW10_CS2},
- {1, SW4_CS10, SW5_CS10, SW6_CS10},
- {1, SW4_CS11, SW5_CS11, SW6_CS11},
+ {0, CB12_CA2, CB11_CA2, CB10_CA2},
+ {1, CB4_CA10, CB5_CA10, CB6_CA10},
+ {1, CB4_CA11, CB5_CA11, CB6_CA11},
};
#endif
-// clang-format on
-typedef union {
- uint32_t raw;
- struct {
- uint8_t rgb_mode;
- };
-} keyboard_config_t;
-keyboard_config_t keyboard_config;
-
-static uint32_t long_pressed_time;
-static uint16_t long_pressed_keycode;
-static uint8_t all_blink_cnt;
-static uint32_t all_blink_time;
-static RGB all_blink_color;
-static uint8_t single_blink_cnt;
-static uint8_t single_blink_index;
-static RGB single_blink_color;
-static uint32_t single_blink_time;
-static uint8_t EE_CLR_blink_cnt;
-static RGB EE_CLR_blink_color;
-static uint32_t EE_CLR_blink_time;
-
-// clang-format off
-static uint8_t rgb_matrix_effects_table[] = {
- RGB_MATRIX_BREATHING,
- RGB_MATRIX_SOLID_COLOR,
- RGB_MATRIX_CYCLE_LEFT_RIGHT,
- RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
- RGB_MATRIX_CYCLE_OUT_IN_DUAL,
- RGB_MATRIX_DUAL_BEACON,
- RGB_MATRIX_RAINBOW_BEACON,
- RGB_MATRIX_RAINDROPS,
- RGB_MATRIX_SOLID_REACTIVE,
-};
-
-#define RGB_MATRIX_EFFECTS_COUNT (sizeof(rgb_matrix_effects_table) / sizeof(rgb_matrix_effects_table[0]))
-
// clang-format on
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (process_record_user(keycode, record) != true) {
return false;
}
switch (keycode) {
- case SW_OS1:
- if (record->event.pressed) {
- long_pressed_time = timer_read32();
- long_pressed_keycode = SW_OS1;
- } else {
- long_pressed_time = 0;
- }
- break;
- case NK_TOGG:
- if (record->event.pressed) {
- long_pressed_time = timer_read32();
- long_pressed_keycode = NK_TOGG;
- } else {
- long_pressed_time = 0;
- }
- return false;
- case EE_CLR:
- if (record->event.pressed) {
- long_pressed_time = timer_read32();
- long_pressed_keycode = EE_CLR;
- } else {
- long_pressed_time = 0;
- }
- return false;
- case RM_SPDU:
- if (record->event.pressed) {
- rgb_matrix_increase_speed();
- if (rgb_matrix_get_speed() >= 255) {
- rgb_matrix_config.speed = 255;
- }
- }
- return false;
- case RM_SPDD:
- if (record->event.pressed) {
- rgb_matrix_decrease_speed();
- if (rgb_matrix_get_speed() <= 27) {
- rgb_matrix_config.speed = 27;
- }
- }
- return false;
- case RM_NEXT:
- if (record->event.pressed) {
- keyboard_config.rgb_mode++;
- if (keyboard_config.rgb_mode > RGB_MATRIX_EFFECTS_COUNT) {
- keyboard_config.rgb_mode = 0;
- }
- eeconfig_update_user(keyboard_config.raw);
- if (keyboard_config.rgb_mode == RGB_MATRIX_EFFECTS_COUNT) {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- rgb_matrix_set_color_all(0, 0, 0);
- } else {
- rgb_matrix_set_flags(LED_FLAG_ALL);
- rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
- }
- }
- return false;
case QK_RGB_MATRIX_TOGGLE:
if (record->event.pressed) {
- if (keyboard_config.rgb_mode == RGB_MATRIX_EFFECTS_COUNT) {
- return false;
- }
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_NONE);
@@ -233,128 +137,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return true;
}
-void eeconfig_init_kb() {
- keyboard_config.raw = 0;
- eeconfig_update_user(keyboard_config.raw);
-
- eeconfig_init_user();
-}
-
-void keyboard_pre_init_kb(void) {
-#ifdef RGB_DRIVER_SDB_PIN
- gpio_set_pin_output_open_drain(RGB_DRIVER_SDB_PIN);
- gpio_write_pin_high(RGB_DRIVER_SDB_PIN);
-#endif
- keyboard_pre_init_user();
-}
-
-void keyboard_post_init_kb() {
- keyboard_config.raw = eeconfig_read_user();
- rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
- if (keyboard_config.rgb_mode == RGB_MATRIX_EFFECTS_COUNT) {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- rgb_matrix_set_color_all(0, 0, 0);
- }
- keyboard_post_init_user();
-}
-
-void housekeeping_task_kb(void) {
- if ((timer_elapsed32(long_pressed_time) > 2000) && (long_pressed_time)) {
- long_pressed_time = 0;
- switch (long_pressed_keycode) {
- case SW_OS1:
- if (get_highest_layer(default_layer_state) == 0) {
- set_single_persistent_default_layer(2);
- keymap_config.no_gui = 0;
- eeconfig_update_keymap(&keymap_config);
- single_blink_time = timer_read32();
- single_blink_cnt = 2;
- single_blink_index = 73;
- single_blink_color = (RGB){100, 100, 100};
- } else if (get_highest_layer(default_layer_state) == 2) {
- set_single_persistent_default_layer(0);
- single_blink_time = timer_read32();
- single_blink_cnt = 2;
- single_blink_index = 73;
- single_blink_color = (RGB){.r = 0, .g = 0, .b = 100};
- }
- break;
- case NK_TOGG:
- keymap_config.nkro = !keymap_config.nkro;
- eeconfig_update_keymap(&keymap_config);
- single_blink_time = timer_read32();
- single_blink_cnt = 6;
- single_blink_index = 13;
- single_blink_color = (RGB){100, 100, 100};
- break;
- case EE_CLR:
- EE_CLR_blink_time = timer_read32();
- EE_CLR_blink_cnt = 6;
- EE_CLR_blink_color = (RGB){.r = 100, .g = 100, .b = 100};
- break;
- default:
- break;
- }
- }
-
- housekeeping_task_user();
-}
-
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
if (rgb_matrix_indicators_advanced_user(led_min, led_max) != true) {
return false;
}
- if (all_blink_cnt) {
- rgb_matrix_set_color_all(0, 0, 0);
- if (timer_elapsed32(all_blink_time) > 300) {
- all_blink_time = timer_read32();
- all_blink_cnt--;
- }
- if (all_blink_cnt & 0x1) {
- rgb_matrix_set_color_all(all_blink_color.r, all_blink_color.g, all_blink_color.b);
- }
- }
-
- if (single_blink_cnt) {
- if (timer_elapsed32(single_blink_time) > 300) {
- single_blink_time = timer_read32();
- single_blink_cnt--;
- }
- if (single_blink_cnt % 2) {
- rgb_matrix_set_color(single_blink_index, single_blink_color.r, single_blink_color.g, single_blink_color.b);
- } else {
- rgb_matrix_set_color(single_blink_index, 0, 0, 0);
- }
- }
-
- if (EE_CLR_blink_cnt) {
- if (EE_CLR_blink_cnt % 2) {
- rgb_matrix_set_color(73, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
- rgb_matrix_set_color(74, EE_CLR_blink_color.r, EE_CLR_blink_color.g, EE_CLR_blink_color.b);
- } else {
- rgb_matrix_set_color(73, 0, 0, 0);
- rgb_matrix_set_color(74, 0, 0, 0);
- }
- if (timer_elapsed32(EE_CLR_blink_time) > 300) {
- if (EE_CLR_blink_cnt > 0) {
- EE_CLR_blink_time = timer_read32();
- EE_CLR_blink_cnt--;
- }
- if (!EE_CLR_blink_cnt) {
- eeconfig_init();
- eeconfig_update_rgb_matrix_default();
- keyboard_config.rgb_mode = 0;
- rgb_matrix_mode(rgb_matrix_effects_table[keyboard_config.rgb_mode]);
- rgb_matrix_config.hsv.h = 170;
- eeconfig_update_user(keyboard_config.raw);
- keymap_config.no_gui = 0;
- keymap_config.nkro = 1;
- eeconfig_update_keymap(&keymap_config);
- }
- }
- }
-
// caps lock red
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(72, 100, 100, 100);
diff --git a/keyboards/hfdkb/8s200/8s200.h b/keyboards/hfdkb/8s200/8s200.h
deleted file mode 100644
index c43f568c475..00000000000
--- a/keyboards/hfdkb/8s200/8s200.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (C) 2025 jonylee@hfd
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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 .
- */
-
-#pragma once
-
-#include "quantum.h"
-
-enum user_keycodes {
- SW_OS1 = QK_KB,
-};
diff --git a/keyboards/hfdkb/8s200/config.h b/keyboards/hfdkb/8s200/config.h
index a604d816cbd..d658bee051a 100644
--- a/keyboards/hfdkb/8s200/config.h
+++ b/keyboards/hfdkb/8s200/config.h
@@ -17,13 +17,11 @@
#pragma once
/* I2C Config for LED Driver */
-#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_SCL_GND
-#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_SCL_VCC
-#define IS31FL3733_SDB_PIN A15
-
+#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
+#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
+#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000
-#define RGB_DRIVER_EN_PIN B2
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index 9358f440df8..1c4d1ddc47d 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -4,6 +4,7 @@
"maintainer": "jonylee@hfd",
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
+ "url": "https://github.com/jonylee1986",
"usb": {
"vid": "0xFFFE",
"pid": "0x0096",
@@ -35,7 +36,7 @@
}
},
"rgb_matrix": {
- "driver": "is31fl3733",
+ "driver": "snled27351",
"max_brightness": 180,
"react_on_keyup": true,
"sleep": true,
@@ -51,7 +52,7 @@
},
"default": {
"hue": 170,
- "speed": 141
+ "animation": "breathing"
},
"layout": [
{ "flags": 4, "matrix": [0,0], "x": 7, "y": 3},
diff --git a/keyboards/hfdkb/8s200/keymaps/default/keymap.c b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
index b35a05d558c..dbeacc6ef35 100644
--- a/keyboards/hfdkb/8s200/keymaps/default/keymap.c
+++ b/keyboards/hfdkb/8s200/keymaps/default/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
_______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
- _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, PDF(2), _______, _______, _______, _______, RM_VALU, _______,
_______, GU_TOGG, _______, _______, _______, _______, MO(_FN3),_______, _______, RM_SPDD, RM_VALD, RM_SPDU),
[MAC_BASE] = LAYOUT_72_jis(
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, KC_MPRV, KC_MPLY, KC_MNXT, EE_CLR, _______, KC_CALC, _______, KC_UP, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
_______, RM_HUEU, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, _______, _______, _______, _______,
- _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, SW_OS1, _______, _______, _______, _______, RM_VALU, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, RM_NEXT, PDF(0), _______, _______, _______, _______, RM_VALU, _______,
_______, _______, _______, _______, _______, MO(_FN3),_______, _______, _______, RM_SPDD, RM_VALD, RM_SPDU),
[_FN3] = LAYOUT_72_jis(
From e5259ada981a2f1db562310c89d0b6e223aeb04c Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Tue, 8 Jul 2025 09:06:10 +0800
Subject: [PATCH 21/23] Update keyboards/hfdkb/8s200/8s200.c
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/8s200.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 284d360bfc2..1b3c5d945d1 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -137,8 +137,8 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return true;
}
-bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
- if (rgb_matrix_indicators_advanced_user(led_min, led_max) != true) {
+bool rgb_matrix_indicators_kb(void) {
+ if (!rgb_matrix_indicators_user()) {
return false;
}
From 5eeb3df25dd154c547b6d0514ab6360a22b23290 Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Tue, 8 Jul 2025 09:06:55 +0800
Subject: [PATCH 22/23] Update keyboards/hfdkb/8s200/keyboard.json
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/keyboard.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/keyboards/hfdkb/8s200/keyboard.json b/keyboards/hfdkb/8s200/keyboard.json
index 1c4d1ddc47d..d82f5abb0b2 100644
--- a/keyboards/hfdkb/8s200/keyboard.json
+++ b/keyboards/hfdkb/8s200/keyboard.json
@@ -35,6 +35,9 @@
"backing_size": 8192
}
},
+ "dynamic_keymap": {
+ "layer_count": 6
+ },
"rgb_matrix": {
"driver": "snled27351",
"max_brightness": 180,
From bfe6d4f51ca4c8875eeddb6e2fe02be85be6958d Mon Sep 17 00:00:00 2001
From: lalalademaxiya <148926153+galican@users.noreply.github.com>
Date: Thu, 10 Jul 2025 22:05:59 +0800
Subject: [PATCH 23/23] Update keyboards/hfdkb/8s200/8s200.c
All right, thanks~
Co-authored-by: Joel Challis
---
keyboards/hfdkb/8s200/8s200.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/hfdkb/8s200/8s200.c b/keyboards/hfdkb/8s200/8s200.c
index 1b3c5d945d1..cec0537da50 100644
--- a/keyboards/hfdkb/8s200/8s200.c
+++ b/keyboards/hfdkb/8s200/8s200.c
@@ -110,7 +110,7 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
// clang-format on
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- if (process_record_user(keycode, record) != true) {
+ if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {