diff options
author | Jack Humbert <jack.humb@gmail.com> | 2017-08-23 22:29:07 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-23 22:29:07 -0400 |
commit | d2ff66a985b938e87fffe55c1d9f1dc55e356f91 (patch) | |
tree | 561b3e203033849573a17f5ac6248077ab687676 /layouts/community/ergodox/csharp_dev/keymap.c | |
parent | 7260fc3eef98fb7b0e2ed24d3d0d14cf2e613000 (diff) | |
download | qmk_firmware-d2ff66a985b938e87fffe55c1d9f1dc55e356f91.tar.gz qmk_firmware-d2ff66a985b938e87fffe55c1d9f1dc55e356f91.zip |
Creates a layouts/ folder for keymaps shared between keyboards (#1609)
* include variables and .h files as pp directives
* start layout compilation
* split ergodoxes up
* don't compile all layouts for everything
* might seg fault
* reset layouts variable
* actually reset layouts
* include rules.mk instead
* remove includes from rules.mk
* update variable setting
* load visualizer from path
* adds some more examples
* adds more layouts
* more boards added
* more boards added
* adds documentation for layouts
* use lowercase names for LAYOUT_
* add layout.json files for each layout
* add community folder, default keymaps for layouts
* touch-up default layouts
* touch-up layouts, some keyboard rules.mk
* update documentation for layouts
* fix up serial/i2c switches
Diffstat (limited to 'layouts/community/ergodox/csharp_dev/keymap.c')
-rw-r--r-- | layouts/community/ergodox/csharp_dev/keymap.c | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/layouts/community/ergodox/csharp_dev/keymap.c b/layouts/community/ergodox/csharp_dev/keymap.c new file mode 100644 index 000000000..7996c92e0 --- /dev/null +++ b/layouts/community/ergodox/csharp_dev/keymap.c | |||
@@ -0,0 +1,239 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | #include "debug.h" | ||
3 | #include "action_layer.h" | ||
4 | |||
5 | #define BASE 0 // default layer | ||
6 | #define FKEYS 1 // F keys + macros | ||
7 | |||
8 | #define MACRO_PUBLIC 10 | ||
9 | #define MACRO_PRIVATE 11 | ||
10 | |||
11 | #define MACRO_STATIC 12 | ||
12 | #define MACRO_CONST 13 | ||
13 | |||
14 | #define MACRO_VOID 14 | ||
15 | #define MACRO_VAR 15 | ||
16 | #define MACRO_STRING 16 | ||
17 | |||
18 | #define MACRO_INT 17 | ||
19 | #define MACRO_FLOAT 18 | ||
20 | #define MACRO_BOOL 19 | ||
21 | |||
22 | #define MACRO_RETURN 20 | ||
23 | #define MACRO_NULL 21 | ||
24 | #define MACRO_BREAK 22 | ||
25 | |||
26 | #define MACRO_TODO 23 | ||
27 | #define MACRO_NEW 24 | ||
28 | #define MACRO_PARENTHESE 25 | ||
29 | |||
30 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
31 | /* Keymap 0: Basic layer | ||
32 | * | ||
33 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
34 | * | ( | 1 | 2 | 3 | 4 | 5 | " | | Save | 6 | 7 | 8 | 9 | 0 | [ | | ||
35 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
36 | * | ) | Q | W | E | R | T |Bkspa | | Del | Y | U | I | O | P | ] | | ||
37 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
38 | * | { | A | S | D | F | G |------| |------| H | J | K | L | _ | Redo | | ||
39 | * |--------+------+------+------+------+------| / | | ; |------+------+------+------+------+--------| | ||
40 | * | } |Z~Alt | X | C | V | B | | | | N | M | ' | ! | ? | Undo | | ||
41 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
42 | * |Tab~CL| < | > | | | & | | = | + | - | * | L1 | | ||
43 | * `----------------------------------' `----------------------------------' | ||
44 | * ,-------------. ,-------------. | ||
45 | * |. ~L1 | , | |Home |End~L1| | ||
46 | * ,------|------|------| |------+------+------. | ||
47 | * | | | Copy | | UP | | | | ||
48 | * | Enter| Space|------| |------| Space|Enter | | ||
49 | * | ~WIN | ~LSFT| Past | | DOWN | ~LSFT| ~WIN | | ||
50 | * `--------------------' `--------------------' | ||
51 | */ | ||
52 | // If it accepts an argument (i.e, is a function), it doesn't need KC_. | ||
53 | // Otherwise, it needs KC_* | ||
54 | [BASE] = LAYOUT_ergodox( // layer 0 : default | ||
55 | // left hand | ||
56 | KC_LPRN, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_QUOTE), | ||
57 | KC_RPRN, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPACE, | ||
58 | KC_LCBR, KC_A, KC_S, KC_D, KC_F, KC_G, | ||
59 | KC_RCBR, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_SLASH, | ||
60 | CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR, | ||
61 | LT(1,KC_DOT), KC_COMM, | ||
62 | LCTL(KC_C), | ||
63 | GUI_T(KC_ENTER),SFT_T(KC_SPACE),LCTL(KC_V), | ||
64 | // right hand | ||
65 | LCTL(KC_S) , KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRACKET, | ||
66 | KC_DELETE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRACKET, | ||
67 | KC_H, KC_J, KC_K, KC_L, KC_UNDS,LCTL(KC_Y), | ||
68 | KC_SCOLON,KC_N, KC_M, KC_QUOTE ,KC_EXLM , LSFT(KC_SLASH), LCTL(KC_Z), | ||
69 | KC_EQUAL,KC_PLUS , KC_MINUS,KC_ASTR , TG(1), | ||
70 | KC_HOME, LT(1,KC_END), | ||
71 | KC_UP, | ||
72 | KC_DOWN,SFT_T(KC_SPACE), GUI_T(KC_ENTER) | ||
73 | ), | ||
74 | |||
75 | /* Keymap 1: F keys + macros | ||
76 | * | ||
77 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
78 | * | ESC | F1 | F2 | F3 | F4 | F5 | ` | | Calc | F6 | F7 | F8 | F9 | F10 | F11 | | ||
79 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
80 | * | Tab |Public|Static|string|int |return| | | |//TODO| | | | | F12 | | ||
81 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
82 | * | |Privat|Const |var |float |null |------| |------|new | | | | | | | ||
83 | * |--------+------+------+------+------+------| \ | | ~ |------+------+------+------+------+--------| | ||
84 | * | | | |void |bool |break;| | | |(); | | | | | | | ||
85 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
86 | * | | WIN | Alt | | | | PgUp | PgDw | Ins | PtSc | | | ||
87 | * `----------------------------------' `----------------------------------' | ||
88 | * ,-------------. ,-------------. | ||
89 | * | | Cut | | | | | ||
90 | * ,------|------|------| |------+------+------. | ||
91 | * | | | | | | | | | ||
92 | * | | |------| |------| Left | Right| | ||
93 | * | | | | | | | | | ||
94 | * `--------------------' `--------------------' | ||
95 | */ | ||
96 | // FKEYS + MACROS | ||
97 | [FKEYS] = LAYOUT_ergodox( | ||
98 | // left hand | ||
99 | KC_ESCAPE,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_GRAVE, | ||
100 | KC_TAB,M(MACRO_PUBLIC),M(MACRO_STATIC), M(MACRO_STRING),M(MACRO_INT),M(MACRO_RETURN),KC_TRNS, | ||
101 | KC_TRNS,M(MACRO_PRIVATE),M(MACRO_CONST), M(MACRO_VAR),M(MACRO_FLOAT),M(MACRO_NULL), | ||
102 | KC_TRNS,KC_TRNS,KC_TRNS,M(MACRO_VOID),M(MACRO_BOOL),M(MACRO_BREAK),KC_BSLASH, | ||
103 | KC_TRNS,KC_LGUI,KC_LALT,KC_TRNS,KC_TRNS, | ||
104 | KC_TRNS,LCTL(KC_X), | ||
105 | KC_TRNS, | ||
106 | KC_TRNS,KC_TRNS,KC_TRNS, | ||
107 | // right hand | ||
108 | KC_CALCULATOR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | ||
109 | KC_TRNS, M(MACRO_TODO), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, | ||
110 | M(MACRO_NEW), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
111 | KC_TILD, M(MACRO_PARENTHESE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
112 | KC_PGUP,KC_PGDOWN, KC_INSERT, KC_PSCREEN, KC_TRNS, | ||
113 | KC_TRNS, KC_TRNS, | ||
114 | KC_TRNS, | ||
115 | KC_TRNS, KC_LEFT, KC_RIGHT | ||
116 | ), | ||
117 | |||
118 | |||
119 | }; | ||
120 | |||
121 | const uint16_t PROGMEM fn_actions[] = { | ||
122 | [1] = ACTION_LAYER_TAP_TOGGLE(FKEYS) // FN1 - Momentary Layer 1 | ||
123 | }; | ||
124 | |||
125 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
126 | { | ||
127 | // MACRODOWN only works in this function | ||
128 | switch(id) { | ||
129 | case MACRO_PUBLIC: | ||
130 | if (record->event.pressed) { | ||
131 | return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END); | ||
132 | } | ||
133 | break; | ||
134 | case MACRO_PRIVATE: | ||
135 | if (record->event.pressed) { | ||
136 | return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END); | ||
137 | } | ||
138 | break; | ||
139 | case MACRO_STATIC: | ||
140 | if (record->event.pressed) { | ||
141 | return MACRO( T(S), T(T), T(A), T(T), T(I), T(C), T(SPACE), END); | ||
142 | } | ||
143 | break; | ||
144 | case MACRO_CONST: | ||
145 | if (record->event.pressed) { | ||
146 | return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END); | ||
147 | } | ||
148 | break; | ||
149 | case MACRO_VOID: | ||
150 | if (record->event.pressed) { | ||
151 | return MACRO( T(V), T(O), T(I), T(D), T(SPACE), END); | ||
152 | } | ||
153 | break; | ||
154 | case MACRO_VAR: | ||
155 | if (record->event.pressed) { | ||
156 | return MACRO( T(V), T(A), T(R), T(SPACE), END); | ||
157 | } | ||
158 | break; | ||
159 | case MACRO_STRING: | ||
160 | if (record->event.pressed) { | ||
161 | return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END); | ||
162 | } | ||
163 | break; | ||
164 | case MACRO_BOOL: | ||
165 | if (record->event.pressed) { | ||
166 | return MACRO( T(B), T(O), T(O), T(L), T(SPACE), END); | ||
167 | } | ||
168 | break; | ||
169 | case MACRO_INT: | ||
170 | if (record->event.pressed) { | ||
171 | return MACRO( T(I), T(N), T(T), T(SPACE), END); | ||
172 | } | ||
173 | break; | ||
174 | case MACRO_FLOAT: | ||
175 | if (record->event.pressed) { | ||
176 | return MACRO( T(F), T(L), T(O), T(A),T(T),T(SPACE), END); | ||
177 | } | ||
178 | break; | ||
179 | case MACRO_RETURN: | ||
180 | if (record->event.pressed) { | ||
181 | return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), END); | ||
182 | } | ||
183 | break; | ||
184 | case MACRO_NULL: | ||
185 | if (record->event.pressed) { | ||
186 | return MACRO( T(N), T(U), T(L), T(L), END); | ||
187 | } | ||
188 | case MACRO_BREAK: | ||
189 | if (record->event.pressed) { | ||
190 | return MACRO( T(B), T(R), T(E), T(A), T(K), T(SCOLON), END); | ||
191 | } | ||
192 | break; | ||
193 | case MACRO_TODO: | ||
194 | if (record->event.pressed) { | ||
195 | return MACRO( T(SLASH), T(SLASH), D(LSHIFT) ,T(T), T(O), T(D), T(O),U(LSHIFT), T(SPACE),END); | ||
196 | } | ||
197 | break; | ||
198 | case MACRO_NEW: | ||
199 | if (record->event.pressed) { | ||
200 | return MACRO( T(N), T(E), T(W), T(SPACE), END); | ||
201 | } | ||
202 | break; | ||
203 | case MACRO_PARENTHESE: | ||
204 | if (record->event.pressed) { | ||
205 | return MACRO( D(LSHIFT),T(9), T(0),U(LSHIFT), T(SCOLON), END); | ||
206 | } | ||
207 | break; | ||
208 | } | ||
209 | return MACRO_NONE; | ||
210 | }; | ||
211 | |||
212 | // Runs just one time when the keyboard initializes. | ||
213 | void matrix_init_user(void) { | ||
214 | |||
215 | }; | ||
216 | |||
217 | // Runs constantly in the background, in a loop. | ||
218 | void matrix_scan_user(void) { | ||
219 | |||
220 | uint8_t layer = biton32(layer_state); | ||
221 | |||
222 | ergodox_board_led_off(); | ||
223 | ergodox_right_led_1_off(); | ||
224 | ergodox_right_led_2_off(); | ||
225 | ergodox_right_led_3_off(); | ||
226 | switch (layer) { | ||
227 | // TODO: Make this relevant to the ErgoDox EZ. | ||
228 | case 1: | ||
229 | ergodox_right_led_1_on(); | ||
230 | break; | ||
231 | case 2: | ||
232 | ergodox_right_led_2_on(); | ||
233 | break; | ||
234 | default: | ||
235 | // none | ||
236 | break; | ||
237 | } | ||
238 | |||
239 | }; | ||