]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus/keymaps/khitsule/keymap.c
QMK Configurator updates: Atom47, Atomic and Atreus (#2883)
[qmk_firmware.git] / keyboards / atreus / keymaps / khitsule / keymap.c
1 // Personal keymap of khitsule
2
3 #include QMK_KEYBOARD_H
4
5 #define ALPH 0
6 #define LOWR 1
7 #define RAIS 2
8
9 // enum layers {
10 //   ALPH, //alpha qwerty
11 //   LOWR, //layer 1: nav and functions
12 //   RAIS //layer 2: numpad and symbols
13 // };
14
15 // define any macros here to keep keymap clean and readable
16
17 #define KM_DLEFT LGUI(LCTL(KC_LEFT))
18 #define KM_DRIGHT LGUI(LCTL(KC_RIGHT))
19
20 #define tap_mod_macro(record, mod, macro) ( ((record)->event.pressed) ? \
21      ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
22      ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (macro) : MACRO(U(mod), END) ) )
23
24
25
26 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27   [ALPH] = LAYOUT(
28     KC_Q,    KC_W,     KC_E,     KC_R,           KC_T,                                               KC_Y,              KC_U,     KC_I,     KC_O,     KC_P,
29     KC_A,    KC_S,     KC_D,     KC_F,           KC_G,                                               KC_H,              KC_J,     KC_K,     KC_L,     KC_SCLN,
30     KC_Z,    KC_X,     KC_C,     KC_V,           KC_B,                                               KC_N,              KC_M,     KC_COMM,  KC_DOT,   KC_SLSH,
31     KC_ESC,  KC_TRNS,  KC_TRNS,  ALT_T(KC_ENT),  LT(LOWR, KC_TAB),  CTL_T(KC_SPC),  SFT_T(KC_BSPC),  LT(RAIS, KC_DEL),  KC_LGUI,  KC_TRNS,  KC_QUOT,  KC_MINUS
32   ),
33   [LOWR] = LAYOUT(
34     KC_PSCR,   KC_HOME,    KC_UP,         KC_END,   KC_TRNS,                      KC_LPRN,        KC_F7,    KC_F8,    KC_F9,    KC_RPRN,
35     KC_VOLU,   KC_LEFT,    KC_DOWN,       KC_RIGHT, KC_PGUP,                      KC_LBRC,        KC_F4,    KC_F5,    KC_F6,    KC_RBRC,
36     KC_VOLD,   KC_MPRV,    KC_MPLY,       KC_MNXT,  KC_PGDN,                      LSFT(KC_LBRC),  KC_F1,    KC_F2,    KC_F3,    LSFT(KC_RBRC),
37     KM_DLEFT,  KM_DRIGHT,  LALT(KC_TAB),  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,        KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS
38   ),
39   [RAIS] = LAYOUT(
40     KC_EXLM,  KC_AT,    KC_HASH,  KC_DLR,   KC_PERC,                      KC_TRNS,   KC_7,     KC_8,  KC_9,    KC_TRNS,
41     KC_CIRC,  KC_AMPR,  KC_GRV,   KC_TILD,  KC_PIPE,                      KC_PLUS,   KC_4,     KC_5,  KC_6,    KC_ASTR,
42     KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_BSLS,                      KC_MINUS,  KC_1,     KC_2,  KC_3,    KC_SLASH,
43     RESET,    KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,   KC_TRNS,  KC_0,  KC_DOT,  KC_EQL
44   ),
45 };
46
47 const uint16_t PROGMEM fn_actions[] = {
48   [1] = ACTION_MACRO_TAP(1),
49   [2] = ACTION_MACRO_TAP(2)
50 };
51
52 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
53   switch(id) {
54     case 1:
55       return tap_mod_macro(record, LGUI, MACRO( D(LSFT), T(9), U(LSFT), END));
56       break;
57     case 2:
58       return tap_mod_macro(record, LALT, MACRO( D(LSFT), T(0), U(LSFT), END));
59       break;
60
61   }
62   return MACRO_NONE;
63 };