[Keymap] Drashna Keymap updates for 0.21.0 (#21073)

This commit is contained in:
Drashna Jaelre 2023-05-31 11:44:06 -07:00 committed by GitHub
commit 3a3e5abac9
Failed to generate hash of commit
71 changed files with 1609 additions and 2215 deletions

View file

@ -0,0 +1,7 @@
// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
#define TAPPING_TERM 499

View file

@ -0,0 +1,100 @@
// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "drashna.h"
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
LT(1,KC_MUTE),
KC_ENT, KC_0, KC_BSPC,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3
),
[1] = LAYOUT(
_______,
CK_TOGG, AU_TOGG, _______,
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
),
};
// clang-format on
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[1] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)},
};
#endif
void render_oled_title(bool side) {
oled_write_P(PSTR(" Macropad "), true);
}
void render_rgb_mode(uint8_t col, uint8_t line);
void l_render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) {
oled_set_cursor(col, line);
#ifdef CAPS_WORD_ENABLE
led_usb_state.caps_lock |= is_caps_word_on();
#endif
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state.num_lock);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state.caps_lock);
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state.scroll_lock);
}
bool oled_task_keymap(void) {
oled_write_raw_P(header_image, sizeof(header_image));
oled_set_cursor(0, 1);
oled_write_raw_P(row_2_image, sizeof(row_2_image));
oled_set_cursor(4, 0);
render_oled_title(false);
render_kitty(0, 2);
render_matrix_scan_rate(1, 7, 2);
#ifdef AUDIO_ENABLE
oled_set_cursor(7, 4);
bool l_is_audio_on = is_audio_on();
static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
oled_write_P(audio_status[l_is_audio_on], false);
# ifdef AUDIO_CLICKY
bool l_is_clicky_on = is_clicky_on();
static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
oled_write_P(audio_clicky_status[l_is_clicky_on && l_is_audio_on], false);
# endif
#endif
static const char PROGMEM cat_mode[3] = {0xF8, 0xF9, 0};
oled_write_P(cat_mode, get_keyboard_lock());
#ifdef RGB_MATIRX_ENABLE
static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
oled_write_P(rgb_layer_status[rgb_matrix_is_enabled()], false);
#endif
#ifdef HAPTIC_ENABLE
static const char PROGMEM nukem_good[2] = {0xFA, 0};
oled_write_P(haptic_get_enable() ? nukem_good : PSTR(" "), false);
#endif
l_render_keylock_status(host_keyboard_led_state(), 7, 5);
render_rgb_mode(1, 6);
for (uint8_t i = 1; i < 7; i++) {
oled_set_cursor(0, i);
oled_write_raw_P(display_border, sizeof(display_border));
oled_set_cursor(21, i);
oled_write_raw_P(display_border, sizeof(display_border));
}
oled_set_cursor(0, 7);
oled_write_raw_P(footer_image, sizeof(footer_image));
return false;
}

View file

@ -0,0 +1,3 @@
ENCODER_MAP_ENABLE = yes
DEBUG_MATRIX_SCAN_RATE_ENABLE = api
WPM_ENABLE = yes

View file

@ -82,29 +82,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
EE_CLR, KC_NUKE, _______, _______, QK_BOOT
),
};
#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill)
void keyboard_pre_init_keymap(void) {
setPinInputHigh(A0);
}
void housekeeping_task_keymap(void) {
if (!readPin(A0)) {
reset_keyboard();
}
}
# ifdef USB_VBUS_PIN
bool usb_vbus_state(void) {
setPinInputLow(USB_VBUS_PIN);
wait_us(5);
return readPin(USB_VBUS_PIN);
}
# endif
void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
for (int32_t i = 0; i < 40; i++) {
__asm__ volatile("nop" ::: "memory");
}
}
#endif

View file

@ -40,6 +40,4 @@ ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
CUSTOM_UNICODE_ENABLE = yes
CUSTOM_POINTING_DEVICE = yes
CUSTOM_SPLIT_TRANSPORT_SYNC = yes
DEBOUNCE_TYPE = asym_eager_defer_pk
endif

View file

@ -65,3 +65,5 @@
#define BOOTMAGIC_LITE_EEPROM_COLUMN 0
#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 1
#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 0
#define DEBOUNCE 15

View file

@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
SFT_T(KC_SPACE), ALT_T(KC_Q), _______
),
[_MOUSE] = LAYOUT_charybdis_4x6(
_______, _______, _______, _______, _______, _______, _______, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, PD_JIGGLER,
_______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, DRGSCRL,
_______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
_______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
@ -130,28 +130,6 @@ void keyboard_post_init_keymap(void) {
void keyboard_pre_init_keymap(void) {
setPinInputHigh(A0);
}
void housekeeping_task_keymap(void) {
if (!readPin(A0)) {
reset_keyboard();
}
}
#endif
#ifdef USB_VBUS_PIN
bool usb_vbus_state(void) {
setPinInputLow(USB_VBUS_PIN);
wait_us(5);
return readPin(USB_VBUS_PIN);
}
#endif
#if defined(KEYBOARD_bastardkb_charybdis_4x6_blackpill)
void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
for (int32_t i = 0; i < 40; i++) {
__asm__ volatile("nop" ::: "memory");
}
}
#endif
#ifdef SWAP_HANDS_ENABLE

View file

@ -1,6 +1,7 @@
CUSTOM_UNICODE_ENABLE = no
CUSTOM_POINTING_DEVICE = no
CUSTOM_SPLIT_TRANSPORT_SYNC = no
PER_KEY_TAPPING = yes
ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/4x6/blackpill)
# MCU name
@ -16,16 +17,13 @@ ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/4x6/blackpill)
OVERLOAD_FEATURES = yes
endif
ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/4x6/v2/stemcell)
OVERLOAD_FEATURES = yes
endif
ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/4x6/v2/splinky)
OVERLOAD_FEATURES = yes
endif
ifeq ($(strip $(MCU)), atmega32u4)
LTO_ENABLE = yes
BOOTLOADER = qmk-hid
BOOTLOADER_SIZE = 512
EXTRAKEY_ENABLE = no
else
OVERLOAD_FEATURES = yes
endif
ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
@ -43,7 +41,6 @@ ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
CAPS_WORD_ENABLE = yes
SWAP_HANDS_ENABLE = yes
TAP_DANCE_ENABLE = yes
DEBOUNCE_TYPE = asym_eager_defer_pk
WPM_ENABLE = yes
LTO_ENABLE = no
# OPT = 3

View file

@ -6,3 +6,5 @@
#define CIRQUE_PINNACLE_TAP_ENABLE
#define POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
#define OLED_DISPLAY_128X128

View file

@ -84,14 +84,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
};
void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
for (int32_t i = 0; i < 40; i++) {
__asm__ volatile("nop" ::: "memory");
}
}
#if defined(OLED_ENABLE) && defined(OLED_DISPLAY_128X128)
# ifdef UNICODE_COMMON_ENABLE
# include "process_unicode_common.h"
@ -100,8 +92,6 @@ void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
extern const char PROGMEM display_border[3];
extern uint32_t oled_timer;
extern bool is_oled_enabled;

View file

@ -5,4 +5,3 @@ CONSOLE_ENABLE = yes
KEYLOGGER_ENABLE = no
WPM_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = custom

View file

@ -6,4 +6,3 @@ TAP_DANCE_ENABLE = yes
UNICODE_ENABLE = yes
OLED_ENABLE = yes
WPM_ENABLE = yes
# DEBOUNCE_TYPE = sym_eager_pk

View file

@ -32,10 +32,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define WS2812_PWM_TARGET_PERIOD 800000
#define RGBLED_NUM 52
#define RGBLED_NUM 57
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT \
{ 26, 26 }
{ 26, 31 }
#define DEBUG_LED_PIN C13

View file

@ -1,20 +0,0 @@
// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#ifndef RGBLIGHT_LIMIT_VAL
# if defined(OLED_ENABLE)
# define RGBLIGHT_LIMIT_VAL 100
# else
# define RGBLIGHT_LIMIT_VAL 150
# endif
#endif
#ifndef OLED_BRIGHTNESS
# ifdef RGBLIGHT_ENABLE
# define OLED_BRIGHTNESS 80
# else
# define OLED_BRIGHTNESS 150
# endif
#endif

View file

@ -16,21 +16,21 @@
#pragma once
#define DEBOUNCE 45
#ifdef OLED_DRIVER_SH1107
# undef OLED_DISPLAY_128X64
#endif
#undef OLED_DISPLAY_128X64
#define OLED_DISPLAY_128X128
#define OLED_BRIGHTNESS 200
#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
#define ENCODER_DEFAULT_POS 0x3
#define BOOTMAGIC_LITE_EEPROM_ROW 1
#define BOOTMAGIC_LITE_EEPROM_COLUMN 0
#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 7
#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 5
#define FB_ERM_LRA 0
#define DRV_GREETING alert_750ms
#define DRV_MODE_DEFAULT buzz

View file

@ -90,8 +90,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_V, _______, _______
),
[_MOUSE] = LAYOUT_5x6_right(
_______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG,
_______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, PD_JIGGLER,
_______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, DRGSCRL,
_______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
_______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
_______, _______, _______, _______,
@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
_______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
_______, _______, _______, _______,
_______, _______, _______,
OL_LOCK, _______, _______,
_______, _______, _______,
_______, _______, _______, _______
),
@ -126,96 +126,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
TG(_DIABLOII), AUTO_CTN, TG_GAME, TG_DBLO,
_______, QK_RBT, KC_NUKE,
_______, _______, _______,
HF_TOGG, _______, _______,
_______, _______, KC_NUKE, _______
),
};
// clang-format on
#ifdef ENCODER_ENABLE
# ifdef ENCODER_MAP_ENABLE
#ifdef ENCODER_MAP_ENABLE
// clang-format off
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW( KC_VOLD, KC_VOLU ), ENCODER_CCW_CW( KC_WH_D, KC_WH_U ) },
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW( KC_VOLU, KC_VOLD ), ENCODER_CCW_CW( KC_WH_U, KC_WH_D ) },
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_DEFAULT_LAYER_4] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_GAMEPAD] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_DIABLO] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_MOUSE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( KC_WH_D, KC_WH_U ) },
[_MOUSE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_MEDIA] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_RAISE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( KC_PGDN, KC_PGUP ) },
[_LOWER] = { ENCODER_CCW_CW( RGB_MOD, RGB_RMOD), ENCODER_CCW_CW( RGB_HUD, RGB_HUI ) },
[_ADJUST] = { ENCODER_CCW_CW( CK_DOWN, CK_UP ), ENCODER_CCW_CW( _______, _______ ) },
[_RAISE] = { ENCODER_CCW_CW( OL_BINC, OL_BDEC ), ENCODER_CCW_CW( KC_PGDN, KC_PGUP ) },
[_LOWER] = { ENCODER_CCW_CW( RGB_MOD, RGB_RMOD), ENCODER_CCW_CW( RGB_HUI, RGB_HUD ) },
[_ADJUST] = { ENCODER_CCW_CW( CK_UP, CK_DOWN ), ENCODER_CCW_CW( _______, _______ ) },
};
// clang-format on
# else
deferred_token encoder_token = INVALID_DEFERRED_TOKEN;
static int8_t last_direction = -1;
static uint32_t encoder_callback(uint32_t trigger_time, void *cb_arg) {
unregister_code(last_direction ? KC_WH_D : KC_WH_U);
last_direction = -1;
return 0;
}
bool encoder_update_user(uint8_t index, bool clockwise) {
# ifdef SWAP_HANDS_ENABLE
if (swap_hands) {
index ^= 1;
}
# endif
if (index == 0) {
tap_code_delay(clockwise ? KC_VOLD : KC_VOLU, 5);
} else if (index == 1) {
if (last_direction != clockwise || encoder_token == INVALID_DEFERRED_TOKEN) {
uint8_t keycode = clockwise ? KC_WH_D : KC_WH_U;
last_direction = clockwise;
if (encoder_token != INVALID_DEFERRED_TOKEN) {
if (cancel_deferred_exec(encoder_token)) {
encoder_token = INVALID_DEFERRED_TOKEN;
}
unregister_code(clockwise ? KC_WH_U : KC_WH_D);
}
register_code(keycode);
encoder_token = defer_exec(MOUSEKEY_WHEEL_DELAY + MOUSEKEY_WHEEL_INTERVAL, encoder_callback, NULL);
} else {
extend_deferred_exec(encoder_token, MOUSEKEY_WHEEL_INTERVAL);
}
}
return false;
}
# endif
#endif
#ifdef OLED_ENABLE
# include "keyrecords/unicode.h"
oled_rotation_t oled_init_keymap(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
void oled_render_large_display(bool side) {
if (side) {
render_wpm_graph(56, 64);
} else {
oled_advance_page(true);
oled_advance_page(true);
// clang-format off
static const char PROGMEM logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
};
// clang-format on
oled_write_P(logo, false);
render_unicode_mode(1, 14);
}
}
void render_oled_title(bool side) {
oled_write_P(side ? PSTR(" Tractyl ") : PSTR(" Manuform "), true);
}

View file

@ -5,7 +5,6 @@ CUSTOM_BOOTMAGIC_ENABLE = no
CUSTOM_UNICODE_ENABLE = no
HAPTIC_ENABLE = no
OLED_ENABLE = no
OLED_DRIVER = custom
RGBLIGHT_ENABLE = no
SWAP_HANDS_ENABLE = no
TAP_DANCE_ENABLE = no
@ -16,12 +15,14 @@ ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/elite_c)
BOOTLOADER_SIZE = 512
CUSTOM_SPLIT_TRANSPORT_SYNC = no
LTO_ENABLE = yes
MOUSEKEY_ENABLE = no
endif
ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/arduinomicro)
BOOTLOADER = qmk-hid
BOOTLOADER_SIZE = 512
CUSTOM_SPLIT_TRANSPORT_SYNC = no
LTO_ENABLE = yes
MOUSEKEY_ENABLE = no
endif
ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/teensy2pp)
AUTOCORRECT_ENABLE = no
@ -33,8 +34,9 @@ ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/f411)
AUTOCORRECT_ENABLE = yes
LTO_SUPPORTED = no
OVERLOAD_FEATURES = yes
HAPTIC_ENABLE = yes
HAPTIC_DRIVER = DRV2605L
endif
# DEBOUNCE_TYPE = sym_eager_pk
ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
AUDIO_ENABLE = yes

View file

@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT \
{ 10, 10 }
#define OLED_BRIGHTNESS 50
#define RGBLIGHT_LIMIT_VAL 80
#define DEBUG_LED_PIN D6

View file

@ -94,3 +94,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef DEBOUNCE
# define DEBOUNCE 5
#endif
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_LIMIT_VAL)
# if defined(OLED_ENABLE)
# define RGBLIGHT_LIMIT_VAL 100
# else
# define RGBLIGHT_LIMIT_VAL 150
# endif
#endif
#if !defined(OLED_BRIGHTNESS)
# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
# define OLED_BRIGHTNESS 80
# else
# define OLED_BRIGHTNESS 150
# endif
#endif

View file

@ -1,83 +0,0 @@
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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 <http://www.gnu.org/licenses/>.
*/
#include "drashna.h"
/*
* The `LAYOUT_base` macro is a template to allow the use of identical
* modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
* that there is no need to set them up for each layout, and modify all of
* them if I want to change them. This helps to keep consistency and ease
* of use. K## is a placeholder to pass through the individual keycodes
*/
// clang-format off
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
#define LAYOUT_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
) \
LAYOUT_wrapper( \
KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \
ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(K1B), \
KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \
)
#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT_LAYER_1] = LAYOUT_base_wrapper(
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
),
[_DEFAULT_LAYER_2] = LAYOUT_base_wrapper(
______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________,
______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________,
______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________
),
[_DEFAULT_LAYER_3] = LAYOUT_base_wrapper(
_________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
_________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
_________________COLEMAK_L3________________, _________________COLEMAK_R3________________
),
[_DEFAULT_LAYER_4] = LAYOUT_base_wrapper(
_________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
_________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
),
[_LOWER] = LAYOUT_wrapper(
KC_TILD, _________________LOWER_L1__________________, _______, _________________LOWER_R1__________________, KC_BSPC,
KC_DEL, _________________LOWER_L2__________________, _______, _________________LOWER_R2__________________, KC_PIPE,
_______, _________________LOWER_L3__________________, _______, _________________LOWER_R3__________________, _______
),
[_RAISE] = LAYOUT_wrapper(
KC_GRV, _________________RAISE_L1__________________, _______, _________________RAISE_R1__________________, KC_BSPC,
KC_DEL, _________________RAISE_L2__________________, _______, _________________RAISE_R2__________________, KC_BSLS,
_______, _________________RAISE_L3__________________, _______, _________________RAISE_R3__________________, _______
),
[_ADJUST] = LAYOUT_wrapper(
QK_MAKE, _________________ADJUST_L1_________________, KC_NUKE, _________________ADJUST_R1_________________, QK_BOOT,
VRSN, _________________ADJUST_L2_________________, MG_NKRO, _________________ADJUST_R2_________________, EE_CLR,
TG_MODS, _________________ADJUST_L3_________________, KC_RGB_T,_________________ADJUST_R3_________________, RGB_IDL
)
};
// clang-format on

View file

@ -1,3 +0,0 @@
# @drashna's keymap for the C39
HERE BE DRAGONS

View file

@ -1,19 +0,0 @@
# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
# Bootloader selection
BOOTLOADER = stm32-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
NKRO_ENABLE = yes
AUDIO_ENABLE = yes
UNICODE_ENABLE = yes
HAPTIC_ENABLE = yes
HAPTIC_DRIVER = SOLENOID
RGBLIGHT_STARTUP_ANIMATION = yes

View file

@ -156,7 +156,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
case KC_SWAP_NUM:
if (record->event.pressed) {
userspace_config.swapped_numbers ^= 1;
eeconfig_update_user(userspace_config.raw);
eeconfig_update_user_config(&userspace_config.raw);
unregister_code(KC_1);
unregister_code(KC_2);
}

View file

@ -4,3 +4,5 @@ UNICODE_ENABLE = yes
UNICODEMAP_ENABLE = no
AUTOCORRECT_ENABLE = yes
CAPS_WORD_ENABLE = yes
BOOTLOADER = tinyuf2

View file

@ -1,4 +1,4 @@
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
/* 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
@ -16,19 +16,9 @@
#pragma once
// place overrides here
#undef MATRIX_COL_PINS
#define MATRIX_COL_PINS \
{ A3, A2, A1, A0, B13, B14, B15, B9, B3, B2, B4, A10, A9 }
#undef MATRIX_ROW_PINS
#define MATRIX_ROW_PINS \
{ B7, B1, B0 }
#if defined(KEYBOARD_splitkb_kyria_rev3)
#define CH_CFG_ST_RESOLUTION 16
#define CH_CFG_ST_FREQUENCY 10000
#endif
#define WS2812_DI_PIN B10
#define RGBLED_NUM 15
#define SOLENOID_PIN B11
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE
#include_next <chconf.h>

View file

@ -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

View file

@ -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>

View file

@ -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;
}
#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");
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;
}
}
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

View file

@ -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

View file

@ -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

View file

@ -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;
}

View file

@ -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).

View file

@ -91,8 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#ifdef ENCODER_ENABLE
# ifdef ENCODER_MAP_ENABLE
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_DEFAULT_LAYER_1] = { { KC_DOWN, KC_UP } },
[_DEFAULT_LAYER_2] = { { _______, _______ } },
@ -107,23 +106,6 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_ADJUST] = { { CK_DOWN, CK_UP } },
};
// clang-format on
# else
bool encoder_update_user(uint8_t index, bool clockwise) {
switch (get_highest_layer(layer_state)) {
case _RAISE:
clockwise ? rgblight_step() : rgblight_step_reverse();
break;
case _LOWER:
clockwise ? rgb_matrix_step() : rgb_matrix_step_reverse();
break;
default:
clockwise ? tap_code(KC_VOLU) : tap_code(KC_VOLD);
break;
}
return false;
}
# endif // ENCODER_ENABLE
#endif
bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
@ -133,8 +115,7 @@ bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
#define THUMB_LED 6
#define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__)
extern bool host_driver_disabled;
if (host_driver_disabled) {
if (get_keyboard_lock()) {
RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, RGB_OFF);
} else {
switch (get_highest_layer(default_layer_state)) {

View file

@ -1,10 +1,10 @@
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
BOOTMAGIC_ENABLE = yes
EXTRAKEY_ENABLE = yes
MOUSEKEY_ENABLE = yes
TAP_DANCE_ENABLE = no
NKRO_ENABLE = yes
RGBLIGHT_STARTUP_ANIMATION = yes
RGBLIGHT_STARTUP_ANIMATION = no
ENCODER_MAP_ENABLE = yes
AUTOCORRECT_ENABLE = no
CUSTOM_UNICODE_ENABLE = no
AUTOCORRECT_ENABLE = no
CUSTOM_UNICODE_ENABLE = no