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