]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/jd45/keymaps/mjt/keymap.c
[Keyboard] Add QMK configurator JSON for Alice PCB (#6397)
[qmk_firmware.git] / keyboards / jd45 / keymaps / mjt / keymap.c
1 #include QMK_KEYBOARD_H
2
3 /* Mike's Layout for JD45 with backlight LEDs acting as layer indicator
4  */
5
6 #define KC_TT2 TT(2)
7
8 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
9     [0] = LAYOUT_kc(
10         TAB, Q, W, E, R, T, Y, U, I, O, P, MINS, BSLS,
11         FN1, A, S, D, F, G, H, J, K, L, QUOT, ENT,
12         FN0, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,
13         NO, LCTL, LALT, LGUI, SPC, BSPC, APP, TT2, ESC, NO),
14     [1] = LAYOUT_kc(
15         GRV, TRNS, UP, TRNS, 7, 8, 9, 0, MINS, EQL, PSCR, LBRC, RBRC,
16         TRNS, LEFT, DOWN, RGHT, 4, 5, 6, INS, HOME, PGUP, SCLN, TRNS,
17         TRNS, TRNS, TRNS, TRNS, 1, 2, 3, DEL, END, PGDN, TRNS, TRNS,
18         TRNS, TRNS, TRNS, SPC, TRNS, DEL, TRNS, FN3, TRNS, TRNS),
19     [2] = LAYOUT_kc(
20         TRNS, TRNS, VOLU, TRNS, F7, F8, F9, F10, F11, F12, PSCR, FN3, FN4,
21         TRNS, MPRV, VOLD, MNXT, F4, F5, F6, J, K, L, SCLN, TRNS,
22         TRNS, TRNS, TRNS, TRNS, F1, F2, F3, MUTE, MPRV, MNXT, MSTP, TRNS,
23         TRNS, TRNS, TRNS, LGUI, TRNS, TRNS, TRNS, TRNS, PAUS, TRNS)
24     /*  ,
25 [3] = LAYOUT_kc(
26 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
27 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
28 TRNS, TRNS, TRNS, TRNS, TRNS, BTLD, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
29 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS )*/
30 };
31
32 enum macro_id
33 {
34     M_LAYER1,
35     M_LAYER2
36 };
37
38 const uint16_t PROGMEM fn_actions[] = {
39     [0] = ACTION_MODS_TAP_TOGGLE(MOD_LSFT),
40     [1] = ACTION_MACRO(M_LAYER1),
41     [3] = ACTION_BACKLIGHT_STEP(),
42     [4] = ACTION_BACKLIGHT_TOGGLE()};
43
44 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
45 {
46     // MACRODOWN only works in this function
47     switch (id)
48     {
49     case M_LAYER1:
50         // need to add a timer for doubletap: https://github.com/jackhumbert/qmk_firmware/wiki#timer-functionality
51         // action_function_tap may also handle this...
52         if (record->event.pressed)
53         {
54             breathing_period_set(3);
55             breathing_enable();
56             layer_on(1);
57         }
58         else
59         {
60             breathing_period_set(1);
61             breathing_self_disable();
62             layer_off(1);
63         }
64         break;
65     case M_LAYER2:
66         if (record->event.pressed)
67         {
68             breathing_period_set(2);
69             breathing_pulse();
70             layer_on(2);
71         }
72         else
73         {
74             breathing_period_set(1);
75             breathing_self_disable();
76             layer_off(2);
77         }
78         break;
79     }
80     return MACRO_NONE;
81 };