mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-12-15 06:10:53 +00:00
434 lines
35 KiB
C
434 lines
35 KiB
C
#include QMK_KEYBOARD_H
|
|
#include "version.h"
|
|
#include "keymap_german.h"
|
|
#include "keymap_nordic.h"
|
|
#include "keymap_french.h"
|
|
#include "keymap_spanish.h"
|
|
#include "keymap_hungarian.h"
|
|
#include "keymap_swedish.h"
|
|
#include "keymap_brazilian_abnt2.h"
|
|
#include "keymap_canadian_multilingual.h"
|
|
#include "keymap_swiss_de.h"
|
|
#include "keymap_japanese.h"
|
|
#include "keymap_bepo.h"
|
|
|
|
#define KC_MAC_UNDO LGUI(KC_Z)
|
|
#define KC_MAC_CUT LGUI(KC_X)
|
|
#define KC_MAC_COPY LGUI(KC_C)
|
|
#define KC_MAC_PASTE LGUI(KC_V)
|
|
#define KC_PC_UNDO LCTL(KC_Z)
|
|
#define KC_PC_CUT LCTL(KC_X)
|
|
#define KC_PC_COPY LCTL(KC_C)
|
|
#define KC_PC_PASTE LCTL(KC_V)
|
|
#define ES_LABK_MAC KC_GRAVE
|
|
#define ES_RABK_MAC LSFT(KC_GRAVE)
|
|
#define ES_BSLS_MAC ALGR(KC_6)
|
|
#define NO_PIPE_ALT KC_GRAVE
|
|
#define NO_BSLS_ALT KC_EQUAL
|
|
|
|
enum custom_keycodes {
|
|
RGB_SLD = SAFE_RANGE,
|
|
MS_WH_UP,
|
|
MS_WH_DOWN,
|
|
MS_WH_RIGHT,
|
|
MS_WH_LEFT,
|
|
};
|
|
|
|
// tapdance keycodes
|
|
enum td_keycodes {
|
|
CTRL_TO12,
|
|
SHIFT_TO13,
|
|
ALT_TO11,
|
|
};
|
|
|
|
// define a type containing as many tapdance states as you need
|
|
typedef enum {
|
|
SINGLE_TAP,
|
|
SINGLE_HOLD,
|
|
} td_state_t;
|
|
|
|
// create a global instance of the tapdance state type
|
|
static td_state_t td_state;
|
|
|
|
// declare your tapdance functions:
|
|
|
|
// function to determine the current tapdance state
|
|
int cur_dance (tap_dance_state_t *state);
|
|
|
|
// `finished` and `reset` functions for each tapdance keycode
|
|
void ctrlto12_finished (tap_dance_state_t *state, void *user_data);
|
|
void ctrlto12_reset (tap_dance_state_t *state, void *user_data);
|
|
void altto11_finished (tap_dance_state_t *state, void *user_data);
|
|
void altto11_reset (tap_dance_state_t *state, void *user_data);
|
|
void shiftto13_finished (tap_dance_state_t *state, void *user_data);
|
|
void shiftto13_reset (tap_dance_state_t *state, void *user_data);
|
|
|
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
[0] = LAYOUT_ergodox_pretty(
|
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
KC_INSERT, KC_Q, LGUI_T(KC_W), MT(MOD_HYPR, KC_E),LT(5,KC_R), KC_T, KC_NO, KC_NO, KC_Y, LT(6,KC_U), MT(MOD_HYPR, KC_I),RGUI_T(KC_O), KC_P, KC_PSCR,
|
|
KC_ESCAPE, LSFT_T(KC_A), LCTL_T(KC_S), LALT_T(KC_D), LT(1,KC_F), KC_G, KC_H, LT(2,KC_J), RALT_T(KC_K), RCTL_T(KC_L), RSFT_T(KC_SCLN),KC_CAPS,
|
|
KC_HOME, LT(9,KC_Z), MT(MOD_LGUI | MOD_LCTL,KC_X), LT(7,KC_C), LT(3,KC_V), KC_B, KC_NO, KC_NO, KC_N, LT(4,KC_M), LT(8,KC_COMMA), MT(MOD_RGUI | MOD_RCTL, KC_DOT), KC_QUOTE, KC_END,
|
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
KC_NO, KC_NO, KC_NO, KC_NO,
|
|
KC_NO, KC_NO,
|
|
TO(10), KC_BSPC, KC_NO, KC_NO, KC_ENTER, KC_SPACE
|
|
),
|
|
[1] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_7, KC_8, KC_9, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LSFT, KC_LCTL, KC_LALT, KC_TRANSPARENT, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_0, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_1, KC_2, KC_3, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[2] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_HYPR, KC_RGUI, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LPRN, KC_RPRN, KC_ASTR, KC_SLASH, KC_NO, KC_NO, KC_TRANSPARENT, KC_RALT, KC_RCTL, KC_RSFT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, MT(MOD_RGUI | MOD_RCTL, KC_NO), KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[3] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LSFT, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_TRANSPARENT, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[4] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_HYPR, KC_RGUI, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LBRC, KC_RBRC, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_NO, KC_RALT, KC_RCTL, KC_RSFT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_TRANSPARENT, KC_NO, MT(MOD_RGUI | MOD_RCTL, KC_NO), KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[5] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_TRANSPARENT, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LSFT, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_HASH, KC_BSLS, KC_GRAVE, KC_TILD, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[6] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_TRANSPARENT, KC_HYPR, KC_RGUI, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_UNDS, KC_EQUAL, KC_MINUS, KC_PLUS, KC_NO, KC_NO, KC_NO, KC_RALT, KC_RCTL, KC_RSFT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, MT(MOD_RGUI | MOD_RCTL, KC_NO), KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[7] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_AT, KC_DLR, KC_PERC, KC_CIRC, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[8] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LCBR, KC_RCBR, KC_AMPR, KC_PIPE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[9] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_AUDIO_VOL_UP,KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MEDIA_PREV_TRACK,KC_AUDIO_VOL_DOWN,KC_MEDIA_NEXT_TRACK,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
[10] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_MS_BTN2, KC_ACL2, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_UP, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, TD(SHIFT_TO13), TD(CTRL_TO12), TD(ALT_TO11), KC_MS_BTN1, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_ACL0, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
|
|
),
|
|
[11] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LSFT, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
|
|
),
|
|
[12] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_ACL2, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LSFT, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), MO(14), KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
|
|
),
|
|
[13] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_PGUP, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_LSFT, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
|
|
),
|
|
[14] = LAYOUT_ergodox_pretty(
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WH_LEFT, MS_WH_DOWN, MS_WH_RIGHT, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT,
|
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
|
),
|
|
};
|
|
|
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
uint8_t layer = get_highest_layer(state);
|
|
ergodox_board_led_off();
|
|
ergodox_right_led_1_off();
|
|
ergodox_right_led_2_off();
|
|
ergodox_right_led_3_off();
|
|
switch (layer) {
|
|
case 1:
|
|
ergodox_right_led_1_on();
|
|
break;
|
|
case 2:
|
|
ergodox_right_led_2_on();
|
|
break;
|
|
case 3:
|
|
ergodox_right_led_3_on();
|
|
break;
|
|
case 4:
|
|
ergodox_right_led_1_on();
|
|
ergodox_right_led_2_on();
|
|
break;
|
|
case 5:
|
|
ergodox_right_led_1_on();
|
|
ergodox_right_led_3_on();
|
|
break;
|
|
case 6:
|
|
ergodox_right_led_2_on();
|
|
ergodox_right_led_3_on();
|
|
break;
|
|
case 7:
|
|
ergodox_right_led_1_on();
|
|
ergodox_right_led_2_on();
|
|
ergodox_right_led_3_on();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return state;
|
|
};
|
|
|
|
// determine the tapdance state to return
|
|
int cur_dance (tap_dance_state_t *state) {
|
|
if (state->count == 1) {
|
|
if (state->interrupted && state->pressed && state->interrupting_keycode == KC_MS_BTN1) {return SINGLE_HOLD;}
|
|
if (state->interrupted && state->pressed && state->interrupting_keycode == 22273) {return SINGLE_HOLD;}
|
|
if (state->interrupted && state->pressed && state->interrupting_keycode == 22272) {return SINGLE_HOLD;}
|
|
if (state->interrupted && state->pressed && state->interrupting_keycode == KC_TAB) {return SINGLE_HOLD;}
|
|
else if (state->interrupted || !state->pressed) {
|
|
// if (state->interrupted) {
|
|
// print("interrupted\n");
|
|
// uprintf("Shift: %u\n", KC_LSFT);
|
|
// uprintf("Control: %u\n", KC_LCTL);
|
|
// uprintf("%u\n",state->interrupting_keycode);
|
|
// }
|
|
return SINGLE_TAP;
|
|
}
|
|
else { return SINGLE_HOLD; }
|
|
}
|
|
else { return 2; } // any number higher than the maximum state value you return above
|
|
}
|
|
// /* Backup in case previous code is hard to piece together. */
|
|
// int cur_dance (tap_dance_state_t *state) {
|
|
// if (state->count == 1) {
|
|
// if (state->interrupted || !state->pressed) { return SINGLE_TAP; }
|
|
// else { return SINGLE_HOLD; }
|
|
// }
|
|
// else { return 2; } // any number higher than the maximum state value you return above
|
|
// }
|
|
|
|
void ctrlto12_finished (tap_dance_state_t *state, void *user_data) {
|
|
td_state = cur_dance(state);
|
|
switch (td_state) {
|
|
case SINGLE_TAP:
|
|
layer_on(12);
|
|
break;
|
|
case SINGLE_HOLD:
|
|
if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43)) {
|
|
register_mods(MOD_BIT(KC_LCTL));
|
|
break;
|
|
}
|
|
register_mods(MOD_BIT(KC_LCTL)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
|
|
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
|
|
register_code16(LCTL(KC_MS_BTN1));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void ctrlto12_reset (tap_dance_state_t *state, void *user_data) {
|
|
switch (td_state) {
|
|
case SINGLE_TAP:
|
|
break;
|
|
case SINGLE_HOLD:
|
|
if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43) ) {
|
|
unregister_mods(MOD_BIT(KC_LCTL));
|
|
break;
|
|
}
|
|
unregister_mods(MOD_BIT(KC_LCTL)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
|
|
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
|
|
unregister_code16(LCTL(KC_MS_BTN1));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void shiftto13_finished (tap_dance_state_t *state, void *user_data) {
|
|
td_state = cur_dance(state);
|
|
switch (td_state) {
|
|
case SINGLE_TAP:
|
|
layer_on(13);
|
|
break;
|
|
case SINGLE_HOLD:
|
|
if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
|
|
register_mods(MOD_BIT(KC_LSFT));
|
|
break;
|
|
}
|
|
register_mods(MOD_BIT(KC_LSFT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
|
|
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
|
|
register_code16(LSFT(KC_MS_BTN1));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void shiftto13_reset (tap_dance_state_t *state, void *user_data) {
|
|
switch (td_state) {
|
|
case SINGLE_TAP:
|
|
break;
|
|
case SINGLE_HOLD:
|
|
if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
|
|
unregister_mods(MOD_BIT(KC_LSFT));
|
|
break;
|
|
}
|
|
unregister_mods(MOD_BIT(KC_LSFT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
|
|
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
|
|
unregister_code16(LSFT(KC_MS_BTN1));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void altto11_finished (tap_dance_state_t *state, void *user_data) {
|
|
td_state = cur_dance(state);
|
|
switch (td_state) {
|
|
case SINGLE_TAP:
|
|
layer_on(11);
|
|
break;
|
|
case SINGLE_HOLD:
|
|
register_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
|
|
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
|
|
register_code16(LALT(KC_MS_BTN1));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void altto11_reset (tap_dance_state_t *state, void *user_data) {
|
|
switch (td_state) {
|
|
case SINGLE_TAP:
|
|
break;
|
|
case SINGLE_HOLD:
|
|
unregister_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
|
|
if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
|
|
unregister_code16(LALT(KC_MS_BTN1));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
// define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions
|
|
tap_dance_action_t tap_dance_actions[] = {
|
|
[CTRL_TO12] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlto12_finished, ctrlto12_reset),
|
|
[SHIFT_TO13] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftto13_finished, shiftto13_reset),
|
|
[ALT_TO11] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altto11_finished, altto11_reset),
|
|
};
|
|
|
|
/* Debugging functions */
|
|
|
|
void keyboard_post_init_user(void) {
|
|
// Customise these values to desired behaviour
|
|
// debug_enable=true;
|
|
// debug_matrix=true;
|
|
// debug_keyboard=true;
|
|
// debug_mouse=true;
|
|
}
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
// If console is enabled, it will print the matrix position and status of each key pressed
|
|
// #ifdef CONSOLE_ENABLE
|
|
// uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
|
// #endif
|
|
switch (keycode) {
|
|
case MS_WH_DOWN:
|
|
if (record->event.pressed) {
|
|
SEND_STRING(SS_TAP(X_MS_WH_DOWN));
|
|
}
|
|
break;
|
|
case MS_WH_UP:
|
|
if (record->event.pressed) {
|
|
SEND_STRING(SS_TAP(X_MS_WH_UP));
|
|
}
|
|
break;
|
|
case MS_WH_LEFT:
|
|
if (record->event.pressed) {
|
|
SEND_STRING(SS_TAP(X_MS_WH_LEFT));
|
|
}
|
|
break;
|
|
case MS_WH_RIGHT:
|
|
if (record->event.pressed) {
|
|
SEND_STRING(SS_TAP(X_MS_WH_RIGHT));
|
|
}
|
|
break;
|
|
}
|
|
return true;
|
|
}
|