Keymap: Revamp replicaJunction keymaps (#3589)
* Revamp replicaJunction keymaps Updates both the replicaJunction Ergodox and Atreus keymaps and moves most of the logic into a new user directory. * Cleanup as requested in #3589 * Slightly increased TAPPING_TERM * Fixed typo in #pragma once * Fix TAPPING_TERM redefined in config.h * Add include of replicaJunction.h Due to the tap dance references, without this include, I was getting compiler errors about both internal QMK items like `qk_tap_dance_state_t` and constants defined in my replicaJunction.h file like TD_LAYER_TOGGLE. Also remove some commented-out code that defined an enum which has since moved to replicaJunction.h.
This commit is contained in:
parent
632287535c
commit
c19d949b72
19 changed files with 1198 additions and 668 deletions
72
users/replicaJunction/config.h
Normal file
72
users/replicaJunction/config.h
Normal file
|
@ -0,0 +1,72 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Features That Can Be Enabled
|
||||
// https://docs.qmk.fm/reference/config-options#features-that-can-be-enabled
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Prevent modifiers from sticking when switching layers
|
||||
// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Behaviors That Can Be Configured
|
||||
// https://docs.qmk.fm/reference/config-options#behaviors-that-can-be-configured
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// MS the button needs to be held before a tap becomes a hold (default: 200)
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 250
|
||||
|
||||
// Makes it easier for fast typists to use dual-role keys. See additional details here:
|
||||
// https://docs.qmk.fm/features/advanced-keycodes#permissive-hold
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
// MS after tapping the Leader key to listen for a sequence (default: 300)
|
||||
#undef LEADER_TIMEOUT
|
||||
#define LEADER_TIMEOUT 750
|
||||
|
||||
// This makes it possible to do rolling combos (zx) with keys that convert to other keys on hold
|
||||
// (for example, if z becomes ctrl when you hold it, when this option isn't enabled, z rapidly
|
||||
// followed by x actually sends Ctrl-x. That's bad.)
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Mouse Key Options
|
||||
// https://docs.qmk.fm/reference/config-options#mouse-key-options
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
// Mouse key config
|
||||
|
||||
// Frequency with which cursor movements are sent. Lower means more resolution / DPI.
|
||||
// Default: 20
|
||||
// #undef MOUSEKEY_INTERVAL
|
||||
// #define MOUSEKEY_INTERVAL 20
|
||||
|
||||
// MS after pressing the key before initial movement begins. Lower means quicker response.
|
||||
// Default: 0
|
||||
// #undef MOUSEKEY_DELAY
|
||||
// #define MOUSEKEY_DELAY 0
|
||||
|
||||
// MS it takes the cursor to accelerate to max speed
|
||||
// Default: 60
|
||||
// #undef MOUSEKEY_TIME_TO_MAX
|
||||
// #define MOUSEKEY_TIME_TO_MAX 60
|
||||
|
||||
// Maximum speed for the mouse keys
|
||||
// Default: 7
|
||||
// #undef MOUSEKEY_MAX_SPEED
|
||||
// #define MOUSEKEY_MAX_SPEED 7
|
||||
|
||||
// Delay before the mouse wheel
|
||||
// Default: 0
|
||||
// #undef MOUSEKEY_WHEEL_DELAY
|
||||
// #define MOUSEKEY_WHEEL_DELAY 0
|
||||
|
||||
#endif // MOUSEKEY_ENABLE
|
14
users/replicaJunction/readme.md
Normal file
14
users/replicaJunction/readme.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
Copyright 2018 @<replicaJunction>
|
||||
|
||||
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/>.
|
149
users/replicaJunction/replicaJunction.c
Normal file
149
users/replicaJunction/replicaJunction.c
Normal file
|
@ -0,0 +1,149 @@
|
|||
#include "replicaJunction.h"
|
||||
#include "version.h"
|
||||
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
void dance_layer(qk_tap_dance_state_t *state, void *user_data)
|
||||
{
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
if (state->count >= 5)
|
||||
{
|
||||
// 5 or more taps resets the keyboard
|
||||
reset_keyboard();
|
||||
}
|
||||
#ifdef L_QWERTY
|
||||
else if (state->count == 3)
|
||||
{
|
||||
// Triple tap changes to QWERTY layer
|
||||
if (layer == L_QWERTY)
|
||||
{
|
||||
layer_off(L_QWERTY);
|
||||
}
|
||||
else
|
||||
{
|
||||
layer_on(L_QWERTY);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef L_NUM
|
||||
else if (state->count == 2)
|
||||
{
|
||||
// Double tap toggles Number layer
|
||||
if (layer == L_NUM)
|
||||
{
|
||||
layer_off(L_NUM);
|
||||
}
|
||||
else
|
||||
{
|
||||
layer_on(L_NUM);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
// Single tap sends Escape, and also turns off layers
|
||||
// That's mostly in case I get stuck and forget where I am
|
||||
#ifdef L_NUM
|
||||
layer_off(L_NUM);
|
||||
#endif
|
||||
#ifdef L_EXTEND
|
||||
layer_off(L_EXTEND);
|
||||
#endif
|
||||
#ifdef L_SYMBOL
|
||||
layer_off(L_SYMBOL);
|
||||
#endif
|
||||
#ifdef L_QWERTY
|
||||
layer_off(L_QWERTY);
|
||||
#endif
|
||||
register_code(KC_ESC);
|
||||
unregister_code(KC_ESC);
|
||||
}
|
||||
};
|
||||
|
||||
// Tap Dance Definitions
|
||||
// Note - this needs to come AFTER the function is declared
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN(dance_layer)
|
||||
};
|
||||
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
|
||||
// These functions can be overridden in individual keymap files.
|
||||
// This allows a user function to be shared for all my keyboards, while each
|
||||
// keyboard can also have a keyboard-specific section.
|
||||
|
||||
// Note that keymaps don't need to override these if there's nothing to
|
||||
// override them with.
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_keymap(void) {}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_keymap(void) {}
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
#ifdef UNICODEMAP_ENABLE
|
||||
// Set Unicode input to use WinCompose
|
||||
// https://github.com/samhocevar/wincompose
|
||||
set_unicode_input_mode(UC_WINC);
|
||||
#endif // UNICODEMAP_ENABLE
|
||||
|
||||
matrix_init_keymap();
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
matrix_scan_keymap();
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed)
|
||||
return true;
|
||||
|
||||
switch(keycode)
|
||||
{
|
||||
case RJ_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
|
||||
#if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
|
||||
":dfu"
|
||||
#elif defined(BOOTLOADER_HALFKAY)
|
||||
":teensy"
|
||||
#elif defined(BOOTLOADER_CATERINA)
|
||||
":avrdude"
|
||||
#endif // bootloader options
|
||||
//SS_TAP(X_ENTER)
|
||||
);
|
||||
return false;
|
||||
case RJ_QMKV:
|
||||
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||
return false;
|
||||
case RJ_EQ:
|
||||
SEND_STRING("==");
|
||||
return false;
|
||||
case RJ_NEQ:
|
||||
SEND_STRING("!=");
|
||||
return false;
|
||||
case RJ_GEQ:
|
||||
SEND_STRING(">=");
|
||||
return false;
|
||||
case RJ_LEQ:
|
||||
SEND_STRING("<=");
|
||||
return false;
|
||||
case RJ_GEQR:
|
||||
SEND_STRING("=>");
|
||||
return false;
|
||||
case RJ_DUND:
|
||||
SEND_STRING("$_");
|
||||
return false;
|
||||
case RJ_SELS:
|
||||
SEND_STRING("select *");
|
||||
return false;
|
||||
}
|
||||
|
||||
return process_record_keymap(keycode, record);
|
||||
};
|
115
users/replicaJunction/replicaJunction.h
Normal file
115
users/replicaJunction/replicaJunction.h
Normal file
|
@ -0,0 +1,115 @@
|
|||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Keymap definitions
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Layer definitions
|
||||
// #define L_COLEMAK 0
|
||||
// #define L_QWERTY 1
|
||||
// #define L_NUM 2
|
||||
// #define L_EXTEND 3
|
||||
// #define L_FUNC 4
|
||||
// #define L_GAMING 5
|
||||
// #define L_SYMBOL 6
|
||||
// #define L_LL_R 7
|
||||
// #define L_LL_S 8
|
||||
// #define L_LL_E 9
|
||||
// #define L_LL_I 10
|
||||
|
||||
// Keyboard aliases
|
||||
#define _______ KC_TRNS
|
||||
#define ooooooo KC_TRNS
|
||||
|
||||
#define MO_FUNC MO(L_FUNC)
|
||||
#define TT_NUM TT(L_NUM)
|
||||
#define TG_GAME TG(L_GAMING)
|
||||
#define OSL_SYM OSL(L_SYMBOL)
|
||||
|
||||
#define OSM_LSF OSM(MOD_LSFT)
|
||||
#define OSM_RSF OSM(MOD_RSFT)
|
||||
|
||||
#define KX_CTSF LCTL(KC_LSFT)
|
||||
#define KX_STAB LSFT(KC_TAB)
|
||||
#define KX_CGR LCTL(KC_GRV)
|
||||
#define KX_PAST LCTL(LGUI(LALT(KC_V)))
|
||||
#define KX_SRCH LCTL(LGUI(LALT(KC_S)))
|
||||
|
||||
#define KX_BKNM LT(L_NUM, KC_BSPC)
|
||||
#define KX_DCTL CTL_T(KC_DEL)
|
||||
#define KX_NALT ALT_T(KC_ENT)
|
||||
#define KX_ECTL CTL_T(KC_ESC)
|
||||
#define KX_SPAC LT(L_EXTEND, KC_SPC)
|
||||
|
||||
#define KX_Z_MT CTL_T(KC_Z)
|
||||
#define KX_X_MT GUI_T(KC_X)
|
||||
#define KX_C_MT MT(MOD_LCTL | MOD_LALT, KC_C)
|
||||
#define KX_D_MT ALT_T(KC_D)
|
||||
|
||||
#define KX_SLMT CTL_T(KC_SLSH)
|
||||
#define KX_DOMT GUI_T(KC_DOT)
|
||||
#define KX_COMT MT(MOD_LCTL | MOD_LALT, KC_COMM)
|
||||
#define KX_H_MT ALT_T(KC_H)
|
||||
|
||||
#ifdef L_LL_R
|
||||
#define KC_R_LT LT(L_LL_R, KC_R)
|
||||
#else
|
||||
#define KC_R_LT KC_R
|
||||
#endif
|
||||
|
||||
#ifdef L_LL_S
|
||||
#define KC_S_LT LT(L_LL_S, KC_S)
|
||||
#else
|
||||
#define KC_S_LT KC_S
|
||||
#endif
|
||||
|
||||
#ifdef L_LL_E
|
||||
#define KC_E_LT LT(L_LL_E, KC_E)
|
||||
#else
|
||||
#define KC_E_LT KC_E
|
||||
#endif
|
||||
|
||||
#ifdef L_LL_I
|
||||
#define KC_I_LT LT(L_LL_I, KC_I)
|
||||
#else
|
||||
#define KC_I_LT KC_I
|
||||
#endif
|
||||
|
||||
// "Macro" functions
|
||||
enum userspace_custom_keycodes {
|
||||
RJ_MAKE = SAFE_RANGE, // QMK make command
|
||||
RJ_QMKV, // QMK version
|
||||
RJ_EQ, // ==
|
||||
RJ_NEQ, // !=
|
||||
RJ_GEQ, // >=
|
||||
RJ_LEQ, // <=
|
||||
RJ_GEQR, // => ("greater than or equal - right")
|
||||
RJ_DUND, // $_
|
||||
RJ_SELS, // select * (used for PowerShell)
|
||||
RJ_MUTE, // Discord mute (GUI+Shift+M)
|
||||
RJ_DEAF, // Discord deafen (GUI+Shift+D)
|
||||
RJ_DOVR // Toggle Discord overlay (GUI+Shift+O)
|
||||
};
|
||||
|
||||
// Mouse keys
|
||||
#define M_UP KC_MS_UP
|
||||
#define M_DOWN KC_MS_DOWN
|
||||
#define M_LEFT KC_MS_LEFT
|
||||
#define M_RIGHT KC_MS_RIGHT
|
||||
#define M_LCLIK KC_MS_BTN1
|
||||
#define M_RCLIK KC_MS_BTN2
|
||||
#define M_MCLIK KC_MS_BTN3
|
||||
#define M_WHLUP KC_WH_U
|
||||
#define M_WHLDN KC_WH_D
|
||||
|
||||
// Used in macro definitions
|
||||
#define TAP(code) register_code (code); unregister_code (code);
|
||||
|
||||
// Tap Dance
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
#define TD_LAYER_TOGGLE 0
|
||||
extern void dance_layer(qk_tap_dance_state_t *state, void *user_data);
|
||||
#define TD_LAYR TD(TD_LAYER_TOGGLE)
|
||||
#endif // TAP_DANCE_ENABLE
|
1
users/replicaJunction/rules.mk
Normal file
1
users/replicaJunction/rules.mk
Normal file
|
@ -0,0 +1 @@
|
|||
SRC += replicaJunction.c
|
Loading…
Add table
Add a link
Reference in a new issue