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