]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus62/keymaps/atreus52/keymap.c
aef87d6d5d671270054a36d29699e7f1880ee83d
[qmk_firmware.git] / keyboards / atreus62 / keymaps / atreus52 / keymap.c
1 #include "atreus62.h"
2
3 // Layers
4 #define QWERTY 0
5 #define DVORAK 1
6 #define RAISE 2
7 #define LOWER 3
8
9 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 [QWERTY] = KC_KEYMAP(
11     NO, 1,    2,    3,    4,    5,                6,    7,    8,    9,    0,    NO, \
12     NO, Q,    W,    E,    R,    T,                Y,    U,    I,    O,    P,    NO, \
13     NO, A,    S,    D,    F,    G,                H,    J,    K,    L,    SCLN, NO, \
14     NO, Z,    X,    C,    V,    B,                N,    M,    COMM, DOT,  SLSH, NO, \
15     NO, FN2,  LALT, LCTL, FN1,  FN3,  BSPC, ENT,  SPC,  FN0,  LGUI, LEFT, RGHT, NO  ),
16
17 [DVORAK] = KC_KEYMAP(
18     NO, 1,    2,    3,    4,    5,                6,    7,    8,    9,    0,    NO, \
19     NO, QUOT, COMM, DOT,  P,    Y,                F,    G,    C,    R,    L,    NO, \
20     NO, A,    O,    E,    U,    I,                D,    H,    T,    N,    S,    NO, \
21     NO, SCLN, Q,    J,    K,    X,                B,    M,    W,    V,    Z,    NO, \
22     NO, FN2,  LALT, LCTL, FN1,  FN3,  BSPC, ENT,  SPC,  FN0,  LGUI, LEFT, RGHT, NO  ),
23
24 [RAISE] = KC_KEYMAP(
25     NO, MRWD, MPRV, MPLY, MNXT, MFFD,             TRNS, MUTE, VOLD, VOLU, DEL,  NO, \
26     NO, TILD, GRV,  DQUO, QUOT, LCBR,             RCBR, EQL,  PLUS, MINS, QUES, NO, \
27     NO, ESC,  TAB,  BSLS, SLS,  LPRN,             RPRN, LEFT, DOWN, UP,   RGHT, NO, \
28     NO, TRNS, TRNS, TRNS, TRNS, LBRC,             RBRC, PIPE, UNDS, TRNS, TRNS, NO, \
29     NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO  ),
30
31 [LOWER] = KC_KEYMAP(
32     NO, TRNS, TRNS, TRNS, TRNS, TRNS,             TRNS, TRNS, TRNS, TRNS, TRNS, NO, \
33     NO, EXLM, AT,   HASH, DLR,  PERC,             CIRC, AMPR, ASTR, LPRN, RPRN, NO, \
34     NO, 1,    2,    3,    4,    5,                6,    7,    8,    9,    0,    NO, \
35     NO, TRNS, TRNS, TRNS, TRNS, TRNS,             TRNS, DOT,  TRNS, TRNS, TRNS, NO, \
36     NO, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, NO  )
37
38 };
39
40 const uint16_t PROGMEM fn_actions[] = {
41     [0] = ACTION_LAYER_MOMENTARY(RAISE), // Raise layer
42     [1] = ACTION_LAYER_MOMENTARY(LOWER), // Lower layer
43     [2] = ACTION_LAYER_TOGGLE(NAV),
44     [3] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPC)
45 };
46
47 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
48 {
49     // MACRODOWN only works in this function
50     switch (id) {
51     case 0:
52         if (record->event.pressed) {
53             register_code(KC_RSFT);
54         }
55         else {
56             unregister_code(KC_RSFT);
57         }
58         break;
59     }
60     return MACRO_NONE;
61 };
62
63 static uint8_t qw_dv_swap_state = 0;
64
65 bool process_record_user (uint16_t keycode, keyrecord_t *record) {
66     if (keycode == KC_LGUI) {
67         if (record->event.pressed)
68             qw_dv_swap_state |= 0b00000001;
69         else
70             qw_dv_swap_state &= ~(0b00000001);
71     }
72     if (keycode == KC_LCTL) {
73         if (record->event.pressed)
74             qw_dv_swap_state |= 0b00000010;
75         else
76             qw_dv_swap_state &= ~(0b00000010);
77     }
78
79     if (qw_dv_swap_state == 0b00000011) {
80         layer_invert(DVORAK);
81     }
82     return true;
83 }