]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboard/quark/common_keymaps/keymap_shane.c
d4e40fe63afd55ef33b3e202d3f6f77bb6fa13a8
[qmk_firmware.git] / keyboard / quark / common_keymaps / keymap_shane.c
1 // https://github.com/shanecelis/tmk_keyboard/blob/master/keyboard/planck/keymap_shane.c
2
3 #include "keymap_common.h"
4 #include "action_layer.h"
5 #include "action.h"
6 #include "action_util.h"
7
8 /*
9   Shane's Planck Layout
10   http://www.keyboard-layout-editor.com/#/layouts/015d9011102619d7695c86ffe57cf441
11 */
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),
38 };
39
40 enum function_id {
41   SPACE_FN,
42 };
43
44 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
45 {
46   switch (id) {
47   case SPACE_FN:
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))
53           layer_on(i + 1);
54       }
55       layer_on(1);
56     } else {
57       // turn off all the even layers.
58       for (uint8_t i = 0; i < 9; i += 2)
59         layer_off(i + 1);
60
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.
64         add_key(KC_SPC);
65         send_keyboard_report();
66         del_key(KC_SPC);
67         send_keyboard_report();
68       }
69     }
70     break;
71   }
72 }
73
74
75
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),
83
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),
100 };