1 // https://github.com/shanecelis/tmk_keyboard/blob/master/keyboard/planck/keymap_shane.c
3 #include "keymap_common.h"
4 #include "action_layer.h"
6 #include "action_util.h"
10 http://www.keyboard-layout-editor.com/#/layouts/015d9011102619d7695c86ffe57cf441
12 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13 [0] = KEYMAP_AND_SWAP( /* Base */
14 TAB, Q, W, E, R, T, Y, U, I, O, P, MINS,
15 LCTL, A, S, D, F, G, H, J, K, L, SCLN, BSPC,
16 LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5,
17 /*ALPHA*/FN3, /*HYPER*/ /*SUPER*/LGUI, /*META*/LALT, LCTL, FN2, FN6, FN1, LEFT, DOWN, UP, RGHT),
18 [2] = KEYMAP_AND_SWAP( /* More modifiers */
19 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
20 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
21 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
22 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RCTL, RALT, RGUI, TRNS),
23 [4] = KEYMAP_AND_SWAP( /* WASD */
24 TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
25 TRNS, LEFT, DOWN, RIGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
26 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
27 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
28 [6] = KEYMAP_AND_SWAP( /* Raise/FN1 */
29 FN23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, EQL,
30 TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, ENT,
31 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, BSLS, TRNS,
32 PAUS, TRNS, TRNS, TRNS, TRNS, BSPC, TRNS, MUTE, PGUP, PGDN, MNXT),
33 [8] = KEYMAP_AND_SWAP( /* Lower/FN2 */
34 ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN19, FN20, TRNS,
35 TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT,
36 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN24, FN25, LBRC, RBRC, TRNS, TRNS,
37 FN4, TRNS, TRNS, TRNS, TRNS, ENT, TRNS, MPLY, VOLD, VOLU, MPRV),
44 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
48 if (record->event.pressed) {
49 // Change the keyboard maps.
50 // Whatever even layer's are on, turn on the odd one's too.
51 for (uint8_t i = 0; i < 9; i += 2) {
52 if (layer_state & (1UL << i))
57 // turn off all the even layers.
58 for (uint8_t i = 0; i < 9; i += 2)
61 if (record->tap.count != 0) {
62 // Space was tapped rather than used like a modifier.
63 // So send a space up and down event.
65 send_keyboard_report();
67 send_keyboard_report();
76 const uint16_t PROGMEM fn_actions[] = {
77 [1] = ACTION_LAYER_MOMENTARY(6), // to fist Fn overlay
78 [2] = ACTION_LAYER_MOMENTARY(8), // to second Fn overlay
79 [3] = ACTION_LAYER_TOGGLE(2), // toggle more modifiers
80 [4] = ACTION_LAYER_TOGGLE(4), // toggle wasd
81 [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
82 [6] = ACTION_FUNCTION_TAP(SPACE_FN),
84 [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
85 [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
86 [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
87 [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
88 [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
89 [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
90 [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
91 [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
92 [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
93 [20] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
94 [21] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
95 [22] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
96 [23] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
97 [24] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
98 [25] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
99 [26] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),