Переглянути джерело

[Keyboard] Add TKL-FF v2 (#15144)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Ramon Imbao 3 роки тому
батько
коміт
817a82378b

+ 39 - 0
keyboards/ramonimbao/tkl_ff/keymaps/default/keymap.c

@@ -25,3 +25,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, KC_RGUI, KC_APP,  KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
     )
 };
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_OFF},
+    {1, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
+    {1, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_OFF}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
+
+void keyboard_post_init_kb(void) {
+    rgblight_layers = rgb_layers;
+
+    keyboard_post_init_user();
+}
+
+bool led_update_kb(led_t led_state) {
+    bool res = led_update_user(led_state);
+
+    if (res) {
+        uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
+        for (uint8_t i=0; i<3; i++) {
+            rgblight_set_layer_state(i, false);
+        }
+        if (lock_bits < 3) {
+            rgblight_set_layer_state(lock_bits, true);
+        }
+    }
+
+    return res;
+}
+#endif

+ 39 - 0
keyboards/ramonimbao/tkl_ff/keymaps/iso/keymap.c

@@ -25,3 +25,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, KC_RGUI, KC_APP,  KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
     )
 };
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_OFF},
+    {1, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
+    {1, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_OFF}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
+
+void keyboard_post_init_kb(void) {
+    rgblight_layers = rgb_layers;
+
+    keyboard_post_init_user();
+}
+
+bool led_update_kb(led_t led_state) {
+    bool res = led_update_user(led_state);
+
+    if (res) {
+        uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
+        for (uint8_t i=0; i<3; i++) {
+            rgblight_set_layer_state(i, false);
+        }
+        if (lock_bits < 3) {
+            rgblight_set_layer_state(lock_bits, true);
+        }
+    }
+
+    return res;
+}
+#endif

+ 39 - 0
keyboards/ramonimbao/tkl_ff/keymaps/via/keymap.c

@@ -49,3 +49,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         _______, _______, _______,                            _______,                            _______, _______, _______, _______,          _______, _______, _______
     )
 };
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_OFF},
+    {1, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
+    {1, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_OFF}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
+
+void keyboard_post_init_kb(void) {
+    rgblight_layers = rgb_layers;
+
+    keyboard_post_init_user();
+}
+
+bool led_update_kb(led_t led_state) {
+    bool res = led_update_user(led_state);
+
+    if (res) {
+        uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
+        for (uint8_t i=0; i<3; i++) {
+            rgblight_set_layer_state(i, false);
+        }
+        if (lock_bits < 3) {
+            rgblight_set_layer_state(lock_bits, true);
+        }
+    }
+
+    return res;
+}
+#endif

+ 1 - 1
keyboards/ramonimbao/tkl_ff/readme.md

@@ -2,7 +2,7 @@
 
 ![TKL-FF](https://i.imgur.com/GJCo3F5l.png)
 
-A TKL PCB made for the Geonworks Frog keyboard that supports both F12 and F13.
+A TKL PCB made for the Geonworks Frog keyboard that supports both F12 and F13. V2 simply adds RGB indicator LEDs.
 
 * Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
 * Hardware Supported: ATmega32u4

+ 52 - 0
keyboards/ramonimbao/tkl_ff/v2/config.h

@@ -0,0 +1,52 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+#undef PRODUCT_ID
+#define PRODUCT_ID   0x10FF
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+#    define RGBLED_NUM 26
+#    define RGBLIGHT_HUE_STEP 32
+#    define RGBLIGHT_SAT_STEP 32
+#    define RGBLIGHT_VAL_STEP 32
+//#    define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//#    define RGBLIGHT_SLEEP  /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+// #    define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+#    define RGBLIGHT_EFFECT_BREATHING
+#    define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#    define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//#    define RGBLIGHT_EFFECT_SNAKE
+//#    define RGBLIGHT_EFFECT_KNIGHT
+#    define RGBLIGHT_EFFECT_CHRISTMAS
+#    define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#    define RGBLIGHT_EFFECT_RGB_TEST
+#    define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//#    define RGBLIGHT_BREATHE_TABLE_SIZE 256      // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//#    define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1 to 2.7
+//#    define RGBLIGHT_EFFECT_BREATHE_MAX    255   // 0 to 255
+#endif

+ 1 - 0
keyboards/ramonimbao/tkl_ff/v2/rules.mk

@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow

+ 17 - 0
keyboards/ramonimbao/tkl_ff/v2/v2.c

@@ -0,0 +1,17 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include "v2.h"

+ 18 - 0
keyboards/ramonimbao/tkl_ff/v2/v2.h

@@ -0,0 +1,18 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"