Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						e5662aa53d
					
				
					 19 changed files with 1036 additions and 1053 deletions
				
			
		| 
						 | 
					@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
    [_ADJUST] = LAYOUT_5x6_right_wrapper(
 | 
					    [_ADJUST] = LAYOUT_5x6_right_wrapper(
 | 
				
			||||||
        KC_MAKE, ___________________BLANK___________________,                      _________________ADJUST_R1_________________, KC_RST,
 | 
					        KC_MAKE, ___________________BLANK___________________,                      _________________ADJUST_R1_________________, KC_RST,
 | 
				
			||||||
        VRSN,    _________________ADJUST_L1_________________,                      _________________ADJUST_R1_________________, EEP_RST,
 | 
					        VRSN,    _________________ADJUST_L1_________________,                      _________________ADJUST_R1_________________, EEP_RST,
 | 
				
			||||||
        _______, _________________ADJUST_L2_________________,                      _________________ADJUST_R2_________________, TG_MODS,
 | 
					        KEYLOCK, _________________ADJUST_L2_________________,                      _________________ADJUST_R2_________________, TG_MODS,
 | 
				
			||||||
        UC_MOD,  _________________ADJUST_L3_________________,                      _________________ADJUST_R3_________________, KC_MPLY,
 | 
					        UC_MOD,  _________________ADJUST_L3_________________,                      _________________ADJUST_R3_________________, KC_MPLY,
 | 
				
			||||||
                          HPT_DWLI, HPT_DWLD,                                                        TG_GAME, TG_DBLO,
 | 
					                          HPT_DWLI, HPT_DWLD,                                                        TG_GAME, TG_DBLO,
 | 
				
			||||||
                                            HPT_TOG, HPT_BUZ,                               KC_NUKE,
 | 
					                                            HPT_TOG, HPT_BUZ,                               KC_NUKE,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
        KC_MAKE, _________________FUNC_LEFT_________________, UC_MOD,         KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
 | 
					        KC_MAKE, _________________FUNC_LEFT_________________, UC_MOD,         KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
 | 
				
			||||||
        VRSN,    _________________ADJUST_L1_________________, _______,        _______, _________________ADJUST_R1_________________, EEP_RST,
 | 
					        VRSN,    _________________ADJUST_L1_________________, _______,        _______, _________________ADJUST_R1_________________, EEP_RST,
 | 
				
			||||||
        _______, _________________ADJUST_L2_________________, _______,        _______, _________________ADJUST_R2_________________, RGB_IDL,
 | 
					        _______, _________________ADJUST_L2_________________, _______,        _______, _________________ADJUST_R2_________________, RGB_IDL,
 | 
				
			||||||
        _______, _________________ADJUST_L3_________________,                          _________________ADJUST_R3_________________, TG_MODS,
 | 
					        KEYLOCK, _________________ADJUST_L3_________________,                          _________________ADJUST_R3_________________, TG_MODS,
 | 
				
			||||||
        _______, _______, _______, _______, _______,          _______,        _______,          _______, _______, _______, _______, KC_PAUS,
 | 
					        _______, _______, _______, _______, _______,          _______,        _______,          _______, _______, _______, _______, KC_PAUS,
 | 
				
			||||||
                                            _______, _______, _______,        _______, _______, _______
 | 
					                                            _______, _______, _______,        _______, _______, _______
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,8 +92,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
    [_ADJUST] = LAYOUT_wrapper(
 | 
					    [_ADJUST] = LAYOUT_wrapper(
 | 
				
			||||||
        KC_MAKE, _________________ADJUST_L1_________________,                                       _________________ADJUST_R1_________________, KC_RESET,
 | 
					        KC_MAKE, _________________ADJUST_L1_________________,                                       _________________ADJUST_R1_________________, KC_RESET,
 | 
				
			||||||
        VRSN,    _________________ADJUST_L2_________________,                                       _________________ADJUST_R2_________________, EEP_RST,
 | 
					        VRSN,    _________________ADJUST_L2_________________,                                       _________________ADJUST_R2_________________, EEP_RST,
 | 
				
			||||||
        _______, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK,   MG_NKRO, UC_MOD,  _________________ADJUST_R3_________________, TG_MODS,
 | 
					        UC_MOD,  _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK,   MG_NKRO, UC_MOD,  _________________ADJUST_R3_________________, TG_MODS,
 | 
				
			||||||
                                   _______, _______, _______, KC_NUKE, _______,   _______, _______, _______, _______, _______
 | 
					                                   _______, _______, KEYLOCK, KC_NUKE, _______,   _______, _______, _______, _______, _______
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
//     [_LAYERINDEX] = LAYOUT_wrapper(
 | 
					//     [_LAYERINDEX] = LAYOUT_wrapper(
 | 
				
			||||||
//       _______, _______, _______, _______, _______, _______,                                       _______, _______, _______, _______, _______, _______,
 | 
					//       _______, _______, _______, _______, _______, _______,                                       _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,23 +1,20 @@
 | 
				
			||||||
OLED_ENABLE = yes
 | 
					BOOTMAGIC_ENABLE           = yes      # Enable Bootmagic Lite
 | 
				
			||||||
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
 | 
					MOUSEKEY_ENABLE            = yes      # Mouse keys
 | 
				
			||||||
ENCODER_ENABLE = yes       # ENables the use of one or more encoders
 | 
					EXTRAKEY_ENABLE            = yes      # Audio control and System control
 | 
				
			||||||
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
 | 
					CONSOLE_ENABLE             = yes      # Console for debug
 | 
				
			||||||
RGBLIGHT_STARTUP_ANIMATION = no
 | 
					COMMAND_ENABLE             = no       # Commands for debug and configuration
 | 
				
			||||||
 | 
					NKRO_ENABLE                = yes      # USB Nkey Rollover
 | 
				
			||||||
 | 
					UNICODE_ENABLE             = yes      # Unicode
 | 
				
			||||||
 | 
					OLED_ENABLE                = yes
 | 
				
			||||||
 | 
					OLED_DRIVER                = SSD1306  # Enables the use of OLED displays
 | 
				
			||||||
 | 
					ENCODER_ENABLE             = yes      # Enables the use of one or more encoders
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 | 
					RGBLIGHT_ENABLE            = no       # Enable keyboard RGB underglow
 | 
				
			||||||
MOUSEKEY_ENABLE = no       # Mouse keys
 | 
					RGBLIGHT_STARTUP_ANIMATION = yes
 | 
				
			||||||
EXTRAKEY_ENABLE = yes      # Audio control and System control
 | 
					RGB_MATRIX_ENABLE          = yes
 | 
				
			||||||
CONSOLE_ENABLE = no        # Console for debug
 | 
					TAP_DANCE_ENABLE           = yes
 | 
				
			||||||
COMMAND_ENABLE = no        # Commands for debug and configuration
 | 
					KEY_LOCK_ENABLE            = no
 | 
				
			||||||
NKRO_ENABLE = yes          # USB Nkey Rollover
 | 
					WPM_ENABLE                 = yes
 | 
				
			||||||
UNICODE_ENABLE = no       # Unicode
 | 
					SWAP_HANDS_ENABLE          = yes
 | 
				
			||||||
KEY_LOCK_ENABLE = no
 | 
					LTO_ENABLE                 = no
 | 
				
			||||||
CTPC = yes
 | 
					CTPC                       = yes
 | 
				
			||||||
 | 
					 | 
				
			||||||
# BOOTLOADER = hid
 | 
					 | 
				
			||||||
# BOOTLOADER_SIZE = 512
 | 
					 | 
				
			||||||
# PROGRAM_CMD = 	$(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
 | 
					 | 
				
			||||||
# TAP_DANCE_ENABLE = yes
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
WPM_ENABLE = yes
 | 
					 | 
				
			||||||
SWAP_HANDS_ENABLE = yes
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,3 +32,6 @@
 | 
				
			||||||
#define OLED_LOGO_SCIFI
 | 
					#define OLED_LOGO_SCIFI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ENCODER_RESOLUTION 2
 | 
					#define ENCODER_RESOLUTION 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_TWINKLE+4
 | 
				
			||||||
 | 
					#define RGBLIGHT_DEFAULT_HUE 213
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								keyboards/work_louder/work_board/keymaps/drashna/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								keyboards/work_louder/work_board/keymaps/drashna/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					/* 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/>.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
							
								
								
									
										217
									
								
								keyboards/work_louder/work_board/keymaps/drashna/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								keyboards/work_louder/work_board/keymaps/drashna/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,217 @@
 | 
				
			||||||
 | 
					/* 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PLNK_1 SP_LWER
 | 
				
			||||||
 | 
					#define PLNK_2 BK_LWER
 | 
				
			||||||
 | 
					#define PLNK_3 DL_RAIS
 | 
				
			||||||
 | 
					#define PLNK_4 ET_RAIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The `LAYOUT_ortho_4x12_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,     K06,     K07,     K08,     K09,     K0A,     KC_DEL, KC_MUTE, \
 | 
				
			||||||
 | 
					    LALT_T(KC_TAB), K11, K12, K13,      K14,     K15,     K16,     K17,     K18,     K19,     K1A, RALT_T(K1B), \
 | 
				
			||||||
 | 
					    KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     K26,     K27,     K28,     K29, RCTL_T(K2A), KC_ENT,  \
 | 
				
			||||||
 | 
					    OS_LSFT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1,  PLNK_2,  PLNK_3,  PLNK_4,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT  \
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					#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__________________, _______,
 | 
				
			||||||
 | 
					    _______, _______, _______, _______, _______, _______, _______, _________________RAISE_R3__________________
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [_ADJUST] = LAYOUT_wrapper(
 | 
				
			||||||
 | 
					    KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, _______,
 | 
				
			||||||
 | 
					    VRSN,    _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
 | 
				
			||||||
 | 
					    _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
 | 
				
			||||||
 | 
					    KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ENCODER_ENABLE
 | 
				
			||||||
 | 
					#   ifdef ENCODER_MAP_ENABLE
 | 
				
			||||||
 | 
					const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
				
			||||||
 | 
					    [_DEFAULT_LAYER_1] = { { KC_DOWN, KC_UP   } },
 | 
				
			||||||
 | 
					    [_DEFAULT_LAYER_2] = { { _______, _______ } },
 | 
				
			||||||
 | 
					    [_DEFAULT_LAYER_3] = { { _______, _______ } },
 | 
				
			||||||
 | 
					    [_DEFAULT_LAYER_4] = { { _______, _______ } },
 | 
				
			||||||
 | 
					    [_GAMEPAD]         = { { _______, _______ } },
 | 
				
			||||||
 | 
					    [_DIABLO]          = { { _______, _______ } },
 | 
				
			||||||
 | 
					    [_MOUSE]           = { { KC_WH_D, KC_WH_U } },
 | 
				
			||||||
 | 
					    [_MEDIA]           = { { _______, _______ } },
 | 
				
			||||||
 | 
					    [_RAISE]           = { { KC_VOLD, KC_VOLU } },
 | 
				
			||||||
 | 
					    [_LOWER]           = { { RGB_MOD, RGB_RMOD} },
 | 
				
			||||||
 | 
					    [_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_VOLD) : tap_code(KC_VOLU);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#    endif  // ENCODER_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void rgb_matrix_indicators_user(void) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
 | 
				
			||||||
 | 
					    uint8_t this_mod = get_mods();
 | 
				
			||||||
 | 
					    uint8_t this_led = host_keyboard_leds();
 | 
				
			||||||
 | 
					    uint8_t this_osm = get_oneshot_mods();
 | 
				
			||||||
 | 
					#define THUMB_LED                                   6
 | 
				
			||||||
 | 
					#define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__)
 | 
				
			||||||
 | 
					    if (!userspace_config.rgb_layer_change) {
 | 
				
			||||||
 | 
					        switch (get_highest_layer(layer_state | default_layer_state)) {
 | 
				
			||||||
 | 
					            case _GAMEPAD:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DIABLO:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _RAISE:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _LOWER:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _ADJUST:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_1:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_2:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_3:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_4:
 | 
				
			||||||
 | 
					                rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    extern bool host_driver_disabled;
 | 
				
			||||||
 | 
					    if (host_driver_disabled) {
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, RGB_OFF);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        switch (get_highest_layer(default_layer_state)) {
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_1:
 | 
				
			||||||
 | 
					                RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_1_RGB);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_2:
 | 
				
			||||||
 | 
					                RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_2_RGB);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_3:
 | 
				
			||||||
 | 
					                RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_3_RGB);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case _DEFAULT_LAYER_4:
 | 
				
			||||||
 | 
					                RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_4_RGB);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
				
			||||||
 | 
					        if (!layer_state_is(_ADJUST)) {
 | 
				
			||||||
 | 
					            RGB_MATRIX_INDICATOR_SET_COLOR(12, 0x00, 0xFF, 0x00);
 | 
				
			||||||
 | 
					            RGB_MATRIX_INDICATOR_SET_COLOR(13, 0x00, 0xFF, 0x00);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(24, 0x00, 0xFF, 0x00);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ((this_mod | this_osm) & MOD_MASK_CTRL) {
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(11, 0xFF, 0x00, 0x00);
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(23, 0xFF, 0x00, 0x00);
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(14, 0xFF, 0x00, 0x00);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ((this_mod | this_osm) & MOD_MASK_GUI) {
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(9, 0xFF, 0xD9, 0x00);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ((this_mod | this_osm) & MOD_MASK_ALT) {
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(10, 0x00, 0x00, 0xFF);
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x00, 0x00, 0xFF);
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(36, 0x00, 0x00, 0xFF);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (layer_state_is(_LOWER)) {
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(7, 0x00, 0xFF, 0x00);
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(8, 0x00, 0xFF, 0x00);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (layer_state_is(_RAISE)) {
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(4, 0xFF, 0xFF, 0x00);
 | 
				
			||||||
 | 
					        RGB_MATRIX_INDICATOR_SET_COLOR(5, 0xFF, 0xFF, 0x00);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					BOOTMAGIC_ENABLE            = lite
 | 
				
			||||||
 | 
					EXTRAKEY_ENABLE             = yes
 | 
				
			||||||
 | 
					TAP_DANCE_ENABLE            = no
 | 
				
			||||||
 | 
					NKRO_ENABLE                 = yes
 | 
				
			||||||
 | 
					RGBLIGHT_STARTUP_ANIMATION  = yes
 | 
				
			||||||
 | 
					ENCODER_MAP_ENABLE          = yes
 | 
				
			||||||
| 
						 | 
					@ -174,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
             KC_MAKE, _______, _______, _______, _______, _______, UC_MOD,                  KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
 | 
					             KC_MAKE, _______, _______, _______, _______, _______, UC_MOD,                  KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
 | 
				
			||||||
             VRSN,    _________________ADJUST_L1_________________, _______,                 _______, _________________ADJUST_R1_________________, EEP_RST,
 | 
					             VRSN,    _________________ADJUST_L1_________________, _______,                 _______, _________________ADJUST_R1_________________, EEP_RST,
 | 
				
			||||||
             _______, _________________ADJUST_L2_________________,                                   _________________ADJUST_R2_________________, RGB_IDL,
 | 
					             _______, _________________ADJUST_L2_________________,                                   _________________ADJUST_R2_________________, RGB_IDL,
 | 
				
			||||||
             _______, _________________ADJUST_L3_________________, _______,                 _______, _________________ADJUST_R3_________________, TG_MODS,
 | 
					             KEYLOCK, _________________ADJUST_L3_________________, _______,                 _______, _________________ADJUST_R3_________________, TG_MODS,
 | 
				
			||||||
             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
					             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
				
			||||||
                                                          _______, _______,                 _______, _______,
 | 
					                                                          _______, _______,                 _______, _______,
 | 
				
			||||||
                                                                   _______,                 _______,
 | 
					                                                                   _______,                 _______,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
    KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
 | 
					    KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
 | 
				
			||||||
    VRSN,    _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
 | 
					    VRSN,    _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
 | 
				
			||||||
    TH_LVL,  _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
 | 
					    TH_LVL,  _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
 | 
				
			||||||
    HPT_TOG, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
 | 
					    KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST,
 | 
					  KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST,
 | 
				
			||||||
  VRSN,    _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST,
 | 
					  VRSN,    _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST,
 | 
				
			||||||
  _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL,
 | 
					  _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL,
 | 
				
			||||||
  _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
 | 
					  KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
 | 
				
			||||||
  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
					  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  [_ADJUST] = LAYOUT_split_3x6_3_wrapper( \
 | 
					  [_ADJUST] = LAYOUT_split_3x6_3_wrapper( \
 | 
				
			||||||
    KC_MAKE, _________________ADJUST_L1_________________,                    _________________ADJUST_R1_________________, KC_RESET,
 | 
					    KC_MAKE, _________________ADJUST_L1_________________,                    _________________ADJUST_R1_________________, KC_RESET,
 | 
				
			||||||
    VRSN,    _________________ADJUST_L2_________________,                    _________________ADJUST_R2_________________, EEP_RST,
 | 
					    VRSN,    _________________ADJUST_L2_________________,                    _________________ADJUST_R2_________________, EEP_RST,
 | 
				
			||||||
    MG_NKRO, _________________ADJUST_L3_________________,                    _________________ADJUST_R3_________________, RGB_IDL,
 | 
					    KEYLOCK, _________________ADJUST_L3_________________,                    _________________ADJUST_R3_________________, RGB_IDL,
 | 
				
			||||||
                                     HPT_TOG, KC_NUKE, _______,        _______, TG_MODS, HPT_FBK
 | 
					                                     HPT_TOG, KC_NUKE, _______,        _______, TG_MODS, HPT_FBK
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,8 +103,11 @@ void                       shutdown_user(void) {
 | 
				
			||||||
#ifdef RGB_MATRIX_ENABLE
 | 
					#ifdef RGB_MATRIX_ENABLE
 | 
				
			||||||
    rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
 | 
					    rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
 | 
				
			||||||
    rgb_matrix_update_pwm_buffers();
 | 
					    rgb_matrix_update_pwm_buffers();
 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif  // RGB_MATRIX_ENABLE
 | 
					#endif  // RGB_MATRIX_ENABLE
 | 
				
			||||||
 | 
					#ifdef OLED_ENABLE
 | 
				
			||||||
 | 
					    oled_off();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shutdown_keymap();
 | 
					    shutdown_keymap();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -16,6 +16,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "drashna.h"
 | 
					#include "drashna.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern bool host_driver_disabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef KEYLOGGER_LENGTH
 | 
					#ifndef KEYLOGGER_LENGTH
 | 
				
			||||||
// #    ifdef OLED_DISPLAY_128X64
 | 
					// #    ifdef OLED_DISPLAY_128X64
 | 
				
			||||||
#    define KEYLOGGER_LENGTH ((uint8_t)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
 | 
					#    define KEYLOGGER_LENGTH ((uint8_t)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
 | 
				
			||||||
| 
						 | 
					@ -29,24 +31,24 @@ static char     keylog_str[KEYLOGGER_LENGTH + 1] = {0};
 | 
				
			||||||
static uint16_t log_timer                        = 0;
 | 
					static uint16_t log_timer                        = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// clang-format off
 | 
					// clang-format off
 | 
				
			||||||
static const char PROGMEM code_to_name[0xFF] = {
 | 
					static const char PROGMEM code_to_name[256] = {
 | 
				
			||||||
//   0    1    2    3    4    5    6    7    8    9    A    B    c    D    E    F
 | 
					//   0    1    2    3    4    5    6    7    8    9    A    B    c    D    E    F
 | 
				
			||||||
    ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',  // 0x
 | 
					    ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',  // 0x
 | 
				
			||||||
    'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2',  // 1x
 | 
					    'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2',  // 1x
 | 
				
			||||||
    '3', '4', '5', '6', '7', '8', '9', '0',  20,  19,  27,  26,  22, '-', '=', '[',  // 2x
 | 
					    '3', '4', '5', '6', '7', '8', '9', '0',  20,  19,  27,  26,  22, '-', '=', '[',  // 2x
 | 
				
			||||||
    ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ',  // 3x
 | 
					    ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, '1', '2', '3', '4', '5', '6',  // 3x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ',  16, ' ', ' ', ' ',  // 4x
 | 
					    '7', '8', '9', '0', '1', '2', 'P', 'S',  19, ' ',  17,  30,  16,  16,  31,  26,  // 4x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 5x
 | 
					     27,  25,  24, 'N', '/', '*', '-', '+',  23, '1', '2', '3', '4', '5', '6', '7',  // 5x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 6x
 | 
					    '8', '9', '0', '.','\\', 'A',   0, '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 6x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 7x
 | 
					    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 7x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 8x
 | 
					    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 8x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 9x
 | 
					    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // 9x
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Ax
 | 
					    ' ', ' ', ' ', ' ', ' ',   0, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Ax
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Bx
 | 
					    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Bx
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Cx
 | 
					    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Cx
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Dx
 | 
					    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Dx
 | 
				
			||||||
    'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',  // Ex
 | 
					    'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 24,  26,  24,  // Ex
 | 
				
			||||||
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '        // Fx
 | 
					     25,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,  24,  25,  27,  26,  ' ', ' ', ' '   // Fx
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
// clang-format on
 | 
					// clang-format on
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,8 +150,8 @@ void render_keylock_status(uint8_t led_usb_state) {
 | 
				
			||||||
    oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
 | 
					    oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
 | 
				
			||||||
    oled_write_P(PSTR(" "), false);
 | 
					    oled_write_P(PSTR(" "), false);
 | 
				
			||||||
    oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
 | 
					    oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
 | 
				
			||||||
    oled_write_P(PSTR(" "), false);
 | 
					//    oled_write_P(PSTR(" "), false);
 | 
				
			||||||
    oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
 | 
					//    oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void render_matrix_scan_rate(void) {
 | 
					void render_matrix_scan_rate(void) {
 | 
				
			||||||
| 
						 | 
					@ -292,12 +294,22 @@ void render_user_status(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
 | 
					    static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
 | 
				
			||||||
    oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
 | 
					    oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
 | 
				
			||||||
    static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
 | 
					    static const char PROGMEM cat_mode[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
 | 
				
			||||||
    oled_write_P(nukem_good[0], userspace_config.nuke_switch);
 | 
					    oled_write_P(cat_mode[0], host_driver_disabled);
 | 
				
			||||||
#if defined(UNICODE_ENABLE)
 | 
					#if defined(UNICODE_ENABLE)
 | 
				
			||||||
    static const char PROGMEM uc_mod_status[5][3] = {{0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
 | 
					    static const char PROGMEM uc_mod_status[5][3] = {{0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
 | 
				
			||||||
    oled_write_P(uc_mod_status[get_unicode_input_mode() == UC_MAC], false);
 | 
					    oled_write_P(uc_mod_status[get_unicode_input_mode() == UC_MAC], false);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					    if (userspace_config.nuke_switch) {
 | 
				
			||||||
 | 
					#if !defined(OLED_DISPLAY_128X64)
 | 
				
			||||||
 | 
					        oled_write_P(PSTR(" "), false);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        static const char PROGMEM nukem_good[2] = {0xFA, 0};
 | 
				
			||||||
 | 
					        oled_write_P(nukem_good, false);
 | 
				
			||||||
 | 
					#if !defined(OLED_DISPLAY_128X64)
 | 
				
			||||||
 | 
					        oled_advance_page(true);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
#if defined(OLED_DISPLAY_128X64)
 | 
					#if defined(OLED_DISPLAY_128X64)
 | 
				
			||||||
    oled_advance_page(true);
 | 
					    oled_advance_page(true);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
#include "version.h"
 | 
					#include "version.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint16_t copy_paste_timer;
 | 
					uint16_t copy_paste_timer;
 | 
				
			||||||
 | 
					bool     host_driver_disabled = false;
 | 
				
			||||||
// Defines actions tor my global custom keycodes. Defined in drashna.h file
 | 
					// Defines actions tor my global custom keycodes. Defined in drashna.h file
 | 
				
			||||||
// Then runs the _keymap's record handier if not processed here
 | 
					// Then runs the _keymap's record handier if not processed here
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -198,6 +198,23 @@ bool                       process_record_user(uint16_t keycode, keyrecord_t *re
 | 
				
			||||||
                    eeconfig_update_user(userspace_config.raw);
 | 
					                    eeconfig_update_user(userspace_config.raw);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case KEYLOCK: {
 | 
				
			||||||
 | 
					            static host_driver_t *host_driver = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                if (host_get_driver()) {
 | 
				
			||||||
 | 
					                    host_driver = host_get_driver();
 | 
				
			||||||
 | 
					                    clear_keyboard();
 | 
				
			||||||
 | 
					                    host_set_driver(0);
 | 
				
			||||||
 | 
					                    host_driver_disabled = true;
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    host_set_driver(host_driver);
 | 
				
			||||||
 | 
					                    host_driver_disabled = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,6 +46,7 @@ enum userspace_custom_keycodes {
 | 
				
			||||||
    UC_TABL,                                  // ┬─┬ノ( º _ ºノ)
 | 
					    UC_TABL,                                  // ┬─┬ノ( º _ ºノ)
 | 
				
			||||||
    UC_SHRG,                                  // ¯\_(ツ)_/¯
 | 
					    UC_SHRG,                                  // ¯\_(ツ)_/¯
 | 
				
			||||||
    UC_DISA,                                  // ಠ_ಠ
 | 
					    UC_DISA,                                  // ಠ_ಠ
 | 
				
			||||||
 | 
					    KEYLOCK,                                  // Locks keyboard by unmounting driver
 | 
				
			||||||
    NEW_SAFE_RANGE                            // use "NEWPLACEHOLDER for keymap specific codes
 | 
					    NEW_SAFE_RANGE                            // use "NEWPLACEHOLDER for keymap specific codes
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,15 +33,16 @@ extern bool tap_toggling;
 | 
				
			||||||
extern bool swap_hands;
 | 
					extern bool swap_hands;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
extern userspace_config_t userspace_config;
 | 
					extern userspace_config_t userspace_config;
 | 
				
			||||||
 | 
					extern bool               host_driver_disabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint16_t transport_keymap_config    = 0;
 | 
					uint16_t transport_keymap_config    = 0;
 | 
				
			||||||
uint32_t transport_userspace_config = 0;
 | 
					uint32_t transport_userspace_config = 0, transport_user_state = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
user_runtime_config_t user_state;
 | 
					user_runtime_config_t user_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
 | 
					void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
 | 
				
			||||||
    if (initiator2target_buffer_size == sizeof(user_state)) {
 | 
					    if (initiator2target_buffer_size == sizeof(transport_user_state)) {
 | 
				
			||||||
        memcpy(&user_state, initiator2target_buffer, initiator2target_buffer_size);
 | 
					        memcpy(&transport_user_state, initiator2target_buffer, initiator2target_buffer_size);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
 | 
					void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
 | 
				
			||||||
| 
						 | 
					@ -79,9 +80,13 @@ void user_transport_update(void) {
 | 
				
			||||||
#ifdef SWAP_HANDS_ENABLE
 | 
					#ifdef SWAP_HANDS_ENABLE
 | 
				
			||||||
        user_state.swap_hands = swap_hands;
 | 
					        user_state.swap_hands = swap_hands;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					        user_state.host_driver_disabled = host_driver_disabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        transport_user_state = user_state.raw;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        keymap_config.raw    = transport_keymap_config;
 | 
					        keymap_config.raw    = transport_keymap_config;
 | 
				
			||||||
        userspace_config.raw = transport_userspace_config;
 | 
					        userspace_config.raw = transport_userspace_config;
 | 
				
			||||||
 | 
					        user_state.raw       = transport_user_state;
 | 
				
			||||||
#ifdef UNICODE_ENABLE
 | 
					#ifdef UNICODE_ENABLE
 | 
				
			||||||
        unicode_config.input_mode = user_state.unicode_mode;
 | 
					        unicode_config.input_mode = user_state.unicode_mode;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -91,22 +96,21 @@ void user_transport_update(void) {
 | 
				
			||||||
#ifdef SWAP_HANDS_ENABLE
 | 
					#ifdef SWAP_HANDS_ENABLE
 | 
				
			||||||
        swap_hands = user_state.swap_hands;
 | 
					        swap_hands = user_state.swap_hands;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					        host_driver_disabled = user_state.host_driver_disabled;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void user_transport_sync(void) {
 | 
					void user_transport_sync(void) {
 | 
				
			||||||
    if (is_keyboard_master()) {
 | 
					    if (is_keyboard_master()) {
 | 
				
			||||||
        // Keep track of the last state, so that we can tell if we need to propagate to slave
 | 
					        // Keep track of the last state, so that we can tell if we need to propagate to slave
 | 
				
			||||||
        static user_runtime_config_t last_user_state;
 | 
					 | 
				
			||||||
        static uint16_t              last_keymap = 0;
 | 
					        static uint16_t              last_keymap = 0;
 | 
				
			||||||
        static uint32_t              last_config = 0;
 | 
					        static uint32_t              last_config = 0, last_sync[3], last_user_state = 0;
 | 
				
			||||||
        static uint32_t              last_sync[3];
 | 
					 | 
				
			||||||
        bool                         needs_sync = false;
 | 
					        bool                         needs_sync = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Check if the state values are different
 | 
					        // Check if the state values are different
 | 
				
			||||||
        if (memcmp(&user_state, &last_user_state, sizeof(user_state))) {
 | 
					        if (memcmp(&transport_user_state, &last_user_state, sizeof(transport_user_state))) {
 | 
				
			||||||
            needs_sync = true;
 | 
					            needs_sync = true;
 | 
				
			||||||
            memcpy(&last_user_state, &user_state, sizeof(user_state));
 | 
					            memcpy(&last_user_state, &transport_user_state, sizeof(transport_user_state));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // Send to slave every 500ms regardless of state change
 | 
					        // Send to slave every 500ms regardless of state change
 | 
				
			||||||
        if (timer_elapsed32(last_sync[0]) > 250) {
 | 
					        if (timer_elapsed32(last_sync[0]) > 250) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,12 +19,16 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "drashna.h"
 | 
					#include "drashna.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__attribute__((aligned(8))) typedef struct {
 | 
					typedef union {
 | 
				
			||||||
    bool audio_enable;
 | 
					    uint32_t raw;
 | 
				
			||||||
    bool audio_clicky_enable;
 | 
					    struct {
 | 
				
			||||||
    bool tap_toggling;
 | 
					        bool audio_enable         :1;
 | 
				
			||||||
    bool unicode_mode;
 | 
					        bool audio_clicky_enable  :1;
 | 
				
			||||||
    bool swap_hands;
 | 
					        bool tap_toggling         :1;
 | 
				
			||||||
 | 
					        bool unicode_mode         :1;
 | 
				
			||||||
 | 
					        bool swap_hands           :1;
 | 
				
			||||||
 | 
					        bool host_driver_disabled :1;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
} user_runtime_config_t;
 | 
					} user_runtime_config_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern user_runtime_config_t user_state;
 | 
					extern user_runtime_config_t user_state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue