aboutsummaryrefslogtreecommitdiff
path: root/layouts/community/60_iso/unxmaal/keymap.c
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-08-23 22:29:07 -0400
committerGitHub <noreply@github.com>2017-08-23 22:29:07 -0400
commitd2ff66a985b938e87fffe55c1d9f1dc55e356f91 (patch)
tree561b3e203033849573a17f5ac6248077ab687676 /layouts/community/60_iso/unxmaal/keymap.c
parent7260fc3eef98fb7b0e2ed24d3d0d14cf2e613000 (diff)
downloadqmk_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/60_iso/unxmaal/keymap.c')
-rw-r--r--layouts/community/60_iso/unxmaal/keymap.c230
1 files changed, 230 insertions, 0 deletions
diff --git a/layouts/community/60_iso/unxmaal/keymap.c b/layouts/community/60_iso/unxmaal/keymap.c
new file mode 100644
index 000000000..e9b38788e
--- /dev/null
+++ b/layouts/community/60_iso/unxmaal/keymap.c
@@ -0,0 +1,230 @@
1#include QMK_KEYBOARD_H
2#include "action_layer.h"
3
4#define _BL 0
5#define _AL 1
6#define _FL 2
7#define _UL 3
8
9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 /*
11 * ANSI Base, Mac style
12 * ,-----------------------------------------------------------------------------.
13 * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | Backsp |
14 * |-----------------------------------------------------------------------------|
15 * |Tab | Q | W | E | R | T | Y | U | I| O| P| [| ]| \|
16 * |-----------------------------------------------------------------------------|
17 * |Caps/Fn | A| S| D| F| G| H| J| K| L| ;| '| Enter |
18 * |-----------------------------------------------------------------------------|
19 * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |
20 * |-----------------------------------------------------------------------------|
21 * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt |Menu(tapped, Fn2(held)|Ctrl|
22 * `-----------------------------------------------------------------------------'
23 */
24 [_BL] = LAYOUT_60_iso(
25 KC_ESC,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_BSPC, \
26 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, \
27 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_NO,KC_ENT, \
28 KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
29 MO(1),KC_LALT,KC_LGUI, LT(1,KC_SPACE), KC_NO, KC_RGUI, KC_RALT, LT(2,KC_MENU), KC_RCTL),
30
31 /*
32 * Pok3r style arrow cluster
33 * ,-----------------------------------------------------------.
34 * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
35 * |-----------------------------------------------------------|
36 * | | | | | | | | |Up| | | | | |
37 * |-----------------------------------------------------------|
38 * | | | | | | | |Left|Down|Right| | | |
39 * |-----------------------------------------------------------|
40 * | | | | | | | | | | | | |
41 * |-----------------------------------------------------------|
42 * | | | | | | | | |
43 * `-----------------------------------------------------------'
44 */
45 [_AL] = LAYOUT_60_iso(
46 KC_GRV,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_DELETE, \
47 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
48 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
49 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
50 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
51
52
53 /*
54 * Secondary function layer
55 * ,-------------------------------------------------------------.
56 * | | | | | | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset |
57 * |-------------------------------------------------------------|
58 * | | | | | | | | | |PgUp| | | | |
59 * |-------------------------------------------------------------|
60 * | | | | | | | |Home|PgDown|End| | | |
61 * |-------------------------------------------------------------|
62 * | | | | | | | | | | | | |
63 * |-------------------------------------------------------------|
64 * | | | | | | | | |
65 * `-------------------------------------------------------------'
66 */
67 [_FL] = LAYOUT_60_iso(
68 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \
69 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
70 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_TRNS,KC_HOME,KC_PGDN,KC_END,KC_TRNS,KC_TRNS,KC_TRNS, \
71 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
72 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
73
74 /*
75 * Locking layer for controlling the underglow.
76 * NOTE: currently unused.
77 *
78 * ,-----------------------------------------------------------.
79 * | | | | | | | | | | | | | | |
80 * |-----------------------------------------------------------|
81 * | | | | | | | | | | | | | | |
82 * |-----------------------------------------------------------|
83 * | |On|Mode| | | | | | | | | | |
84 * |-----------------------------------------------------------|
85 * | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | |
86 * |-----------------------------------------------------------|
87 * | | | | | | | | |
88 * `-----------------------------------------------------------'
89 */
90 [_UL] = LAYOUT_60_iso(
91 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
92 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
93 KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
94 KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
95 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
96};
97
98enum function_id {
99 RGBLED_TOGGLE,
100 RGBLED_STEP_MODE,
101 RGBLED_INCREASE_HUE,
102 RGBLED_DECREASE_HUE,
103 RGBLED_INCREASE_SAT,
104 RGBLED_DECREASE_SAT,
105 RGBLED_INCREASE_VAL,
106 RGBLED_DECREASE_VAL,
107 SHIFT_ESC,
108};
109
110const uint16_t PROGMEM fn_actions[] = {
111 [0] = ACTION_LAYER_MOMENTARY(2), // Momentary Fn overlay
112 [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay
113 [2] = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer
114 [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay
115 [4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
116 [5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
117 [6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
118 [7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
119 [8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
120 [9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
121 [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
122 [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
123 [12] = ACTION_FUNCTION(SHIFT_ESC),
124 [13] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
125};
126
127const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
128{
129 // MACRODOWN only works in this function
130 switch(id) {
131 case 0:
132 if (record->event.pressed) {
133 register_code(KC_RSFT);
134 } else {
135 unregister_code(KC_RSFT);
136 }
137 break;
138 }
139 return MACRO_NONE;
140};
141
142void matrix_scan_user(void) {
143
144// Layer LED indicators
145// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
146 #ifdef KEYBOARD_gh60
147 uint32_t layer = layer_state;
148 if (layer & (1<<1)) {
149 gh60_wasd_leds_on();
150 } else {
151 gh60_wasd_leds_off();
152 }
153
154 if (layer & (1<<2)) {
155 gh60_esc_led_on();
156 } else {
157 gh60_esc_led_off();
158 }
159 #endif
160};
161
162#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
163
164void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
165 switch (id) {
166 case RGBLED_TOGGLE:
167 //led operations
168 if (record->event.pressed) {
169 rgblight_toggle();
170 }
171 break;
172 case RGBLED_INCREASE_HUE:
173 if (record->event.pressed) {
174 rgblight_increase_hue();
175 }
176 break;
177 case RGBLED_DECREASE_HUE:
178 if (record->event.pressed) {
179 rgblight_decrease_hue();
180 }
181 break;
182 case RGBLED_INCREASE_SAT:
183 if (record->event.pressed) {
184 rgblight_increase_sat();
185 }
186 break;
187 case RGBLED_DECREASE_SAT:
188 if (record->event.pressed) {
189 rgblight_decrease_sat();
190 }
191 break;
192 case RGBLED_INCREASE_VAL:
193 if (record->event.pressed) {
194 rgblight_increase_val();
195 }
196 break;
197 case RGBLED_DECREASE_VAL:
198 if (record->event.pressed) {
199 rgblight_decrease_val();
200 }
201 break;
202 case RGBLED_STEP_MODE:
203 if (record->event.pressed) {
204 rgblight_step();
205 }
206 break;
207 static uint8_t shift_esc_shift_mask;
208 // Shift + ESC = ~
209 case SHIFT_ESC:
210 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
211 if (record->event.pressed) {
212 if (shift_esc_shift_mask) {
213 add_key(KC_GRV);
214 send_keyboard_report();
215 } else {
216 add_key(KC_ESC);
217 send_keyboard_report();
218 }
219 } else {
220 if (shift_esc_shift_mask) {
221 del_key(KC_GRV);
222 send_keyboard_report();
223 } else {
224 del_key(KC_ESC);
225 send_keyboard_report();
226 }
227 }
228 break;
229 }
230};