]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboard/kc60/keymaps/stanleylai/keymap.c
adds backlight levels to the satan keyboard (#431)
[qmk_firmware.git] / keyboard / kc60 / keymaps / stanleylai / keymap.c
1 // This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2 // this is the style you want to emulate.
3
4 #include "kc60.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 #define _BL   0
11 #define _FL   1
12 #define _RGBL 2
13
14 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15
16 // See base_layer.png and rgb_layer.png for layout reference
17
18 // Base Default Layer
19 // Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions.
20 [_BL] = KEYMAP(
21   F(0),             KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,  KC_EQL,   KC_BSPC, \
22   KC_TAB,           KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC,  KC_RBRC,  KC_BSLS, \
23   LT(_FL, KC_CAPS), KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,  KC_NO,    KC_ENT,  \
24   KC_LSFT, KC_NO,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,  MO(_FL),  KC_UP,   \
25   KC_LCTL, KC_LALT, KC_LGUI,                KC_SPC,                                 KC_RGUI,KC_LEFT,  KC_DOWN,  KC_RGHT),
26
27 // Function layer
28 [_FL] = KEYMAP(
29   KC_GRV, KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11,   KC_F12,   KC_DEL, \
30   KC_NO,  KC_MPRV,KC_UP,  KC_MNXT,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_PSCR,KC_SLCK,  KC_PAUS,  KC_INS, \
31   KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO,  \
32   KC_TRNS,KC_NO,  KC_MUTE,KC_VOLD,KC_VOLU,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_TRNS,  LT(_RGBL, KC_PGUP),\
33   KC_TRNS,KC_TRNS,KC_TRNS,                KC_MPLY,                                KC_TRNS,KC_HOME,  KC_PGDN,  KC_END),
34
35 // RGB Layer
36 [_RGBL] = KEYMAP(
37   #ifdef RGBLIGHT_ENABLE
38   RESET,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
39   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
40   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO,  \
41   KC_TRNS,KC_NO,  F(1),   F(2),   F(3),   F(4),   F(5),   F(6),   F(7),   F(8),   BL_STEP,BL_TOGG,  KC_TRNS,  KC_TRNS,\
42   KC_TRNS,KC_TRNS,KC_TRNS,                KC_TRNS,                                KC_TRNS,KC_TRNS,  KC_TRNS,  KC_TRNS),
43   #else
44   RESET,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
45   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
46   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO,  \
47   KC_TRNS,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  BL_STEP,BL_TOGG,  KC_TRNS,  KC_TRNS,\
48   KC_TRNS,KC_TRNS,KC_TRNS,                KC_TRNS,                                KC_TRNS,KC_TRNS,  KC_TRNS,  KC_TRNS),
49   #endif
50 };
51
52
53 enum function_id {
54     SHIFT_ESC,
55     #ifdef RGBLIGHT_ENABLE
56     RGBLED_TOGGLE,
57     RGBLED_STEP_MODE,
58     RGBLED_INCREASE_HUE,
59     RGBLED_DECREASE_HUE,
60     RGBLED_INCREASE_SAT,
61     RGBLED_DECREASE_SAT,
62     RGBLED_INCREASE_VAL,
63     RGBLED_DECREASE_VAL,
64     #endif
65 };
66
67 const uint16_t PROGMEM fn_actions[] = {
68   [0]  = ACTION_FUNCTION(SHIFT_ESC),
69   #ifdef RGBLIGHT_ENABLE
70   [1]  = ACTION_FUNCTION(RGBLED_TOGGLE),
71   [2]  = ACTION_FUNCTION(RGBLED_STEP_MODE),
72   [3]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
73   [4]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
74   [5]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
75   [6]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
76   [7]  = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
77   [8]  = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
78   #endif
79 };
80
81 #define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
82 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
83   static uint8_t shift_esc_shift_mask;
84   switch (id) {
85     case SHIFT_ESC:
86       shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
87       if (record->event.pressed) {
88         if (shift_esc_shift_mask) {
89           add_key(KC_GRV);
90           send_keyboard_report();
91         } else {
92           add_key(KC_ESC);
93           send_keyboard_report();
94         }
95       } else {
96         if (shift_esc_shift_mask) {
97           del_key(KC_GRV);
98           send_keyboard_report();
99         } else {
100           del_key(KC_ESC);
101           send_keyboard_report();
102         }
103       }
104       break;
105
106     #ifdef RGBLIGHT_ENABLE
107
108     case RGBLED_TOGGLE:
109       //led operations
110       if (record->event.pressed) {
111         rgblight_toggle();
112       }
113       break;
114     case RGBLED_INCREASE_HUE:
115       if (record->event.pressed) {
116         rgblight_increase_hue();
117       }
118       break;
119     case RGBLED_DECREASE_HUE:
120       if (record->event.pressed) {
121         rgblight_decrease_hue();
122       }
123       break;
124     case RGBLED_INCREASE_SAT:
125       if (record->event.pressed) {
126         rgblight_increase_sat();
127       }
128       break;
129     case RGBLED_DECREASE_SAT:
130       if (record->event.pressed) {
131         rgblight_decrease_sat();
132       }
133       break;
134       case RGBLED_INCREASE_VAL:
135         if (record->event.pressed) {
136           rgblight_increase_val();
137         }
138         break;
139       case RGBLED_DECREASE_VAL:
140         if (record->event.pressed) {
141           rgblight_decrease_val();
142         }
143         break;
144       case RGBLED_STEP_MODE:
145         if (record->event.pressed) {
146           rgblight_step();
147         }
148         break;
149       #endif
150   }
151 }