]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/minidox/keymaps/tomb0y/keymap.c
Minidox refactor and Configurator support (#3373)
[qmk_firmware.git] / keyboards / minidox / keymaps / tomb0y / keymap.c
1 #include QMK_KEYBOARD_H
2
3 extern keymap_config_t keymap_config;
4
5 #define _WM      0
6 #define _DK      1
7 #define _FUN     2
8
9 #define _DK_ACT  0
10 #define _DK_REL  1
11 #define _KC_COMS 2
12 #define _KC_CENT 3
13
14 #define DK_ACT   M(_DK_ACT)        // activate dead key layer
15 #define DK_REL   M(_DK_REL)        // release dead key layer
16 #define KC_COMS  M(_KC_COMS)       // comma + space
17 #define KC_CENT  M(_KC_CENT)       // comma + enter
18 #define KC_ENOP  ALT_T(KC_ENT)     // press for enter, hold for option
19 #define KC_BSCM  GUI_T(KC_BSPC)    // press for backspace, hold for command
20 #define KC_CTES  CTL_T(KC_ESC)     // press for escape, hold for control
21 #define KC_SHTB  SFT_T(KC_TAB)     // press for tab, hold for shift
22 #define KC_SPFN  LT(_FUN, KC_SPC)  // press for space, hold for function layer (aka spacefn)
23 #define KC_OPTB  RALT(KC_TAB)      // option + tab
24 #define KC_CCSP  RGUI(RCTL(KC_P))  // control + command + p
25 #define KC_CSTB  S(RCTL(KC_TAB))   // shift + control + tab
26 #define KC_C_TB  RCTL(KC_TAB)      // control + tab
27 #define KC_C_LF  RCTL(KC_LEFT)     // control + left
28 #define KC_C_RT  RCTL(KC_RGHT)     // control + right
29 #define KC_BRUP  KC_F15            // brightness up on osx
30 #define KC_BRDN  KC_F14            // brightness down on osx
31
32 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 /* Base layer - workman
34  *
35  * ,----------------------------------.           ,----------------------------------.
36  * |   q  |   d  |   r  |   w  |   b  |           |   j  |   f  |   u  |   p  |   ;  |
37  * |------+------+------+------+------|           |------+------+------+------+------|
38  * |   a  |   s  |   h  |   t  |   g  |           |   y  |   n  |   e  |   o  |   i  |
39  * |------+------+------+------+------|           |------+------+------+------+------|
40  * |   z  |   x  |   m  |   c  |   v  |           |   k  |   l  | dead |   .  |   /  |
41  * `----------------------------------'           `----------------------------------'
42  *                  ,--------------------.    ,---------------------.
43  *                 | tab   | esc  | enter|    |bckspc| space|   tab |
44  *                 | shift | ctrl | alt  |    |  gui |   fn | shift |
45  *                 `-------+------+      |    |      |------+-------.
46  *                                `------'    `------'
47  */
48   [_WM] = LAYOUT( \
49     KC_Q,    KC_D,    KC_R,    KC_W,    KC_B,        KC_J,    KC_F,    KC_U,    KC_P,    KC_SCLN, \
50     KC_A,    KC_S,    KC_H,    KC_T,    KC_G,        KC_Y,    KC_N,    KC_E,    KC_O,    KC_I,    \
51     KC_Z,    KC_X,    KC_M,    KC_C,    KC_V,        KC_K,    KC_L,    DK_ACT,  KC_DOT,  KC_SLSH, \
52                       KC_SHTB, KC_CTES, KC_ENOP,     KC_BSCM, KC_SPFN, KC_SHTB                    \
53   ),
54
55 /* Dead key layer
56  *
57  * ,----------------------------------.           ,----------------------------------.
58  * |   %  |   &  |   ?  |   +  |   @  |           |   $  |   _  |   [  |   ]  |   !  |
59  * |------+------+------+------+------|           |------+------+------+------+------|
60  * |   #  |   (  |   =  |   0  |   {  |           |   }  |   1  |   *  |   )  |   -  |
61  * |------+------+------+------+------|           |------+------+------+------+------|
62  * |   6  |   7  |   8  |   9  |   |  |           |   \  |   2  |   3  |   4  |   5  |
63  * `----------------------------------'           `----------------------------------'
64  *                  ,--------------------.    ,---------------------.
65  *                 | tab   | esc  | comma|    |bckspc| comma|   tab |
66  *                 | shift | ctrl |+enter|    |  gui |+space| shift |
67  *                 `-------+------+      |    |      |------+-------.
68  *                                `------'    `------'
69  */
70   [_DK] = LAYOUT( \
71     KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT,       KC_DLR,  KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, \
72     KC_HASH, KC_LPRN, KC_EQL,  KC_0,    KC_LCBR,     KC_RCBR, KC_1,    KC_ASTR, KC_RPRN, KC_MINS, \
73     KC_6,    KC_7,    KC_8,    KC_9,    KC_PIPE,     KC_BSLS, KC_2,    DK_REL,  KC_4,    KC_5,    \
74                       KC_SHTB, KC_CTES, KC_CENT,     KC_BSCM, KC_COMS, KC_SHTB                    \
75   ),
76
77 /* Function layer
78  *
79  * ,----------------------------------.           ,---------------------------------.
80  * |      |  del |⌃←  |  ⌃→ |      |           | mute | vol- | vol+ | ⌘⌃p |      |
81  * |------+------+------+------+------|           |------+------+------+------+------|
82  * |   `  |  end | pgup | pgdn | home |           |  ←  |   ↓  |   ↑  |  →  |   '  |
83  * |------+------+------+------+------|           |------+------+------+------+------|
84  * | ⌥⇥ |      |⇧⌃⇥| ⌃⇥  |       |           |      |  br- | ,    | br+  |  ^   |
85  * `----------------------------------'           `----------------------------------'
86  *                  ,--------------------.    ,---------------------.
87  *                 | tab   |      | enter|    |bckspc|      |   tab |
88  *                 | shift |      | alt  |    |  gui |      | shift |
89  *                 `-------+------+      |    |      |------+-------.
90  *                                `------'    `------'
91  */
92  [_FUN] = LAYOUT( \
93     XXXXXXX, KC_DEL,  KC_C_LF, KC_C_RT, XXXXXXX,     KC_MUTE, KC_VOLD, KC_VOLU, KC_CCSP, XXXXXXX, \
94     KC_GRV,  KC_END,  KC_PGUP, KC_PGDN, KC_HOME,     KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_QUOT, \
95     KC_OPTB, XXXXXXX, KC_CSTB, KC_C_TB, XXXXXXX,     XXXXXXX, KC_BRDN, KC_COMM, KC_BRUP, KC_CIRC, \
96                       KC_SHTB, XXXXXXX, KC_ENOP,     KC_BSCM, _______, KC_SHTB                    \
97   )
98 };
99
100 void persistant_default_layer_set(uint16_t default_layer) {
101   eeconfig_update_default_layer(default_layer);
102   default_layer_set(default_layer);
103 }
104
105 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
106 {
107   switch(id) {
108     case _KC_COMS:
109       if (record->event.pressed) {
110         return MACRO(T(COMM), T(SPC), END); // comma + space
111       }
112       break;
113     case _KC_CENT:
114       if (record->event.pressed) {
115         return MACRO(T(COMM), T(ENT), END); // comma + enter
116       }
117       break;
118     case _DK_ACT:
119       if (record->event.pressed) {
120         if (keyboard_report->mods & MOD_BIT(KC_LSFT) || keyboard_report->mods & MOD_BIT(KC_RSFT)) { // act as comma when shift is pressed (eg <)
121           register_code(KC_COMM);
122         } else { // activate oneshot dead key layer otherwise
123           layer_on(_DK);
124           set_oneshot_layer(_DK, ONESHOT_START);
125         }
126       } else { // make sure to deactive dead key layer on key release
127         clear_oneshot_layer_state(ONESHOT_PRESSED);
128         unregister_code(KC_COMM);
129       }
130       break;
131     case _DK_REL:
132       if (record->event.pressed) { // act as 3 on keypress
133         register_code(KC_3);
134       } else { // make sure to deactive dead key layer on key release
135         clear_oneshot_layer_state(ONESHOT_PRESSED);
136         unregister_code(KC_3);
137       }
138       break;
139   }
140
141   return MACRO_NONE;
142 };