]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/satan/keymaps/addcninblue/keymap.c
added addcninblue's layout (#2049)
[qmk_firmware.git] / keyboards / satan / keymaps / addcninblue / keymap.c
1 #include "satan.h"
2 #include "rgblight.h"
3
4 #define _DEFAULT 0
5 #define _FN 1
6 #define _VIM 10
7 #define _VIM_SHIFT 11
8 #define _VIM_CONTROL 12
9
10 enum custom_keycodes {
11   DYNAMIC_MACRO_RANGE = SAFE_RANGE,
12   a_MACRO,
13   A_MACRO,
14   I_MACRO,
15   O_MACRO,
16 };
17
18 #define KC_PREV_WORD LCTL(KC_LEFT)
19 #define KC_NEXT_WORD LCTL(KC_RIGHT)
20 #define KC_UNDO LCTL(KC_Z)
21 #define KC_CUT LCTL(KC_X)
22 #define KC_COPY LCTL(KC_C)
23 #define KC_PASTE LCTL(KC_V)
24
25 #include "dynamic_macro.h"
26
27 static uint8_t old_layer = 0;
28
29 // Fillers to make layering more clear
30 #define ______ KC_TRNS
31 #define XXXXXX KC_NO
32
33 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34 /* Qwerty gui/alt/space/alt/gui
35  * ,-----------------------------------------------------------------------------------------.
36  * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  |
37  * |-----------------------------------------------------------------------------------------+
38  * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  |
39  * |-----------------------------------------------------------------------------------------+
40  * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    |
41  * |-----------------------------------------------------------------------------------------+
42  * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | RShift    | VIM |
43  * |-----------------------------------------------------------------------------------------+
44  *         | FN  | LAlt  |               Space                | RAlt   |RGUI |
45  *         `-----------------------------------------------------------------'
46  */
47   [_DEFAULT] = KEYMAP_HHKB( /* Basic QWERTY */
48       KC_GESC , KC_1    , KC_2    , KC_3   , KC_4    , KC_5    , KC_6   , KC_7     , KC_8    , KC_9   , KC_0    , KC_MINS , KC_EQL   , KC_BSLS , KC_GRV , \
49       KC_TAB  , KC_Q    , KC_W    , KC_E   , KC_R    , KC_T    , KC_Y   , KC_U     , KC_I    , KC_O   , KC_P    , KC_LBRC , KC_RBRC  , KC_BSPC , \
50       KC_LCTL , KC_A    , KC_S    , KC_D   , KC_F    , KC_G    , KC_H   , KC_J     , KC_K    , KC_L   , KC_SCLN , KC_QUOT , KC_ENT   , \
51       KC_LSFT , KC_Z    , KC_X    , KC_C   , KC_V    , KC_B    , KC_N   , KC_M     , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT , TO(_VIM) , \
52       ______  , MO(_FN) , KC_LALT , KC_SPC , KC_RALT , KC_RGUI , ______ , ______ \
53       ),
54
55 /* FN Layer
56  * ,-----------------------------------------------------------------------------------------.
57  * |GRAVE| F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | Ins | Del |
58  * |-----------------------------------------------------------------------------------------+
59  * |  CAPS  | Vol-| Mute| Vol+|MAC+ |MAC  |MAC- | PgUp| Home|     |Print| Up  |     | Del    |
60  * |-----------------------------------------------------------------------------------------+
61  * |  Ctrl   | End |     | PgDn|     |     | Left| Down| Up  |Right| Left|Right|    Enter    |
62  * |-----------------------------------------------------------------------------------------+
63  * |  Shift    | Prev| Play| Next| BL- | BL  | BL+ |     |     |     | Down| RShift    | DEF |
64  * |-----------------------------------------------------------------------------------------+
65  *         |       | LAlt  |             Space               | RAlt  | Reset |
66  *         `-----------------------------------------------------------------'
67  */
68   [_FN] = KEYMAP_HHKB( /* Layer 2 */
69       KC_GRAVE , KC_F1   , KC_F2   , KC_F3   , KC_F4          , KC_F5           , KC_F6        , KC_F7    , KC_F8   , KC_F9    , KC_F10  , KC_F11  , KC_F12       , KC_INS , KC_DEL , \
70       KC_CAPS  , KC_VOLD , KC_MUTE , KC_VOLU , DYN_REC_START1 , DYN_MACRO_PLAY1 , DYN_REC_STOP , KC_PGUP  , KC_HOME , ______   , KC_PSCR , KC_UP   , ______       , KC_DEL , \
71       KC_LCTL  , KC_END  , ______  , KC_PGDN , ______         , ______          , KC_LEFT      , KC_DOWN  , KC_UP   , KC_RIGHT , KC_LEFT , KC_RGHT , KC_ENT       , \
72       KC_LSFT  , KC_MPRV , KC_MPLY , KC_MNXT , BL_DEC         , BL_TOGG         , BL_INC       , ______   , ______  , ______   , KC_DOWN , KC_RSFT , TO(_DEFAULT) , \
73       ______   , ______  , KC_LALT , KC_SPC  , KC_RALT        , RESET           , ______       , ______ \
74       ),
75
76 /* VIM Layer
77  * ,-----------------------------------------------------------------------------------------.
78  * | DEF |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  |
79  * |-----------------------------------------------------------------------------------------+
80  * |        |     | WORD| WORD|     |     | COPY| UNDO| DEF |ENTER|PASTE|     |     | Del    |
81  * |-----------------------------------------------------------------------------------------+
82  * | V_Ctrl  |a_ins|     |     |     |     | Left| Down| Up  |Right|     |     |    Enter    |
83  * |-----------------------------------------------------------------------------------------+
84  * |  V_Shift  |     |     |     |     | PREV|     |     |     |     |     | RShift    | Def |
85  * |-----------------------------------------------------------------------------------------+
86  *         |       | LAlt  |             Space               | RAlt  |       |
87  *         `-----------------------------------------------------------------'
88  */
89   [_VIM] = KEYMAP_HHKB( /* Layer 10 */
90       TO(_DEFAULT)     , KC_1    , KC_2         , KC_3         , KC_4    , KC_5         , KC_6    , KC_7     , KC_8         , KC_9     , KC_0     , KC_MINS , KC_EQL       , KC_BSLS , KC_GRV , \
91       XXXXXX           , XXXXXX  , KC_NEXT_WORD , KC_NEXT_WORD , XXXXXX  , XXXXXX       , KC_COPY , KC_UNDO  , TO(_DEFAULT) , KC_ENTER , KC_PASTE , XXXXXX  , XXXXXX       , KC_DEL  , \
92       MO(_VIM_CONTROL) , a_MACRO , XXXXXX       , XXXXXX       , XXXXXX  , XXXXXX       , KC_LEFT , KC_DOWN  , KC_UP        , KC_RIGHT , XXXXXX   , XXXXXX  , KC_ENTER     , \
93       MO(_VIM_SHIFT)   , XXXXXX  , XXXXXX       , XXXXXX       , XXXXXX  , KC_PREV_WORD , XXXXXX  , XXXXXX   , XXXXXX       , XXXXXX   , XXXXXX   , KC_RSFT , TO(_DEFAULT) , \
94       XXXXXX           , XXXXXX  , KC_LALT      , KC_SPC       , KC_RALT , XXXXXX       , XXXXXX  , XXXXXX \
95       ),
96
97 /* VIM Layer
98  * ,-----------------------------------------------------------------------------------------.
99  * | DEF |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  |
100  * |-----------------------------------------------------------------------------------------+
101  * |        |     | WORD| WORD|     |     |     |     |I_ins|ENTER|     |     |     | Del    |
102  * |-----------------------------------------------------------------------------------------+
103  * |         |A_ins|     |     |     |     | Left| Down| Up  |Right|     |     |    Enter    |
104  * |-----------------------------------------------------------------------------------------+
105  * |           |     |     |     |     | PREV|     |     |     |     |     | RShift    | Def |
106  * |-----------------------------------------------------------------------------------------+
107  *         |       | LAlt  |             Space               | RAlt  |       |
108  *         `-----------------------------------------------------------------'
109  */
110   [_VIM_SHIFT] = KEYMAP_HHKB( /* Layer 11 */
111       TO(_DEFAULT) , KC_1    , KC_2         , KC_3         , KC_4    , KC_5         , KC_6    , KC_7     , KC_8    , KC_9     , KC_0   , KC_MINS , KC_EQL       , KC_BSLS , KC_GRV , \
112       XXXXXX       , XXXXXX  , KC_NEXT_WORD , KC_NEXT_WORD , XXXXXX  , XXXXXX       , XXXXXX  , XXXXXX   , I_MACRO , O_MACRO  , XXXXXX , XXXXXX  , XXXXXX       , KC_DEL  , \
113       XXXXXX       , A_MACRO , XXXXXX       , KC_PGDN      , XXXXXX  , XXXXXX       , KC_LEFT , KC_DOWN  , KC_UP   , KC_RIGHT , XXXXXX , XXXXXX  , KC_ENTER     , \
114       XXXXXX       , XXXXXX  , XXXXXX       , XXXXXX       , XXXXXX  , KC_PREV_WORD , XXXXXX  , XXXXXX   , XXXXXX  , XXXXXX   , XXXXXX , KC_RSFT , TO(_DEFAULT) , \
115       XXXXXX       , XXXXXX  , KC_LALT      , KC_SPC       , KC_RALT , RESET        , XXXXXX  , XXXXXX \
116       ),
117
118 /* FN Layer
119  * ,-----------------------------------------------------------------------------------------.
120  * |     | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | Ins | Del |
121  * |-----------------------------------------------------------------------------------------+
122  * |        | Vol-| Mute| Vol+|     |     |     | PgUp| Ins |     |Print| Up  |     | Del    |
123  * |-----------------------------------------------------------------------------------------+
124  * |  Ctrl   | App |     | PgDn|     |     | Left| Down| Up  |Right| Left|Right|    Enter    |
125  * |-----------------------------------------------------------------------------------------+
126  * |  Shift    | Prev| Play| Next| BL- | BL  | BL+ |     |     |     | Down| RShift    | Def |
127  * |-----------------------------------------------------------------------------------------+
128  *         |       | LAlt  |             Space               | RAlt  | Reset |
129  *         `-----------------------------------------------------------------'
130  */
131   [_VIM_CONTROL] = KEYMAP_HHKB( /* Layer 12 */
132       TO(_DEFAULT) , KC_1    , KC_2         , KC_3         , KC_4    , KC_5         , KC_6    , KC_7     , KC_8    , KC_9     , KC_0   , KC_MINS , KC_EQL       , KC_BSLS , KC_GRV , \
133       XXXXXX       , XXXXXX  , KC_NEXT_WORD , KC_NEXT_WORD , XXXXXX  , XXXXXX       , XXXXXX  , XXXXXX   , I_MACRO , O_MACRO  , XXXXXX , XXXXXX  , XXXXXX       , KC_DEL  , \
134       XXXXXX       , A_MACRO , XXXXXX       , KC_PGDN      , XXXXXX  , XXXXXX       , KC_LEFT , KC_DOWN  , KC_UP   , KC_RIGHT , XXXXXX , XXXXXX  , KC_ENTER     , \
135       XXXXXX       , XXXXXX  , XXXXXX       , XXXXXX       , XXXXXX  , KC_PREV_WORD , XXXXXX  , XXXXXX   , XXXXXX  , XXXXXX   , XXXXXX , KC_RSFT , TO(_DEFAULT) , \
136       XXXXXX       , XXXXXX  , KC_LALT      , KC_SPC       , KC_RALT , RESET        , XXXXXX  , XXXXXX \
137       )            ,
138 };
139
140 void persistent_default_layer_set(uint16_t default_layer) {
141   eeconfig_update_default_layer(default_layer);
142   default_layer_set(default_layer);
143 }
144
145 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
146     if (!process_record_dynamic_macro(keycode, record)) {
147         return false;
148     }
149     if (record->event.pressed) {
150         switch(keycode) {
151             case a_MACRO:
152                 SEND_STRING(SS_TAP(X_RIGHT));
153                 layer_off(_VIM);
154                 return false;
155                 break;
156             case A_MACRO:
157                 SEND_STRING(SS_TAP(X_END));
158                 layer_off(_VIM_SHIFT);
159                 layer_off(_VIM);
160                 return false;
161                 break;
162             case I_MACRO:
163                 SEND_STRING(SS_TAP(X_HOME));
164                 layer_off(_VIM_SHIFT);
165                 layer_off(_VIM);
166                 return false;
167                 break;
168             case O_MACRO:
169                 SEND_STRING(SS_TAP(X_ENTER));
170                 layer_off(_VIM_SHIFT);
171                 layer_off(_VIM);
172                 return false;
173                 break;
174         }
175     }
176     return true;
177 }
178
179 void matrix_scan_user(void) {
180   uint8_t layer = biton32(layer_state);
181
182   if (old_layer != layer) {
183     switch (layer) {
184       case _DEFAULT:
185       case _FN:
186         backlight_set(1);
187       break;
188       case _VIM:
189       case _VIM_SHIFT:
190       case _VIM_CONTROL:
191         backlight_set(4);
192       break;
193     }
194     old_layer = layer;
195   }
196 };