]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/handwired/traveller/keymaps/default/keymap.c
4802b05345146dc6a5d3b7e564ec5978bbe5d319
[qmk_firmware.git] / keyboards / handwired / traveller / keymaps / default / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "mousekey.h"
3
4 // Each layer gets a name for readability, which is then used in the keymap matrix below.
5 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
6 #define _QW 0
7 #define _LW 1
8 #define _HI 2
9 #define _NAV 4
10 #define _CUR 5
11 #define _FKEYS 6
12 #define _TRNS 8
13
14 // We do the same trick for functions
15 #define  RGBLED_TOGGLE 10
16 #define _HIOUT 15
17 #define _LWOUT 16
18
19 enum custom_keycodes {
20   M_MUL = SAFE_RANGE,
21   M_MDL,
22   M_MDR,
23   M_MUR
24 };
25
26 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27 /* Qwerty
28  * ,-----------------------------------------.      .-----------------------------------------.
29  * | NAV  | ` ~  |   W  |   E  |   R  |   T  |      |  Y   |   U  |   I  |   O  |  -   |  =   |
30  * |------+------+------+------+------+------|      |------+------+------+------+------+------|
31  * | Tab  |   Q  |   S  |   D  |   F  |   G  |      |  H   |  J   |   K  |   L  |   P  |  \   |
32  * |------+------+------+------+------+------|------+------+------+------+------+------+------|
33  *|ctrl/esc|  A  |   X  |   C  |   V  |   B  |Ctrl /|   N  |   M  |   ,  |   .  |   ;  |  '   |
34  * |------+------+------+------+------+------+  //  +------+------+------+------+------+------|
35  * | Shift|   Z  | Del  | GUI  | Low  | Bspc |/Enter| Spc  | Hi   | GUI  | Alt  |  /   |Shift |
36  * `------------------------------------------------------------------------------------------'
37  *
38  */
39 [_QW] = KEYMAP(
40   TG(_NAV),         KC_GRV, KC_W,    KC_E,    KC_R,    KC_T,             KC_Y,    KC_U,    KC_I,    KC_O,    KC_MINS,  KC_EQL,
41   KC_TAB,           KC_Q,    KC_S,    KC_D,    KC_F,    KC_G,            KC_H,    KC_J,    KC_K,    KC_L,    KC_P,  KC_BSLS,
42   CTL_T(KC_ESC),    KC_A,    KC_X,    KC_C,    KC_V,    KC_B,    KC_RCTL,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SCLN,   KC_QUOT,
43   KC_LSFT, KC_Z,    KC_DEL, KC_LGUI, MO(_LW), KC_BSPC, KC_ENTER, KC_SPC,  MO(_HI), KC_RGUI, KC_RALT,    KC_SLSH,   KC_RSFT
44  ),
45
46 /* LOW  - numbers, missing or awkward programming keys
47  Doubled 1 key allows lazy reach with ring finger.
48  * ,-----------------------------------------.      .-----------------------------------------.
49  * | FKeys|   1  |   2  |  3   |   4  |   5  |      |  6   |  7   |   8  |   9  |   0  |Ctrl-alt-del|
50  * |------+------+------+------+------+------|      +------+------+------+------+------+------|
51  * | Tab  |   1  |  ]   |  (   |  )   |      |      |   *  |   (  |   )  |   [  |      |      |
52  * |------+------+------+------+------+------|------+------+------+------+------+------+------|
53  * | Caps |  [   |      |  {   |   }  |  `   |     /|   #  |   {  |   }  |      | ]    |      |
54  * |------+------+------+------+------+------+  //  +------+------+------+------+------+------|
55  * | Shift|      |      |      | Low  |      |/     |      |  Hi  |      |      |      |Shift |
56  * `------------------------------------------------------------------------------------------'
57  *
58  */
59
60 [_LW] = KEYMAP(
61   TG(_FKEYS),  KC_1,     KC_2,      KC_3,     KC_4,    KC_5,             KC_6,    KC_7,       KC_8,      KC_9,    KC_0,  LCTL(LALT(KC_DEL)) ,
62   KC_TRNS,  KC_1,     KC_RBRC,   KC_LPRN,  KC_RPRN, KC_NO,               KC_ASTR, KC_LPRN,    KC_RPRN,    KC_LBRC,    KC_NO, KC_NO,
63   KC_CAPS,   KC_LBRC,  KC_NO,     KC_LCBR,  KC_RCBR, KC_TILD,   KC_TRNS,  KC_HASH, KC_LCBR,    KC_RCBR,   KC_NO,    KC_RBRC,   KC_NO,
64   KC_TRNS,  KC_TRNS,  KC_TRNS,   KC_TRNS,  KC_TRNS, KC_TRNS,  KC_TRNS,  KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS,  KC_TRNS
65 ),
66
67 /* HI - Punctuation, shell and
68 url ://@.com  row on bottom,    && is opposite ||       ^$ are in regex order: ^.*$
69 Right hand nav keys work pretty well chorded with the Right hand Hi Key
70  * ,-----------------------------------------.      .-----------------------------------------.
71  * |FKEYS |   !  |   @  |   #  |   $  |   %  |      |  ^   |   &  |   *  |   (  |   )  |   +  |
72  * |------+------+------+------+------+------|      |------+------+------+------+------+------|
73  * |      |  !   |  &   |  "|" |   $  |   %  |      |  Vol+|  Mute|      |      |      |      |
74  * |------+------+------+------+------+------|------+------+------+------+------+------+------|
75  * | CAPS |  ^   |   :  |   .  |   *  |   -  |     /|  Vol-| Play | PgUp | Home | Up   | End  |
76  * |------+------+------+------+------+------+  //  +------+------+------+------+------+------|
77  * |      |   /  |      |      | Low  |      |/     |      |  Hi  | PgDn | Left| Down | Right |
78  * `------------------------------------------------------------------------------------------'
79  *
80  */
81
82 [_HI] = KEYMAP(
83  TG(_FKEYS),KC_EXLM,  KC_AT,   KC_HASH,  KC_DLR,   KC_PERC,           KC_CIRC,  KC_AMPR,    KC_ASTR,   KC_LPRN,  KC_RPRN,  KC_PLUS,
84  KC_TRNS, KC_EXLM,  KC_AMPR, KC_PIPE,  KC_DLR,   KC_PERC,             KC_VOLU, KC_MUTE,    KC_NO,     KC_NO,    KC_NO,    KC_NO,
85  KC_CAPS, KC_CIRC,  KC_COLN,  KC_DOT,  KC_ASTR,  KC_MINS,   KC_TRNS,  KC_VOLD, KC_PPLS,    KC_PGUP,   KC_HOME,  KC_UP,    KC_END,
86  KC_TRNS, KC_SLSH,  KC_TRNS,  KC_TRNS, TT(_LW),  KC_TRNS,   KC_TRNS,  KC_TRNS, KC_TRNS,    KC_PGDN,   KC_LEFT,  KC_DOWN,  KC_RIGHT
87 ),
88
89 /* NAV - mouse &  navigation
90 //gui left and right are line home/end, or fore & back in browser
91 // Mouse buttons are reversed for comfort - bigger stretch is to the right button.
92
93  * ,-----------------------------------------.      .-----------------------------------------.
94 * | NAV  |      |      | Up   |      |Gui-> |      | MwU  | MS_UL| MS_U |MS_UR |      |Ms Norm|
95 * |------+------+------+------+------+------|      |------+------+------+------+------+--------|
96 * |      |Gui<- | Left | Down |Right | C^E  |      | BTN3 | MS_L |MS Up | MS_R |      |Ms Fast |
97 * |------+------+------+------+------+------|------|------+------+------+------+------+--------|
98 * |      | C^A  | GUI X| GUI C| GUI_V|      |Enter/| MWD  | M_DL |MS Dwn|MS_DR | Up   |Ms Slow |
99 * |------+------+------+------+------+------+  //  +------+------+------+------+------+------|
100 * |      | GuiZ |      |      | Low  |      |/ButnR|ButnL |  Hi  |      | Left | Down | Right |
101 * `------------------------------------------------------------------------------------------'
102 */
103
104 [_NAV] = KEYMAP(
105   TG(_NAV), KC_NO,         KC_NO,    KC_UP,       KC_NO,     RGUI(KC_RIGHT),            KC_WH_U,  M_MUL,  KC_MS_U,   M_MUR,  KC_NO, KC_ACL2,
106   KC_TRNS, RGUI(KC_LEFT),  KC_LEFT,  KC_DOWN,     KC_RIGHT,  LCTL(KC_E),                KC_BTN3,  KC_MS_L,  KC_MS_U,   KC_MS_R,  KC_NO, KC_ACL1,
107   KC_TRNS, LCTL(KC_A),     LGUI(KC_X),RGUI(KC_C), RGUI(KC_V),KC_NO,         KC_ENTER,   KC_WH_D,  M_MDL,  KC_MS_D,  M_MDR,   KC_UP, KC_ACL0,
108   KC_TRNS, RGUI(KC_Z),     KC_TRNS,  KC_TRNS,     KC_TRNS,   KC_TRNS,       KC_BTN2,   KC_BTN1,  KC_TRNS,  KC_TRNS,   KC_LEFT,   KC_DOWN,   KC_RIGHT
109 ),
110
111 /* FKEYS - Funtion keys & mac stuff
112  * ,-----------------------------------------.      .-----------------------------------------.
113  * | FKEYS| F1   | F2   | F3   |  F4  | F5   |      | F6   | F7   | F8   | F9   | F10  | Ctrl |
114  * |------+------+------+------+------+------|      |------+------+------+------+------+------|
115  * |      |      |      |      |      |      |      |  F11 | F12  |  F13 | F14  |  F15 | Alt  |
116  * |------+------+------+------+------+------|------+------+------+------+------+------+------|
117  * |Qwerty|      |      |      |      |      |     /|      |      |      |      |      | Del  |
118  * |------+------+------+------+------+------+  //  +------+------+------+------+------+------|
119  * |    . |RGBTog|  .   |      | LO   | Bspc |/     |      | HI   |      |      |      |      |
120  * `------------------------------------------------------------------------------------------'
121  *
122  */
123
124 [_FKEYS] = KEYMAP(
125   TG(_FKEYS),KC_F1,    KC_F2,   KC_F3,      KC_F4,     KC_F5,               KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,    KC_RCTL,
126   KC_TRNS,   KC_NO,    KC_NO,   KC_NO,      KC_NO,     KC_NO,               KC_F11,   KC_F12,   KC_F13,    KC_F14,  KC_F15,    KC_LALT ,
127   TO(_QW),  KC_NO,     KC_NO,   KC_NO,      KC_NO,     KC_NO,    KC_TRNS,   KC_NO,    KC_NO,    KC_NO,      KC_NO,   KC_NO,    KC_DEL,
128   KC_TRNS, RGB_TOG,             KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS
129 ),
130
131
132 /* TRNS - skeleton for laters
133  * ,-----------------------------------------.      .-----------------------------------------.
134  * |   .  |   .  |   .  |   .  |   .  |   .  |      |  ^   |   &  |   *  |   (  |   )  |      |
135  * |------+------+------+------+------+------|      |------+------+------+------+------+------|
136  * |   .  |   .  |   .  |   .  |   .  |   .  |      |  6   |  7   |   8  |   9  |   0  |      |
137  * |------+------+------+------+------+------|------+------+------+------+------+------+------|
138  * |   .  |   .  |   .  |   .  |   .  |   .  |     /|      |      |      |   .  |   ;  |  "   |
139  * |------+------+------+------+------+------+  //  +------+------+------+------+------+------|
140  * |    . |   .  |  .   | GUI  |  LO  |   .  |/     | Spc  |  HI  | GUI  |  M0  |  /   |LSFT |
141  * `------------------------------------------------------------------------------------------'
142  *
143  */
144
145 [_TRNS] = {
146   {KC_TRNS,  KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_NO,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS},
147   {KC_TRNS,  KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_NO,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS},
148   {KC_TRNS,  KC_TRNS,   KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS},
149   {KC_TRNS, KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,   KC_TRNS}
150  }
151
152
153 };
154
155 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
156       switch (keycode) {
157    // from  algernon's ErgoDox EZ layout,
158        case M_MUL:
159         if (record->event.pressed) {
160           mousekey_on(KC_MS_UP);
161           mousekey_on(KC_MS_LEFT);
162         } else {
163           mousekey_off(KC_MS_UP);
164           mousekey_off(KC_MS_LEFT);
165         }
166         mousekey_send();
167         return false;
168
169       case M_MUR:
170         if (record->event.pressed) {
171           mousekey_on(KC_MS_UP);
172           mousekey_on(KC_MS_RIGHT);
173         } else {
174           mousekey_off(KC_MS_UP);
175           mousekey_off(KC_MS_RIGHT);
176         }
177         mousekey_send();
178         return false;
179
180       case M_MDL:
181         if (record->event.pressed) {
182           mousekey_on(KC_MS_DOWN);
183           mousekey_on(KC_MS_LEFT);
184         } else {
185           mousekey_off(KC_MS_DOWN);
186           mousekey_off(KC_MS_LEFT);
187         }
188         mousekey_send();
189         return false;
190
191       case M_MDR:
192         if (record->event.pressed) {
193           mousekey_on(KC_MS_DOWN);
194           mousekey_on(KC_MS_RIGHT);
195         } else {
196           mousekey_off(KC_MS_DOWN);
197           mousekey_off(KC_MS_RIGHT);
198         }
199         mousekey_send();
200         return false;
201       default:
202         return true;
203       }
204     return true;
205 };
206
207 void LayerLEDSet(uint8_t layr) {
208
209     switch (layr) {
210         case _QW:
211             rgblight_setrgb(0,20, 0); //  dim green
212         break;
213         case _LW:
214             // deep purple
215             rgblight_setrgb(20,0,35);
216             break;
217         case _HI:
218             // light blue
219            rgblight_setrgb(0,20,20);
220             break;
221         case _NAV:
222             // Yellowy orange
223             rgblight_setrgb(25,20,0); // brighter
224             break;
225         case _FKEYS:
226          // RED
227            rgblight_setrgb(20,0,0); // brighter
228             break;
229         default:
230             rgblight_setrgb(20,2,20);//error
231             break;
232     }
233
234  return;
235
236 }
237
238 void matrix_init_user(void) {
239 }
240
241 // Bleah globals need to be initialized.
242 uint8_t old_layer=_QW;
243
244 void matrix_scan_user(void) {
245          uint8_t layer = biton32(layer_state);
246          if (old_layer != layer) {
247            LayerLEDSet(layer);
248            old_layer=layer;
249            }
250 }
251
252 void led_set_user(uint8_t usb_led) {
253
254 }