[Keymap] Add narze userspace (#6652)
* Refactor & reimplement mod tap macros * Reduce tapping term * Update readme * Add narze userspace * Make use of narze userspace * Extract Superduper mode * Refactor Superduper mode * (Ergodox Infinity) Prevent stuck modifiers * Update ergodox_infinity/narze likewise * Add warning for building Infinity with docker * Fix include eeprom.h in superduper * Try enabling superduper mode with combo for ergodox infinity * Apply suggestions on #4546 * Convert to 4 spaces * Map backlight step key * Replace PLAY_NOTE_ARRAY * Fix superduper toggle * Re enable audio in planck rev4 * Use perform_space_cadet * Remove superduper mod tap triggers * Add readme for planck light firmware flashing command * Remove unused layers * Remove unused keycodes * Add backlight toggle * Remove unused songs & use DEFAULT_LAYER_SONGS * Update readme * Move includes to header file
This commit is contained in:
parent
6ca29f2b9b
commit
c21281c593
14 changed files with 523 additions and 775 deletions
|
@ -1,14 +1,11 @@
|
|||
#ifndef CONFIG_H_
|
||||
#define CONFIG_H_
|
||||
|
||||
#include "../../config.h"
|
||||
#pragma once
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 150
|
||||
|
||||
// Combos not working yet
|
||||
// #define COMBO_TERM 20
|
||||
// #define COMBO_COUNT 1
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_COUNT 1
|
||||
// #define COMBO_ALLOW_ACTION_KEYS
|
||||
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
|
@ -16,5 +13,3 @@
|
|||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 100
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,93 +1,55 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
// #include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "narze.h"
|
||||
#include "version.h"
|
||||
#include "eeconfig.h"
|
||||
#include "eeprom.h"
|
||||
#include "keymap_colemak.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
enum ergodox_layers {
|
||||
_QWERTY,
|
||||
_COLEMAK,
|
||||
_QWOC,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_PLOVER,
|
||||
// Intermediate layers for SuperDuper (Combo keys does not work on Infinity yet)
|
||||
_SUPER,
|
||||
_DUPER,
|
||||
_SUPERDUPER,
|
||||
_MOUSE,
|
||||
_ADJUST,
|
||||
_MDIA,
|
||||
_SYMB,
|
||||
_QWERTY,
|
||||
_COLEMAK,
|
||||
_QWOC,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_PLOVER,
|
||||
// Intermediate layers for SuperDuper (Combo keys does not work on Infinity yet)
|
||||
_SUPERDUPER,
|
||||
_MOUSE,
|
||||
_ADJUST,
|
||||
_MDIA,
|
||||
_SYMB,
|
||||
};
|
||||
|
||||
enum ergodox_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
QWOC,
|
||||
PLOVER,
|
||||
SUPER,
|
||||
DUPER,
|
||||
SUPERDUPER,
|
||||
MOUSE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
BACKLIT,
|
||||
EXT_PLV,
|
||||
SDTOGG, // Toggle SuperDuper
|
||||
EPRM,
|
||||
VRSN,
|
||||
RGB_SLD
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
QWOC,
|
||||
LOWER,
|
||||
RAISE,
|
||||
PLOVER,
|
||||
SUPERDUPER,
|
||||
MOUSE,
|
||||
BACKLIT,
|
||||
EXT_PLV,
|
||||
SDTOGG, // Toggle SuperDuper
|
||||
EPRM,
|
||||
VRSN,
|
||||
RGB_SLD,
|
||||
GUI_UNDS,
|
||||
LSFT_LPRN,
|
||||
RSFT_RPRN,
|
||||
};
|
||||
|
||||
enum functions {
|
||||
M_GUI_UNDS, // Simulate GUI_T(KC_UNDS)
|
||||
M_SFT_PO, // SFT_T(KC_LPRN)
|
||||
M_SFT_PC, // SFT_T(KC_RPRN)
|
||||
};
|
||||
|
||||
// Timer for custom mod tap
|
||||
static uint16_t m_gui_unds_timer;
|
||||
static uint16_t m_sft_po_timer;
|
||||
static uint16_t m_sft_pc_timer;
|
||||
|
||||
// Narze : Custom Macros
|
||||
#define HPR_ESC ALL_T(KC_ESC)
|
||||
#define SFT_ENT SFT_T(KC_ENT)
|
||||
#define SFT_PO F(M_SFT_PO)
|
||||
#define SFT_PC F(M_SFT_PC)
|
||||
#define SFT_PO LSFT_LPRN
|
||||
#define SFT_PC RSFT_RPRN
|
||||
#define GUI_MINS GUI_T(KC_MINS)
|
||||
#define GUI_UNDS F(M_GUI_UNDS)
|
||||
|
||||
// Combo : SuperDuper layer from S+D (R+S in Colemak)
|
||||
// #define COMBO_COUNT 1
|
||||
// #define SUPERDUPER_COMBO_COUNT 3
|
||||
// #define EECONFIG_SUPERDUPER_INDEX (uint8_t *) 19
|
||||
|
||||
// enum process_combo_event {
|
||||
// CB_SUPERDUPER,
|
||||
// };
|
||||
|
||||
// const uint16_t PROGMEM superduper_combos[SUPERDUPER_COMBO_COUNT][3] = {
|
||||
// [_QWERTY] = {KC_S, KC_D, COMBO_END},
|
||||
// [_COLEMAK] = {KC_R, KC_S, COMBO_END},
|
||||
// [_QWOC] = {CM_S, CM_D, COMBO_END},
|
||||
// };
|
||||
|
||||
// combo_t PROGMEM key_combos[COMBO_COUNT] = {
|
||||
// [CB_SUPERDUPER] = COMBO_ACTION(superduper_combos[_QWERTY]),
|
||||
// };
|
||||
|
||||
// volatile bool superduper_enabled = true;
|
||||
|
||||
// const uint16_t empty_combo[] = {COMBO_END};
|
||||
|
||||
// void set_superduper_key_combos(void);
|
||||
// void clear_superduper_key_combos(void);
|
||||
enum process_combo_event {
|
||||
CB_SUPERDUPER,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
|
@ -115,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
// left hand
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SYMB, KC_NO),
|
||||
HPR_ESC, KC_A, LT(_SUPER, KC_S), LT(_DUPER, KC_D), KC_F, KC_G,
|
||||
HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
SFT_PO, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||
LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
|
||||
KC_ENT, KC_LGUI,
|
||||
|
@ -156,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
// left hand
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SYMB, KC_NO),
|
||||
HPR_ESC, KC_A, LT(_SUPER,KC_R), LT(_DUPER,KC_S), KC_T, KC_D,
|
||||
HPR_ESC, KC_A, KC_R, KC_S, KC_T, KC_D,
|
||||
SFT_PO, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||
LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
|
||||
KC_ENT, KC_LGUI,
|
||||
|
@ -177,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
// left hand
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
|
||||
KC_TAB, CM_Q, CM_W, CM_E, CM_R, CM_T, LT(_SYMB, KC_NO),
|
||||
HPR_ESC, CM_A, LT(_SUPER,CM_S), LT(_DUPER,CM_D), CM_F, CM_G,
|
||||
HPR_ESC, CM_A, CM_S, CM_D, CM_F, CM_G,
|
||||
SFT_PO, LT(_MOUSE, CM_Z), CM_X, CM_C, CM_V, CM_B, ALL_T(KC_NO),
|
||||
LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
|
||||
KC_ENT, KC_LGUI,
|
||||
|
@ -357,47 +319,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
_______,
|
||||
_______,_______, KC_LSFT
|
||||
),
|
||||
// Intermediate keymaps for SuperDuper (Combo keys does not work on Infinity yet)
|
||||
[_SUPER] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, DUPER, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______,
|
||||
_______,
|
||||
_______,_______,_______,
|
||||
// right hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______,
|
||||
_______,
|
||||
_______,_______, _______
|
||||
),
|
||||
[_DUPER] = LAYOUT_ergodox(
|
||||
// left hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, SUPER, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______,
|
||||
_______,
|
||||
_______,_______,_______,
|
||||
// right hand
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______,
|
||||
_______,
|
||||
_______,_______, _______
|
||||
),
|
||||
|
||||
/* Mouse
|
||||
*
|
||||
|
@ -452,7 +373,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | |SDTogg| | | | | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | BACKLIT|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
|
@ -477,7 +398,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
_______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
AG_SWAP, QWERTY, COLEMAK, QWOC, PLOVER, _______,
|
||||
_______, SDTOGG, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, BACKLIT,
|
||||
_______, _______,
|
||||
_______,
|
||||
_______,_______, _______
|
||||
|
@ -569,146 +490,123 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
)
|
||||
};
|
||||
|
||||
void persistant_default_layer_set(uint16_t default_layer) {
|
||||
eeconfig_update_default_layer(default_layer);
|
||||
default_layer_set(default_layer);
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<_QWERTY);
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
|
||||
// key_combos[CB_SUPERDUPER].keys = superduper_combos[_QWERTY];
|
||||
// eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, _QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<_COLEMAK);
|
||||
set_superduper_key_combo_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
|
||||
// key_combos[CB_SUPERDUPER].keys = superduper_combos[_COLEMAK];
|
||||
// eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, _COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case QWOC:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<_QWOC);
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
|
||||
// key_combos[CB_SUPERDUPER].keys = superduper_combos[_QWOC];
|
||||
// eeprom_update_byte(EECONFIG_SUPERDUPER_INDEX, _QWOC);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case SUPER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_SUPER);
|
||||
update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
|
||||
} else {
|
||||
layer_off(_SUPER);
|
||||
update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DUPER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_DUPER);
|
||||
update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
|
||||
} else {
|
||||
layer_off(_DUPER);
|
||||
update_tri_layer(_SUPER, _DUPER, _SUPERDUPER);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case BACKLIT:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case PLOVER:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_RAISE);
|
||||
layer_off(_LOWER);
|
||||
layer_off(_ADJUST);
|
||||
layer_on(_PLOVER);
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
keymap_config.nkro = 1;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case EXT_PLV:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_PLOVER);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case SDTOGG:
|
||||
if (record->event.pressed) {
|
||||
// superduper_enabled = !superduper_enabled;
|
||||
set_superduper_key_combo_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
|
||||
// if (superduper_enabled) {
|
||||
// set_superduper_key_combos();
|
||||
// } else {
|
||||
// clear_superduper_key_combos();
|
||||
// }
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case EPRM:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_init();
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case VRSN:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGB_SLD:
|
||||
if (record->event.pressed) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode(1);
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
case QWOC:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWOC);
|
||||
|
||||
set_superduper_key_combo_layer(_QWOC);
|
||||
}
|
||||
return false;
|
||||
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
|
||||
case BACKLIT:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
return false;
|
||||
|
||||
case PLOVER:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_RAISE);
|
||||
layer_off(_LOWER);
|
||||
layer_off(_ADJUST);
|
||||
layer_on(_PLOVER);
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
keymap_config.nkro = 1;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
return false;
|
||||
|
||||
case EXT_PLV:
|
||||
if (record->event.pressed) {
|
||||
layer_off(_PLOVER);
|
||||
}
|
||||
return false;
|
||||
|
||||
case SDTOGG:
|
||||
if (record->event.pressed) {
|
||||
toggle_superduper_mode();
|
||||
}
|
||||
return false;
|
||||
|
||||
case VRSN:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||
}
|
||||
return false;
|
||||
|
||||
case RGB_SLD:
|
||||
if (record->event.pressed) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode(1);
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
|
||||
// Macros
|
||||
|
||||
// 1. Hold for LGUI, tap for Underscore
|
||||
case GUI_UNDS:
|
||||
perform_space_cadet(record, KC_LGUI, KC_LSFT, KC_MINS);
|
||||
return false;
|
||||
|
||||
// 2. Hold for LSHIFT, tap for Parens open
|
||||
case LSFT_LPRN:
|
||||
perform_space_cadet(record, KC_LSFT, KC_LSFT, KC_9);
|
||||
return false;
|
||||
|
||||
// 3. Hold for RSHIFT, tap for Parens close
|
||||
case RSFT_RPRN:
|
||||
perform_space_cadet(record, KC_RSFT, KC_RSFT, KC_0);
|
||||
return false;
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
|
@ -716,25 +614,9 @@ void matrix_init_user(void) {
|
|||
}
|
||||
|
||||
void matrix_setup(void) {
|
||||
// set_superduper_key_combos();
|
||||
set_superduper_key_combos();
|
||||
}
|
||||
|
||||
// void set_superduper_key_combos(void) {
|
||||
// uint8_t layer = eeprom_read_byte(EECONFIG_SUPERDUPER_INDEX);
|
||||
|
||||
// switch (layer) {
|
||||
// case _QWERTY:
|
||||
// case _COLEMAK:
|
||||
// case _QWOC:
|
||||
// key_combos[CB_SUPERDUPER].keys = superduper_combos[layer];
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
// void clear_superduper_key_combos(void) {
|
||||
// key_combos[CB_SUPERDUPER].keys = empty_combo;
|
||||
// }
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
// uint8_t layer = biton32(layer_state);
|
||||
|
||||
|
@ -758,91 +640,17 @@ void matrix_scan_user(void) {
|
|||
|
||||
// Combos
|
||||
|
||||
// void process_combo_event(uint8_t combo_index, bool pressed) {
|
||||
// if (pressed) {
|
||||
// switch(combo_index) {
|
||||
// case CB_SUPERDUPER:
|
||||
// layer_on(_SUPERDUPER);
|
||||
// ergodox_board_led_on();
|
||||
// break;
|
||||
// }
|
||||
// } else {
|
||||
// layer_off(_SUPERDUPER);
|
||||
// ergodox_board_led_off();
|
||||
// unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them
|
||||
// }
|
||||
// }
|
||||
|
||||
// Macros
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[M_GUI_UNDS] = ACTION_MACRO_TAP(M_GUI_UNDS),
|
||||
[M_SFT_PO] = ACTION_MACRO_TAP(M_SFT_PO),
|
||||
[M_SFT_PC] = ACTION_MACRO_TAP(M_SFT_PC),
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
bool tap_not_interrupted = record->tap.count > 0 && !record->tap.interrupted;
|
||||
|
||||
switch(id) {
|
||||
// Hold for LGUI, tap for Underscore
|
||||
case M_GUI_UNDS:
|
||||
if (record->event.pressed) {
|
||||
m_gui_unds_timer = timer_read();
|
||||
|
||||
if (!tap_not_interrupted) {
|
||||
register_mods(MOD_BIT(KC_LGUI));
|
||||
void process_combo_event(uint8_t combo_index, bool pressed) {
|
||||
if (pressed) {
|
||||
switch(combo_index) {
|
||||
case CB_SUPERDUPER:
|
||||
layer_on(_SUPERDUPER);
|
||||
ergodox_board_led_on();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (tap_not_interrupted && timer_elapsed(m_gui_unds_timer) < TAPPING_TERM) {
|
||||
|
||||
add_weak_mods(MOD_BIT(KC_LSFT));
|
||||
send_keyboard_report();
|
||||
register_code(KC_MINS);
|
||||
unregister_code(KC_MINS);
|
||||
del_weak_mods(MOD_BIT(KC_LSFT));
|
||||
send_keyboard_report();
|
||||
record->tap.count = 0; // ad hoc: cancel tap
|
||||
} else {
|
||||
unregister_mods(MOD_BIT(KC_LGUI));
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Hold for LSHIFT, tap for Parens open
|
||||
case M_SFT_PO:
|
||||
if (record->event.pressed) {
|
||||
m_sft_po_timer = timer_read();
|
||||
|
||||
if (!tap_not_interrupted) {
|
||||
register_mods(MOD_BIT(KC_LSFT));
|
||||
}
|
||||
} else {
|
||||
if (tap_not_interrupted && timer_elapsed(m_sft_po_timer) < TAPPING_TERM) {
|
||||
record->tap.count = 0;
|
||||
return MACRO(D(RSFT), T(9), U(RSFT), END);
|
||||
} else {
|
||||
unregister_mods(MOD_BIT(KC_LSFT));
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Hold for RSHIFT, tap for Parens close
|
||||
case M_SFT_PC:
|
||||
if (record->event.pressed) {
|
||||
m_sft_pc_timer = timer_read();
|
||||
|
||||
if (!tap_not_interrupted) {
|
||||
register_mods(MOD_BIT(KC_RSFT));
|
||||
}
|
||||
} else {
|
||||
if (tap_not_interrupted && timer_elapsed(m_sft_pc_timer) < TAPPING_TERM) {
|
||||
record->tap.count = 0;
|
||||
return MACRO(D(LSFT), T(0), U(LSFT), END);
|
||||
} else {
|
||||
unregister_mods(MOD_BIT(KC_RSFT));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
} else {
|
||||
layer_off(_SUPERDUPER);
|
||||
ergodox_board_led_off();
|
||||
unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,21 +25,22 @@ Press `S+D` simultaneously and hold, then...
|
|||
- It can be activated by holding `/` as well, but it's slower since `LT()` uses `TAPPING_TERM` of 200ms but `S+D` uses `COMBO_TERM` of only 20ms (Can be changed within config.h)
|
||||
|
||||
## Build instructions
|
||||
- `cd /path/to/qmk_firmware`
|
||||
If your environment is ready to build with `make`, don't use docker since it takes 5m+ to compile.
|
||||
Use the instructions in Ergodox Infinity's readme.
|
||||
|
||||
#### Left side
|
||||
```
|
||||
docker run -e keymap=narze -e subproject=infinity -e keyboard=ergodox --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware
|
||||
#### Left side (Docker)
|
||||
```
|
||||
cd /path/to/qmk_firmware
|
||||
util/docker_build.sh ergodox_infinity:narze
|
||||
avr-objcopy -Iihex -Obinary .build/ergodox_infinity_narze.hex .build/ergodox_infinity_narze_left.bin
|
||||
dfu-util --device 1c11:b007 -D .build/ergodox_infinity_narze_left.bin
|
||||
```
|
||||
|
||||
#### Right side
|
||||
#### Right side (Docker)
|
||||
You have to override `usb_args` in order to pass `MASTER=right` to docker using provided build script.
|
||||
```
|
||||
docker run -e keymap=narze -e subproject=infinity -e keyboard=ergodox -e MASTER=right --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware
|
||||
cd /path/to/qmk_firmware
|
||||
usb_args="-e MASTER=right" util/docker_build.sh ergodox_infinity:narze
|
||||
avr-objcopy -Iihex -Obinary .build/ergodox_infinity_narze.hex .build/ergodox_infinity_narze_right.bin
|
||||
dfu-util --device 1c11:b007 -D .build/ergodox_infinity_narze_right.bin
|
||||
```
|
||||
|
||||
## TODO
|
||||
- [ ] Make SuperDuper mode fully-compatible in Windows by swapping GUI with Ctrl
|
||||
|
|
|
@ -15,10 +15,9 @@ MIDI_ENABLE = no # MIDI controls
|
|||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
# Combos not working yet
|
||||
COMBO_ENABLE = no
|
||||
COMBO_ENABLE = yes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue