-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkeymap.c
122 lines (105 loc) · 5.78 KB
/
keymap.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#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_br_abnt2.h"
#include "keymap_canadian_multilingual.h"
#include "keymap_german_ch.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 NO_TH ALGR(KC_T)
#define NO_ETH ALGR(KC_D)
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE,
EPRM,
DYNAMIC_MACRO_RANGE,
};
#include "dynamic_macro.h"
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if ( !process_record_dynamic_macro( keycode, record ) ) {
return false;
}
return true;
};
void macro_tog_key( qk_tap_dance_state_t *state, void *user_data ) {
if ( state->count > 3 )
return;
keyrecord_t kr;
kr.event.pressed = false;
uint16_t action = DYN_REC_STOP;
if ( state->count == 1 ) {
action = DYN_MACRO_PLAY1;
}
else if ( state->count == 2 ) {
ergodox_right_led_3_off();
action = DYN_REC_STOP;
kr.event.pressed = true;
}
else if ( state->count == 3 ) {
ergodox_right_led_3_on();
action = DYN_REC_START1;
}
process_record_dynamic_macro( action, &kr );
}
enum {
MCROTOG_ = 0
};
qk_tap_dance_action_t tap_dance_actions[] = {
[MCROTOG_] = ACTION_TAP_DANCE_FN( macro_tog_key )
};
// Key shorthand
#define MCROTOG TD( MCROTOG_ )
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ergodox(KC_ESCAPE,KC_1,KC_2,KC_3,KC_4,KC_5,KC_DELETE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,OSL(1),LCTL_T(KC_BSPACE),KC_A,KC_S,KC_D,KC_F,KC_G,OSM(MOD_LSFT),KC_Z,KC_X,KC_C,KC_V,KC_B,TG(2),KC_HYPR,LCTL_T(KC_UP),LALT_T(KC_DOWN),LGUI_T(KC_LEFT),KC_RIGHT,OSM(MOD_LCTL),OSM(MOD_LALT),MCROTOG,KC_SPACE,KC_TAB,OSM(MOD_LGUI),KC_BSPACE,KC_6,KC_7,KC_8,KC_9,KC_0,KC_BSPACE,OSL(1),KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,KC_J,KC_K,KC_L,LT(3,KC_SCOLON),KC_QUOTE,TG(2),KC_N,KC_M,KC_COMMA,KC_DOT,KC_SLASH,OSM(MOD_RSFT),KC_UP,KC_DOWN,KC_LEFT,KC_RIGHT,TT(3),OSM(MOD_RALT),OSM(MOD_RCTL),MCROTOG,KC_ESCAPE,KC_ENTER,KC_SPACE),
[1] = LAYOUT_ergodox(TO(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,KC_TRANSPARENT,KC_EQUAL,KC_CIRC,KC_LCBR,KC_RCBR,KC_PIPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_PLUS,KC_ASTR,KC_LPRN,KC_RPRN,KC_GRAVE,KC_TRANSPARENT,KC_KP_MINUS,KC_SLASH,KC_LBRACKET,KC_RBRACKET,KC_TILD,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_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC,KC_F12,KC_LABK,KC_RABK,KC_UNDS,KC_COLN,TO(2),KC_DQUO,KC_TRANSPARENT,KC_AMPR,KC_SCOLON,KC_COMMA,KC_KP_DOT,KC_BSLASH,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,TO(0),KC_TRANSPARENT,KC_TRANSPARENT),
[2] = LAYOUT_ergodox(TO(0),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_DELETE,KC_TRANSPARENT,KC_EQUAL,KC_CIRC,KC_LCBR,KC_RCBR,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_KP_PLUS,KC_KP_ASTERISK,KC_LPRN,KC_RPRN,KC_TRANSPARENT,KC_TRANSPARENT,KC_MINUS,KC_SLASH,KC_LBRACKET,KC_RBRACKET,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,CTL_T(KC_UP),ALT_T(KC_DOWN),GUI_T(KC_LEFT),KC_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_SPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_0,KC_TRANSPARENT,KC_TRANSPARENT,KC_4,KC_5,KC_6,KC_0,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_1,KC_2,KC_3,KC_0,KC_TRANSPARENT,KC_UP,KC_DOWN,KC_LEFT,KC_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,TO(0),KC_ENTER,KC_SPACE),
[3] = LAYOUT_ergodox(TO(0),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_WH_UP,KC_MS_UP,KC_MS_WH_DOWN,KC_MS_ACCEL2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_MS_ACCEL0,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_WH_LEFT,KC_TRANSPARENT,KC_MS_WH_RIGHT,KC_MS_ACCEL2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_BTN1,KC_MS_BTN2,KC_TRANSPARENT,RESET,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LEFT,KC_DOWN,KC_RIGHT,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),KC_KP_ENTER,KC_TRANSPARENT),
};
uint32_t layer_state_set_user(uint32_t state) {
uint8_t layer = biton32(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;
};