[Keymap] Drashna Keymap Updates (#14842)
* Fix issues with user split transport code * Improve OLED (More font stuff, improved keylogger, etc) * Add `KEYLOCK` macro to disable USB, borrowed from command feature. * Convert Kyria fully to proton C (no more AVR kyria) * Add Work Louder Work Board keymap
This commit is contained in:
parent
a8422cca03
commit
9a0addc77e
19 changed files with 1035 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,19 @@
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
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…
Reference in a new issue