c9159eff |
1 | #include "babblePaste.h" |
2 | #include QMK_KEYBOARD_H |
5ac0e6e6 |
3 | |
4 | #define _QWR 0 |
748401e5 |
5 | #define _CDH 2 |
6 | #define _SYM 3 |
7 | #define _MOV 4 |
8 | #define _TRAN 5 |
9 | |
10 | |
11 | enum layer_keycodes { |
12 | QWR, |
13 | CDH, |
14 | SYM, |
15 | MOV, |
fe60cbd9 |
16 | NUM, |
748401e5 |
17 | TRAN |
18 | }; |
19 | |
5ac0e6e6 |
20 | |
21 | // Shorter spacing |
22 | #define XXXX KC_NO |
23 | #define ____ KC_TRNS |
24 | |
25 | // Custom macros |
26 | |
27 | /* Fn Keys */ |
26eef35f |
28 | #define LT_SYM LT(_SYM, KC_SPC) |
5ac0e6e6 |
29 | #define TT_SYM MO(_SYM) |
26eef35f |
30 | #define TT_MOV LT(_MOV,KC_BSPC) |
5ac0e6e6 |
31 | #define TT_NUM MO(_NUM) |
32 | #define SSFT ACTION_MODS_ONESHOT(MOD_LSFT) |
33 | |
748401e5 |
34 | enum macro_keycodes { |
35 | DHPASTE=1, |
36 | VIBRK, |
748401e5 |
37 | }; |
38 | |
5ac0e6e6 |
39 | |
40 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
41 | /* QWERTY |
42 | * |
748401e5 |
43 | * |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| |
5ac0e6e6 |
44 | * -------------------------------------------------------------------------------' |
748401e5 |
45 | * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| |
46 | * --------------------------------------------------------------------------- |
47 | * | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | | |
5ac0e6e6 |
48 | * -------------------------------------------------------------------------------' |
748401e5 |
49 | * |Bak/Mov| a | s | d | f | g | h | j | k | l | ; | ' | enter |PgUp| |
fe60cbd9 |
50 | * -------------------------------------------------------------------------------- |
5ac0e6e6 |
51 | * |Lsft | z | x | c | v | b | n | m | , | . | / | Rsft| Up| PgDn| |
fe60cbd9 |
52 | * --------------------------------------------------------------------------------- |
748401e5 |
53 | * |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| |
fe60cbd9 |
54 | * --------------------------------------------------------------------------------- |
5ac0e6e6 |
55 | */ |
56 | |
c9159eff |
57 | [_QWR] = LAYOUT( \ |
748401e5 |
58 | KC_ESC, 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_VOLD, KC_VOLU, CDH,\ |
5ac0e6e6 |
59 | KC_ESC, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ |
60 | 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_BSLS,\ |
274b1c53 |
61 | TT_MOV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ |
5ac0e6e6 |
62 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,\ |
26eef35f |
63 | KC_LCTL, KC_LGUI, KC_LALT, LT_SYM, KC_RGUI,TT_SYM,KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT |
5ac0e6e6 |
64 | ), |
65 | |
c9159eff |
66 | [_CDH] = LAYOUT(\ |
748401e5 |
67 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, QWR, \ |
5ac0e6e6 |
68 | KC_ESC, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
69 | KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, ____, ____, ____,\ |
2f677c24 |
70 | TT_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_2,\ |
71 | KC_LSFT, KC_Z, KC_X, KC_C, M(DHPASTE), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, KC_1,\ |
26eef35f |
72 | ____, ____, ____ , LT_SYM, ____, ____, ____, ____, ____, ____ |
5ac0e6e6 |
73 | |
74 | ), |
75 | |
748401e5 |
76 | |
77 | /* SYM |
78 | * |
79 | * |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| |
80 | * -------------------------------------------------------------------------------' |
81 | * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace|Del | |
82 | * -------------------------------------------------------------------------- |
83 | * | ESC: | ^ | { | } | @ | % | | [ | ( | ) | _ | [ | ] | \ | | |
84 | * -------------------------------------------------------------------------------' |
2f677c24 |
85 | * |Bak/Mov| ! | # | 0 | = | { | } | - | 1 | + | ] | ` | enter |PgUp| |
fe60cbd9 |
86 | * -------------------------------------------------------------------------------- |
2f677c24 |
87 | * |Lsft | ; | ~ | : | ~ | "|"| $ | * | | . | / | Rsft| Up| PgDn| |
fe60cbd9 |
88 | * --------------------------------------------------------------------------------- |
748401e5 |
89 | * |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| |
fe60cbd9 |
90 | * --------------------------------------------------------------------------------- |
748401e5 |
91 | */ |
92 | |
c9159eff |
93 | [_SYM] = LAYOUT(\ |
5ac0e6e6 |
94 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
95 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
748401e5 |
96 | M(VIBRK), KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ |
2f677c24 |
97 | ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_LCBR, KC_RCBR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ |
b5bfb510 |
98 | ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ |
5ac0e6e6 |
99 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ |
100 | ), |
fe60cbd9 |
101 | /* |
89aba30c |
102 | * |ESC | MAC| Win|RdLn| VI | | | | | | | | | | | | |
01980c96 |
103 | * -------------------------------------------------------------------------------' |
104 | * | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| |
105 | * --------------------------------------------------------------------------- |
b5bfb510 |
106 | * | tab | | |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | |
01980c96 |
107 | * -------------------------------------------------------------------------------' |
b5bfb510 |
108 | * |Bak/Mov| | | | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| |
fe60cbd9 |
109 | * -------------------------------------------------------------------------------- |
b5bfb510 |
110 | * |Lsft |Undo| Cut|Copy|Pste| | | | | | / | Rsft| Up| PgDn| |
fe60cbd9 |
111 | * --------------------------------------------------------------------------------- |
01980c96 |
112 | * |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| |
fe60cbd9 |
113 | * --------------------------------------------------------------------------------- |
01980c96 |
114 | */ |
5ac0e6e6 |
115 | |
c9159eff |
116 | [_MOV] = LAYOUT(\ |
01980c96 |
117 | ____, B_MAC,B_WIN,B_READ, B_VI, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
118 | ____, ____, B_PAPP, B_NAPP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
119 | ____, B_UNDO, ____, B_BFND, ____, B_PTAB, B_DSOL, B_DLW, B_UP, B_DRW, B_DEOL, ____, ____, ____, \ |
120 | ____, B_SELA, B_BRLD, ____, ____, B_NXTB, B_GSOL, B_L1C, B_DOWN, B_R1C,B_GEOL, ____, ____, ____,\ |
121 | ____, B_UNDO,B_CUT, B_COPY, B_PAST, B_PAST, ____, ____, ____, ____, ____, ____, ____, ____, \ |
5ac0e6e6 |
122 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ |
123 | ), |
124 | |
c9159eff |
125 | [_TRAN] = LAYOUT(\ |
5ac0e6e6 |
126 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
01980c96 |
127 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
128 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
129 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
130 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ |
131 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ |
fe60cbd9 |
132 | ) |
5ac0e6e6 |
133 | }; |
134 | |
748401e5 |
135 | #ifdef AUDIO_ENABLE |
136 | |
137 | float tone_startup[][2] = SONG(STARTUP_SOUND); |
138 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); |
139 | float tone_colemak[][2] = SONG(COLEMAK_SOUND); |
140 | #endif |
141 | |
142 | |
143 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
144 | switch (keycode) { |
145 | case QWR: |
146 | if (record->event.pressed) { |
147 | #ifdef AUDIO_ENABLE |
fe60cbd9 |
148 | PLAY_SONG(tone_qwerty); |
748401e5 |
149 | #endif |
150 | layer_off(_CDH); |
151 | } |
152 | return false; |
153 | break; |
fe60cbd9 |
154 | |
748401e5 |
155 | case CDH: |
156 | if (record->event.pressed) { |
157 | #ifdef AUDIO_ENABLE |
fe60cbd9 |
158 | PLAY_SONG(tone_colemak); |
748401e5 |
159 | #endif |
160 | layer_on(_CDH); |
161 | } |
162 | return false; |
163 | break; |
fe60cbd9 |
164 | |
748401e5 |
165 | case SYM: |
166 | if (record->event.pressed) { |
167 | layer_on(_SYM); |
168 | } else { |
169 | layer_off(_SYM); |
170 | } |
171 | return false; |
172 | break; |
fe60cbd9 |
173 | |
748401e5 |
174 | } |
175 | return true; |
176 | |
177 | } |
fe60cbd9 |
178 | |
5ac0e6e6 |
179 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) |
180 | { |
2f677c24 |
181 | |
b5bfb510 |
182 | /* If id is in the range of BABL macros, call the babl function */ |
01980c96 |
183 | /* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ |
2f677c24 |
184 | #ifdef USE_BABLPASTE |
89aba30c |
185 | |
2f677c24 |
186 | if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { |
187 | if (record->event.pressed) { // is there a case where this isn't desired? |
fe60cbd9 |
188 | |
2f677c24 |
189 | babblePaste ( record, id ); |
190 | return MACRO_NONE; |
191 | } |
192 | } |
193 | #endif |
194 | |
89aba30c |
195 | |
5ac0e6e6 |
196 | // MACRODOWN only works in this function |
197 | switch(id) { |
198 | case 0: |
199 | if (record->event.pressed) { |
200 | register_code(KC_RSFT); |
201 | } else { |
202 | unregister_code(KC_RSFT); |
203 | } |
204 | break; |
205 | |
2f677c24 |
206 | /* Colemak mod-dh moves the D key to the qwerty V position |
207 | This hack makes apple-V_position do what I mean */ |
fe60cbd9 |
208 | case DHPASTE: |
2f677c24 |
209 | if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { |
210 | if (record->event.pressed) { |
211 | clear_keyboard_but_mods(); |
212 | register_code(KC_V); |
213 | } else { |
214 | unregister_code(KC_V); |
215 | } |
216 | } else { |
217 | if (record->event.pressed) { |
218 | register_code(KC_D); |
274b1c53 |
219 | } else { |
2f677c24 |
220 | unregister_code(KC_D); |
fe60cbd9 |
221 | } |
2f677c24 |
222 | } |
5ac0e6e6 |
223 | break; |
fe60cbd9 |
224 | |
748401e5 |
225 | case VIBRK: // vi esc: |
226 | if (record->event.pressed) { |
2f677c24 |
227 | return MACRO( T(ESC),D(LSFT),T(SCLN),U(LSFT), END ); |
748401e5 |
228 | } |
fe60cbd9 |
229 | break; |
748401e5 |
230 | |
231 | |
5ac0e6e6 |
232 | |
748401e5 |
233 | |
2f677c24 |
234 | default: |
235 | return MACRO_NONE; |
236 | } |
748401e5 |
237 | |
238 | |
2f677c24 |
239 | return MACRO_NONE; |
240 | }; |
241 | |
5ac0e6e6 |
242 | |
2f677c24 |
243 | |
244 | |
245 | |
246 | void matrix_init_user(void) { |
5ac0e6e6 |
247 | } |
248 | |
249 | void matrix_scan_user(void) { |
250 | |
251 | } |
252 | |
5ac0e6e6 |
253 | |
254 | void led_set_user(uint8_t usb_led) { |
255 | |
256 | } |
748401e5 |
257 | |
258 | |
2f677c24 |
259 | |
260 | |
261 | |
262 | |