qmk-keychron-q3-colemak-dh/users/replicaJunction/replicaJunction.c

150 lines
3.9 KiB
C
Raw Normal View History

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