]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus/keymaps/jeremy/keymap.c
QMK Configurator updates: Atom47, Atomic and Atreus (#2883)
[qmk_firmware.git] / keyboards / atreus / keymaps / jeremy / keymap.c
1 // This is the personal keymap of Jeremy Cowgar (@jcowgar). It is written for the programmer.
2
3 #include QMK_KEYBOARD_H
4 #include "action_layer.h"
5 #include "keymap_colemak.h"
6
7 #define PREVENT_STUCK_MODIFIERS
8
9 // Each layer gets a name for readability, which is then used in the keymap matrix below.
10 #define ALPH 0
11 #define NUMS 1
12 #define CURS 2
13 #define SYMB 3
14 #define FKEY 4
15
16 // Some handy macros to keep the keymaps clean and easier to maintain
17 #define KM_SAVE LGUI(CM_S)
18 #define KM_CLSE LGUI(CM_W)
19 #define KM_OPEN LGUI(CM_O)
20
21 #define KM_COPY LGUI(KC_C)
22 #define KM_CUT  LGUI(KC_X)
23 #define KM_PAST LGUI(KC_V)
24 #define KM_UNDO LGUI(KC_Z)
25 #define KM_REDO LGUI(LSFT(KC_Z))
26
27 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28   [ALPH] = LAYOUT(
29     KC_Q,    KC_W,           KC_E,           KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,           KC_O,           KC_P,
30     KC_A,    LT(NUMS, KC_S), LT(FKEY, KC_D), KC_F,    KC_G,                      KC_H,    KC_J,    LT(CURS, KC_K), LT(SYMB, KC_L), KC_SCLN,
31     KC_Z,    KC_X,           KC_C,           KC_V,    KC_B,                      KC_N,    KC_M,    KC_COMM,        KC_DOT,         KC_SLSH,
32     KC_LCTL, KC_ESC,         KC_NO,          KC_LSFT, KC_SPC,  KC_LALT, KC_LGUI, KC_ENT,  KC_RSFT, KC_NO,          KC_ESC,         KC_RCTL
33   ),
34   [NUMS] = LAYOUT(
35     KC_TRNS, KC_TRNS,        KC_TRNS,        KC_ASTR, KC_SLSH,                   KC_TRNS, KC_7,    KC_8,           KC_9,           KC_SLSH,
36     KC_TRNS, KC_TRNS,        KC_EQL,         KC_PLUS, KC_MINS,                   KC_LPRN, KC_4,    KC_5,           KC_6,           KC_ASTR,
37     KC_TRNS, KC_TRNS,        KC_DOT,         KC_COMM, CM_SCLN,                   KC_RPRN, KC_1,    KC_2,           KC_3,           KC_MINS,
38     KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,    KC_DOT,         KC_EQL,         KC_PLUS
39   ),
40   [CURS] = LAYOUT(
41     KC_TRNS, KC_BSPC,        KC_UP,          KC_DELT, KC_PGUP,                   KC_TRNS, KM_SAVE, KC_TRNS,        KM_OPEN,        KC_TRNS,
42     KC_TRNS, KC_LEFT,        KC_DOWN,        KC_RGHT, KC_PGDN,                   KM_UNDO, KC_LALT, KC_TRNS,        KC_LGUI,        KC_TRNS,
43     KC_TRNS, KC_VOLD,        KC_MUTE,        KC_VOLU, KC_MPLY,                   KM_REDO, KM_CLSE, KC_TRNS,        KC_TRNS,        KC_TRNS,
44     KC_TRNS, KC_TRNS,        RESET,          KC_TRNS, KC_TAB,  KM_COPY, KM_CUT,  KM_PAST, KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS
45   ),
46   [SYMB] = LAYOUT(
47     KC_BSLS, KC_EXLM,        KC_LABK,        KC_RABK, CM_COLN,                   KC_UNDS, KC_DLR,  KC_QUES,       KC_TRNS,         KC_PERC,
48     KC_AT,   KC_AMPR,        KC_LPRN,        KC_RPRN, CM_SCLN,                   KC_COMM, KC_DOT,  KC_QUOT,       KC_TRNS,         KC_TILD,
49     KC_HASH, KC_PIPE,        KC_LCBR,        KC_RCBR, KC_SLSH,                   KC_TRNS, KC_GRV,  KC_DQT,        KC_TRNS,         KC_CIRC,
50     KC_TRNS, KC_TRNS,        KC_LBRC,        KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,         KC_TRNS
51   ),
52   [FKEY] = LAYOUT(
53     KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS,                   KC_TRNS, KC_F9,   KC_F10,        KC_F11,          KC_F12,
54     KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS,                   KC_TRNS, KC_F5,   KC_F6,         KC_F7,           KC_F8,
55     KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS,                   KC_TRNS, KC_F1,   KC_F2,         KC_F3,           KC_F4,
56     KC_TRNS, KC_TRNS,        KC_TRNS,        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_TRNS,         KC_TRNS
57   ),
58 };
59
60 const uint16_t PROGMEM fn_actions[] = {
61
62 };
63
64 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
65   switch(id) {}
66
67   return MACRO_NONE;
68 };