]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/tv44/keymaps/xyverz/keymap.c
a2f4f48f8942d1111f94565f4ac2a889ad8b6987
[qmk_firmware.git] / keyboards / tv44 / keymaps / xyverz / keymap.c
1 #include "tv44.h"
2 #include "action_layer.h"
3 #include "eeconfig.h"
4
5 extern keymap_config_t keymap_config;
6
7 // Layer Names
8 #define _DVORAK 0
9 #define _QWERTY 1
10 #define _COLEMAK 2
11 #define _LOWER 3
12 #define _RAISE 4
13 #define _ADJUST 16
14
15 enum planck_keycodes {
16   DVORAK = SAFE_RANGE,
17   QWERTY,
18   COLEMAK,
19   LOWER,
20   RAISE
21 };
22
23 // Layer-Tapping macros
24 #define ESCLOWR LT(_LOWER, KC_ESC)
25 #define MINSRSE LT(_RAISE, KC_MINS)
26 #define QUOTRSE LT(_RAISE, KC_QUOT)
27
28 // Fillers to make layering more clear
29 #define _______ KC_TRNS
30 #define XXXXXXX KC_NO
31
32
33 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34   [_DVORAK] = { /* 0: Dvorak */
35     {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH },
36     {ESCLOWR, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    MINSRSE },
37     {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT },
38     {KC_LCTL, KC_LALT, LOWER,   KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  RAISE,   KC_LGUI, XXXXXXX, KC_ENT  }
39   },
40
41   [_QWERTY] = { /* 1: Qwerty */
42     {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC },
43     {ESCLOWR, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, QUOTRSE },
44     {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
45     {KC_LCTL, KC_LALT, LOWER,   KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  RAISE,   KC_LGUI, XXXXXXX, KC_ENT  }
46   },
47
48   [_COLEMAK] = { /* 2: Colemak */
49     {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC },
50     {ESCLOWR, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    QUOTRSE },
51     {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT },
52     {KC_LCTL, KC_LALT, LOWER,   KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC,  RAISE,   KC_LGUI, XXXXXXX, KC_ENT  }
53   },
54
55   [_LOWER] = {/* 1: FN 1 */
56     {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE },
57     {_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
58     {KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______ },
59     {KC_LEFT, KC_RGHT, _______, KC_DEL,  XXXXXXX, XXXXXXX, XXXXXXX, KC_INS,  _______, KC_UP,   XXXXXXX, KC_DOWN }
60   },
61
62   [_RAISE] = { /* 2: FN 2 */
63     {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSLS },
64     {_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS },
65     {KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______ },
66     {KC_LEFT, KC_RGHT, _______, KC_DEL,  XXXXXXX, XXXXXXX, XXXXXXX, KC_INS,  _______, KC_UP,   XXXXXXX, KC_DOWN }
67   },
68
69   [_ADJUST] = {
70     {KC_F11,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F12 },
71     {_______, RESET,   _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______},
72     {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
73     {KC_HOME, KC_END,  _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PGUP, XXXXXXX, KC_PGDN}
74   }
75 };
76
77 const uint16_t PROGMEM fn_actions[] = {
78
79 };
80
81 void persistant_default_layer_set(uint16_t default_layer) {
82   eeconfig_update_default_layer(default_layer);
83   default_layer_set(default_layer);
84 }
85
86 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
87       switch(keycode) {
88         case DVORAK:
89           if (record->event.pressed) {
90             persistant_default_layer_set(1UL<<_DVORAK);
91           }
92           break;
93         case QWERTY:
94           if (record->event.pressed) {
95             persistant_default_layer_set(1UL<<_QWERTY);
96           }
97           break;
98         case COLEMAK:
99           if (record->event.pressed) {
100             persistant_default_layer_set(1UL<<_COLEMAK);
101           }
102           break;
103         case LOWER:
104           if (record->event.pressed) {
105             layer_on(_LOWER);
106             update_tri_layer(_LOWER, _RAISE, _ADJUST);
107           } else {
108             layer_off(_LOWER);
109             update_tri_layer(_LOWER, _RAISE, _ADJUST);
110           }
111           return false;
112           break;
113         case RAISE:
114           if (record->event.pressed) {
115             layer_on(_RAISE);
116             update_tri_layer(_LOWER, _RAISE, _ADJUST);
117           } else {
118             layer_off(_RAISE);
119             update_tri_layer(_LOWER, _RAISE, _ADJUST);
120           }
121           return false;
122           break;
123       }
124     return MACRO_NONE;
125 };