summary refs log tree commit diff
path: root/keyboards/splitkb
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2023-05-31 11:44:06 -0700
committerGitHub <noreply@github.com>2023-05-31 11:44:06 -0700
commit3a3e5abac992712a8bb4e9b61430f5fc62dc6043 (patch)
tree832d14c0ca63e13ca1b97e2cbfe94d75d6bb89c7 /keyboards/splitkb
parent1411c79aefc989f5fae138b795f53f3b10863ec9 (diff)
[Keymap] Drashna Keymap updates for 0.21.0 (#21073)
Diffstat (limited to 'keyboards/splitkb')
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/chconf.h24
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/config.h43
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/halconf.h24
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/keymap.c60
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/mcuconf.h35
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/rules.mk13
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/keymap.c10
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/readme.md7
8 files changed, 183 insertions, 33 deletions
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/chconf.h b/keyboards/splitkb/kyria/keymaps/drashna/chconf.h
new file mode 100644
index 0000000000..1ee8438cdf
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/drashna/chconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2020 QMK
+ *
+ * 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
+
+#if defined(KEYBOARD_splitkb_kyria_rev3)
+#define CH_CFG_ST_RESOLUTION 16
+#define CH_CFG_ST_FREQUENCY  10000
+#endif
+
+#include_next <chconf.h>
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/config.h b/keyboards/splitkb/kyria/keymaps/drashna/config.h
index 2d1fbdcb02..702599605c 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/config.h
+++ b/keyboards/splitkb/kyria/keymaps/drashna/config.h
@@ -19,10 +19,10 @@
 #define EE_HANDS
 
 #ifdef OLED_ENABLE
-#    ifdef OLED_DRIVER_SH1107
-#        undef OLED_DISPLAY_128X64
-#        define OLED_DISPLAY_128X128
-#    endif
+#    undef OLED_DISPLAY_128X64
+#    define OLED_DISPLAY_128X128
+#    define OLED_PRE_CHARGE_PERIOD 0x22
+#    define OLED_VCOM_DETECT 0x35
 #endif
 
 #ifdef RGBLIGHT_ENABLE
@@ -36,12 +36,41 @@
 #    define RGBLIGHT_LAYERS
 #endif
 
-#define KEYLOGGER_LENGTH            10
 
 #define QMK_ESC_INPUT               D4
 #define QMK_ESC_OUTPUT              B2
 
-#ifndef KEYBOARD_splitkb_kyria_rev3
+#ifdef KEYBOARD_splitkb_kyria_rev3
+#    define SERIAL_USART_FULL_DUPLEX      // Enable full duplex operation mode.
+#    define SERIAL_USART_PIN_SWAP         // Swap TX and RX pins if keyboard is master halve.
+#    define SERIAL_USART_DRIVER      SD1  // USART driver of TX pin. default: SD1
+#    define SERIAL_USART_TX_PAL_MODE 7    // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#    undef SOFT_SERIAL_PIN
+#    define SERIAL_USART_TX_PIN      D3
+#    define SERIAL_USART_RX_PIN      D2
+
+#    undef WS2812_DI_PIN
+#    define WS2812_DI_PIN            PAL_LINE(GPIOA, 3)
+#    define WS2812_PWM_DRIVER        PWMD2                  // default: PWMD2
+#    define WS2812_PWM_CHANNEL       4                      // default: 2
+#    define WS2812_PWM_PAL_MODE      1                      // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
+#    define WS2812_DMA_STREAM        STM32_DMA1_STREAM2     // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#    define WS2812_DMA_CHANNEL       2                      // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#    define WS2812_DMAMUX_ID         STM32_DMAMUX1_TIM2_UP  // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
+
+#    define BOOTMAGIC_LITE_ROW 0
+#    define BOOTMAGIC_LITE_COLUMN 6
+#    define BOOTMAGIC_LITE_ROW_RIGHT 4
+#    define BOOTMAGIC_LITE_COLUMN_RIGHT 6
+
+#    define BOOTMAGIC_LITE_EEPROM_ROW 1
+#    define BOOTMAGIC_LITE_EEPROM_COLUMN 6
+#    define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 5
+#    define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 6
+#    define SECURE_UNLOCK_SEQUENCE    { {1, 5}, {1, 4}, {1, 3}, {1, 2} }
+
+#    define ENCODER_RESOLUTION 2
+#else
 #    define BOOTMAGIC_LITE_ROW 0
 #    define BOOTMAGIC_LITE_COLUMN 7
 #    define BOOTMAGIC_LITE_ROW_RIGHT 4
@@ -55,7 +84,7 @@
 
 #define SERIAL_USART_SPEED       921600
 
-#if defined(KEYBOARD_splitkb_kyria_rev1_proton_c)
+#if defined(KEYBOARD_splitkb_kyria_rev1_proton_c) || defined(KEYBOARD_splitkb_kyria_rev3)
 #    define WEAR_LEVELING_BACKING_SIZE 16384
 #    define WEAR_LEVELING_LOGICAL_SIZE 8192
 #endif
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/halconf.h b/keyboards/splitkb/kyria/keymaps/drashna/halconf.h
new file mode 100644
index 0000000000..b23c85d0f1
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/drashna/halconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2020 QMK
+ *
+ *  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 3 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 <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#if defined(KEYBOARD_splitkb_kyria_rev3)
+#    define HAL_USE_I2C TRUE
+#    define HAL_USE_PWM TRUE
+#    define HAL_USE_SERIAL TRUE
+#endif
+
+#include_next <halconf.h>
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
index 34f6e0d8e2..5a2b886fe4 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
@@ -32,7 +32,7 @@
     K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A  \
   ) \
   LAYOUT_wrapper( \
-      KC_ESC,  K01,     K02,     K03,     K04,     K05,                                             K06,     K07,     K08,     K09,     K0A,     KC_MINS, \
+  SH_T(KC_ESC), K01,    K02,     K03,     K04,     K05,                                             K06,     K07,     K08,     K09,     K0A,     SH_T(KC_MINS), \
    LALT_T(KC_TAB), K11, K12,     K13,     K14,     K15,                                             K16,     K17,     K18,     K19,     K1A, RALT_T(K1B), \
       OS_LSFT, CTL_T(K21), K22,  K23,     K24,     K25,  TG_GAME, MEH(KC_MINS),   TG_DBLO, KC_CAPS, K26,     K27,     K28,     K29, RCTL_T(K2A), OS_RSFT, \
                                  KC_MUTE, OS_LALT, KC_GRV,  KC_SPC,  BK_LWER,     DL_RAIS, KC_ENT,  OS_RGUI, UC(0x03A8), UC(0x2E2E) \
@@ -126,7 +126,7 @@ void render_oled_title(bool side) {
 }
 
 oled_rotation_t oled_init_keymap(oled_rotation_t rotation) {
-#    ifdef OLED_DRIVER_SH1107
+#    ifdef OLED_DISPLAY_128X128
     return OLED_ROTATION_0;
 #    else
     return OLED_ROTATION_180;
@@ -155,7 +155,7 @@ void oled_render_large_display(bool side) {
 }
 #endif
 
-#ifdef RGBLIGHT_LAYERS
+#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
 const rgblight_segment_t PROGMEM shift_layers[]   = RGBLIGHT_LAYER_SEGMENTS({8, 1, 120, 255, 255}, {18, 1, 120, 255, 255});
 const rgblight_segment_t PROGMEM control_layers[] = RGBLIGHT_LAYER_SEGMENTS({6, 1, 0, 255, 255}, {16, 1, 0, 255, 255});
 const rgblight_segment_t PROGMEM alt_layers[]     = RGBLIGHT_LAYER_SEGMENTS({2, 1, 240, 255, 255}, {17, 1, 250, 255, 255});
@@ -174,12 +174,56 @@ void housekeeping_task_keymap(void) {
     rgblight_set_layer_state(2, mods & MOD_MASK_ALT);
     rgblight_set_layer_state(3, mods & MOD_MASK_GUI);
 }
-#endif
+#elif defined(RGB_MATRIX_ENABLE) && defined(KEYBOARD_splitkb_kyria_rev3)
+void keyboard_post_init_keymap(void) {
+    extern led_config_t g_led_config;
+    g_led_config.flags[30] = g_led_config.flags[24] = g_led_config.flags[18] = g_led_config.flags[12] = g_led_config.flags[11] = g_led_config.flags[10] = g_led_config.flags[9] = g_led_config.flags[8] = g_led_config.flags[7] = g_led_config.flags[6] = g_led_config.flags[37] = g_led_config.flags[38] = g_led_config.flags[39] = g_led_config.flags[40] = g_led_config.flags[41] = g_led_config.flags[42] = g_led_config.flags[43] = g_led_config.flags[49] = g_led_config.flags[55] = g_led_config.flags[61] = LED_FLAG_MODIFIER;
+}
+
+void check_default_layer(uint8_t mode, uint8_t type, uint8_t led_min, uint8_t led_max) {
+    switch (get_highest_layer(default_layer_state)) {
+        case _QWERTY:
+            rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max);
+            break;
+        case _COLEMAK_DH:
+            rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max);
+            break;
+        case _COLEMAK:
+            rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max);
+            break;
+        case _DVORAK:
+            rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max);
+            break;
+    }
+}
 
-#ifdef KEYBOARD_splitkb_kyria_rev1_proton_c
-void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
-    for (int32_t i = 0; i < 40; i++) {
-        __asm__ volatile("nop" ::: "memory");
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
+    if (userspace_config.rgb_layer_change) {
+        switch (get_highest_layer(layer_state)) {
+            case _GAMEPAD:
+                rgb_matrix_layer_helper(HSV_ORANGE, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+            case _DIABLO:
+                rgb_matrix_layer_helper(HSV_RED, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+            case _RAISE:
+                rgb_matrix_layer_helper(HSV_YELLOW, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+            case _LOWER:
+                rgb_matrix_layer_helper(HSV_GREEN, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+            case _ADJUST:
+                rgb_matrix_layer_helper(HSV_RED, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+            case _MOUSE:
+                rgb_matrix_layer_helper(HSV_PURPLE, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+            default:
+                check_default_layer(0, LED_FLAG_UNDERGLOW, led_min, led_max);
+                break;
+        }
+        check_default_layer(0, LED_FLAG_MODIFIER, led_min, led_max);
     }
+    return false;
 }
 #endif
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/mcuconf.h b/keyboards/splitkb/kyria/keymaps/drashna/mcuconf.h
new file mode 100644
index 0000000000..2bee30b342
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/drashna/mcuconf.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 Nick Brassel (tzarc)
+ *
+ *  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 3 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 <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#if defined(KEYBOARD_splitkb_kyria_rev3)
+#    undef STM32_PWM_USE_ADVANCED
+#    define STM32_PWM_USE_ADVANCED TRUE
+
+#    undef STM32_PWM_USE_TIM2
+#    define STM32_PWM_USE_TIM2 TRUE
+#    undef STM32_PWM_USE_TIM3
+#    define STM32_PWM_USE_TIM3 FALSE
+
+#    undef STM32_SERIAL_USE_USART1
+#    define STM32_SERIAL_USE_USART1 TRUE
+
+#    undef STM32_ST_USE_TIMER
+#    define STM32_ST_USE_TIMER 3
+#endif
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
index 882a3fba09..bb872743b7 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
@@ -11,6 +11,16 @@ KEY_LOCK_ENABLE            = no
 WPM_ENABLE                 = yes
 
 ifeq ($(strip $(KEYBOARD)), splitkb/kyria/rev1/proton_c)
+    OVERLOAD_FEATURES = yes
+endif
+ifeq ($(strip $(KEYBOARD)), splitkb/kyria/rev3)
+    OVERLOAD_FEATURES = yes
+    CONVERT_TO        = proton_c
+    WS2812_DRIVER     = pwm
+    SERIAL_DRIVER     = usart
+endif
+
+ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
     RGB_MATRIX_ENABLE      = yes
     CONSOLE_ENABLE         = yes      # Console for debug
     MOUSEKEY_ENABLE        = yes      # Mouse keys
@@ -20,7 +30,8 @@ ifeq ($(strip $(KEYBOARD)), splitkb/kyria/rev1/proton_c)
     ENCODER_MAP_ENABLE     = yes
     AUTOCORRECT_ENABLE     = yes
     CAPS_WORD_ENABLE       = yes
-    OLED_DRIVER            = custom
+    AUDIO_ENABLE           = no
+    DEBUG_MATRIX_SCAN_RATE_ENABLE = api
 else
     LTO_ENABLE             = yes
     BOOTLOADER             = qmk-hid
diff --git a/keyboards/splitkb/zima/keymaps/drashna/keymap.c b/keyboards/splitkb/zima/keymaps/drashna/keymap.c
index de3d74474e..f7f3b54fbd 100644
--- a/keyboards/splitkb/zima/keymaps/drashna/keymap.c
+++ b/keyboards/splitkb/zima/keymaps/drashna/keymap.c
@@ -143,13 +143,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
 
     return true;
 }
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
-    oled_timer = timer_read32();
-    if (clockwise) {
-        tap_code_delay(KC_VOLU, 10);
-    } else {
-        tap_code_delay(KC_VOLD, 10);
-    }
-    return false;
-}
diff --git a/keyboards/splitkb/zima/keymaps/drashna/readme.md b/keyboards/splitkb/zima/keymaps/drashna/readme.md
deleted file mode 100644
index 0f78f4bf18..0000000000
--- a/keyboards/splitkb/zima/keymaps/drashna/readme.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# The default keymap for zima
-
-This includes support for the OLED and Encoder.  However, the actual code is found in the `zima.c` file. This can be replaced by adding your own `oled_task_user(void)` and `encoder_update_user` functinons. These will replace what is in the keyboard, and allow you to customize these features. 
-
-The reason that this is done this way, is so that this functionality will work on the [QMK Configurator](https://config.qmk.fm/#/splitkb/zima/LAYOUT_ortho_4x3)
-
-For reference, the code used for the oled and encoder defaults is in [zima.c](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/zima/zima.c).