]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/chimera_ls/keymaps/default/keymap.c
Added Chimera LS and Chimera Ergo (#2335)
[qmk_firmware.git] / keyboards / chimera_ls / keymaps / default / keymap.c
1 // this is the style you want to emulate.
2 // This is the canonical layout file for the Quantum project. If you want to add another keyboard,
3
4 #include "chimera_ls.h"
5
6 // Each layer gets a name for readability, which is then used in the keymap matrix below.
7 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
8 // Layer names don't all need to be of the same length, obviously, and you can also skip them
9 // entirely and just use numbers.
10 enum chimera_lets_split_layers
11 {
12         _QWERTY,
13         _CAPS,
14         _NUMPAD,
15         _SYMBOLS,
16         _MACROS,
17         _NAV
18 };
19
20 #define KC_NMPD TG(_NUMPAD)
21 #define KC_SYMB TG(_SYMBOLS)
22 #define KC_SPFN LT(_NAV,KC_EQL)
23 #define KC_SCTL MT(MOD_LCTL, KC_BSLS)
24 #define KC_SCTR MT(MOD_LCTL, KC_RBRC)
25 #define KC_SPLT MT(MOD_LALT, KC_MINS)
26 #define KC_MESC LT(_MACROS, KC_ESC)
27 #define KC_INCL M(0)
28 #define KC_PULL M(1)
29 #define KC_PUSH M(2)
30 #define KC_SCAP M(3)
31 #define KC_SCOF M(4)
32 #define KC_CAD LALT(LCTL(KC_DEL))
33
34 #define LONGPRESS_DELAY 150
35 //#define LAYER_TOGGLE_DELAY 300
36
37 // Fillers to make layering more clear
38 #define _______ KC_TRNS
39 #define XXXXXXX KC_NO
40 #define KC_ KC_TRNS 
41
42 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43
44   [_QWERTY] = KC_KEYMAP(
45   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
46      MESC, Q  , W  , E  , R  , T  ,      Y  , U  , I  , O  , P  ,BSPC,
47   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
48      TAB , A  , S  , D  , F  , G  ,      H  , J  , K  , L  ,SCLN, ENT,
49   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
50      LSPO, Z  , X  , C  , V  , B  ,      N  , M  ,COMM,DOT ,SLSH,RSPC,
51   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
52      SCTL,SPFN,SPLT,AMPR,NMPD,SPC ,     SPC ,SYMB,ASTR,EXLM,LBRC,SCTR
53   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
54   ),
55
56   [_CAPS] = KC_KEYMAP(
57   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
58          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    ,
59   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
60          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,COLN,    ,
61   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
62          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    ,
63   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
64          ,    ,UNDS,    ,    ,    ,         ,    ,    ,    ,    ,    
65   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
66   ),
67
68
69   [_NUMPAD] = KC_KEYMAP(
70   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
71          ,    ,    ,    ,    ,    ,         ,  7 ,  8 ,  9 ,MINS,QUOT,
72   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
73          ,    ,    ,    ,    ,    ,         ,  4 ,  5 ,  6 ,PLUS, ENT,
74   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
75      LSFT,    ,    ,    ,    ,    ,         ,  1 ,  2 ,  3 ,ASTR, EQL,
76   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
77          ,    ,    ,    ,    ,BSPC,     SPC ,  0 ,  0 , DOT,SLSH,    
78   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
79   ),
80
81   [_SYMBOLS] = KC_KEYMAP(
82   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
83          ,EXLM, AT ,HASH,DLR ,PERC,     CIRC,AMPR,ASTR,LPRN,RPRN,QUOT,
84   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
85       F1 , F2 , F3 , F4 , F5 , F6 ,     TILD,EQL ,UNDS,LCBR,RCBR,PIPE,
86   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
87       F7 , F8 , F9 , F10, F11, F12,     GRV ,PLUS,MINS,LBRC,RBRC,BSLS,
88   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
89          ,    ,    ,    , NO ,BSPC,     SPC ,    ,    ,    ,    ,    
90   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
91   ),
92
93   [_NAV] = KC_KEYMAP(
94   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
95          ,    ,    ,    , DEL,BSPC,         ,HOME, UP , END, INS,PSCR,
96   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
97          ,    ,    ,LSFT,LCTL, ENT,         ,LEFT,DOWN,RGHT, DEL,   ,
98   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
99          ,    ,    ,    ,    ,    ,         ,PGUP,PGDN,    ,    ,    ,
100   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
101          ,    ,    ,    ,    ,DEL ,         ,    ,    ,    ,    ,   
102   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
103   ),
104
105   [_MACROS] = KC_KEYMAP(
106   //,----+----+----+----+----+----.    ,----+----+----+----+----+----.
107          ,    ,    ,    ,    ,    ,         ,    ,INCL,    ,    ,    ,
108   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
109          ,    ,    ,CAD ,    ,    ,         ,    ,    ,    ,    ,    ,
110   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
111      SCAP,    ,    ,    ,    ,    ,         ,    ,PULL,PUSH,    ,SCAP,
112   //|----+----+----+----+----+----|    |----+----+----+----+----+----|
113          ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,   
114   //`----+----+----+----+----+----'    `----+----+----+----+----+----'
115   ),
116
117 };
118
119
120 const uint16_t PROGMEM fn_actions[] = {
121
122 };
123
124 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
125 {
126   switch(id) {
127     /* include some kind of library or header */
128     case 0:
129       if (record->event.pressed) {
130         SEND_STRING("#include <>");
131         return MACRO( T(LEFT), END);
132       }
133       break;
134     case 1:
135       if (record->event.pressed) {
136         SEND_STRING("git pull");
137         return MACRO( T(ENT), END );
138       }
139       break;
140     case 2:
141       if (record->event.pressed){
142         SEND_STRING("git push");
143         return MACRO( T(ENT), END );
144       }
145       break;
146     case 3:
147       if (record->event.pressed){
148         layer_on(_CAPS);
149         register_code(KC_CAPSLOCK);
150         unregister_code(KC_CAPSLOCK);
151       }
152       break;
153     case 4:
154       if (record->event.pressed){
155         layer_off(_CAPS);
156         register_code(KC_CAPSLOCK);
157         unregister_code(KC_CAPSLOCK);
158       }
159       break;
160   }
161   return MACRO_NONE;
162 };
163  
164
165 void matrix_scan_user(void) {
166     uint8_t layer = biton32(layer_state);
167     
168     switch (layer) {
169         case _QWERTY:
170             set_led_green;
171             break;
172         case _CAPS:
173             set_led_white;
174             break;
175         case _NUMPAD:
176             set_led_blue;
177             break;
178         case _SYMBOLS:
179             set_led_red;
180             break;
181         case _NAV:
182             set_led_magenta;
183             break;
184         case _MACROS:
185             set_led_cyan;
186             break;
187        default:
188             set_led_green;
189             break;
190     }
191 };