]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c
[Keyboard] Add keyboard Naked48 (#6330)
[qmk_firmware.git] / keyboards / naked48 / keymaps / salicylic_with_setta21 / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "keymap_jp.h"
3
4 extern keymap_config_t keymap_config;
5
6 #ifdef RGBLIGHT_ENABLE
7 //Following line allows macro to read current RGB settings
8 extern rgblight_config_t rgblight_config;
9 #endif
10
11 extern uint8_t is_master;
12
13 // Each layer gets a name for readability, which is then used in the keymap matrix below.
14 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
15 // Layer names don't all need to be of the same length, obviously, and you can also skip them
16 // entirely and just use numbers.
17 enum layer_number {
18   _QWERTY = 0,
19   _LOWER,
20   _RAISE,
21   _ADJUST,
22 };
23
24 enum custom_keycodes {
25   LOWER = SAFE_RANGE,
26   RAISE,
27   ADJUST,
28   KANJI,
29   RGBRST,
30   SEND_SUM,
31   SEND_AVERAGE,
32   SEND_COUNTIF,
33   SEND_MAX,
34   SEND_MIN
35 };
36
37 // Fillers to make layering more clear
38 #define _____ KC_TRNS
39 #define XXXXX KC_NO
40
41 #define KC_CT11 LCTL_T(KC_F11)
42 #define KC_SF12 SFT_T(KC_F12)
43 #define KC_LOEN LT(_LOWER, KC_ENT)
44 #define KC_RASP LT(_RAISE, KC_SPC)
45
46 #define KC_SSUM  SEND_SUM
47 #define KC_SAVE  SEND_AVERAGE
48 #define KC_SCOU  SEND_COUNTIF
49 #define KC_SMAX  SEND_MAX
50 #define KC_SMIN  SEND_MIN
51
52 #define KC_RADO LT(_RAISE, KC_PDOT)
53 #define KC_LOP0 LT(_LOWER, KC_P0)
54 #define KC_ADNL LT(_ADJUST, KC_NLCK)
55
56 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
57   [_QWERTY] = LAYOUT_with_setta21(
58   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
59        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, JP_LBRC,       KC_LOP0,  KC_P1,  KC_P4,  KC_P7,KC_ADNL, KC_ESC,
60   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
61      KC_LCTRL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, JP_MINS, JP_RBRC,                 KC_P2,  KC_P5,  KC_P8,KC_PSLS,  KC_F2,
62   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
63       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS,       KC_RADO,  KC_P3,  KC_P6,  KC_P9,KC_PAST, JP_EQL,
64   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
65                KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC,  KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN,   KC_UP,                        KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL
66           //`------------------------------------------------------------------------------------------------------------'               |-----------------------------------------------|
67   ),
68
69   [_LOWER] = LAYOUT_with_setta21(
70   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
71        KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD,                      KC_6,    KC_7,    KC_8,    KC_9, JP_ASTR, JP_SLSH,         LOWER,  XXXXX,KC_LEFT,  XXXXX,  XXXXX, KC_ESC,
72   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
73       JP_QUOT, JP_HASH,  JP_DQT, JP_LPRN, JP_RPRN,   JP_AT,                     XXXXX,    KC_4,    KC_5,    KC_6, JP_MINS,  JP_EQL,               KC_DOWN,KC_DOWN,  KC_UP,KC_PSLS,  KC_F2,
74   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
75       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT,         RAISE,  XXXXX,KC_RIGHT, XXXXX,KC_PAST, JP_EQL,
76   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
77                  _____,   _____,   _____, KC_ZKHK,   LOWER,   _____,   _____,   RAISE,    KC_0,  JP_DOT,   _____,   _____,                        KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL
78           //`------------------------------------------------------------------------------------------------------------'               |-----------------------------------------------|
79   ),
80
81   [_RAISE] = LAYOUT_with_setta21(
82   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
83        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,   XXXXX,   KC_UP,   XXXXX, KC_PGUP,  KC_DEL,         LOWER, KC_F11,  KC_F4,  KC_F7,KC_SMIN, KC_ESC,
84   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
85       KC_CT11,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     XXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT,                KC_F12,  KC_F5,  KC_F8,KC_SMAX,  KC_F2,
86   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
87       KC_SF12,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                     XXXXX,   XXXXX,   XXXXX,   XXXXX, KC_PGDN,   XXXXX,         RAISE,  KC_F3,  KC_F6,  KC_F9,KC_SCOU, JP_EQL,
88   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
89                  _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,                        JP_RPRN,        KC_SSUM,KC_SAVE, KC_DEL
90           //`------------------------------------------------------------------------------------------------------------'               |-----------------------------------------------|
91   ),
92
93   [_ADJUST] = LAYOUT_with_setta21( /* Base */
94   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
95         _____,   _____,   _____,   _____,   _____,   _____,                     _____,    KC_7,    KC_8,    KC_9,    KC_0,   _____,         LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG,
96   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
97         _____,   _____,   _____,   _____,   _____,   _____,                   RGB_TOG, RGB_MOD,   XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,        RGB_VAI,RGB_HUI,RGB_SAI,  XXXXX,  _____,
98   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
99         _____,   _____,   _____,   _____,   _____,   _____,                   RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,         RAISE,  XXXXX,  XXXXX,  XXXXX,  XXXXX,  _____,
100   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
101                  _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____,                        RGB_MOD,          _____,  _____,  _____
102           //`------------------------------------------------------------------------------------------------------------'               |-----------------------------------------------|
103   )
104 };
105
106 static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
107
108   pressed ? layer_on(layer1) : layer_off(layer1);
109   IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
110 }
111
112 int RGB_current_mode;
113 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
114
115   bool result = false;
116   switch (keycode) {
117     case LOWER:
118       update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
119       break;
120     case RAISE:
121       update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
122         break;
123     case KANJI:
124       if (record->event.pressed) {
125         if (keymap_config.swap_lalt_lgui == false) {
126           register_code(KC_LANG2);
127         } else {
128           SEND_STRING(SS_LALT("`"));
129         }
130       } else {
131         unregister_code(KC_LANG2);
132       }
133       break;
134     case SEND_SUM:
135       if (record->event.pressed) {
136         SEND_STRING("_SUM*");
137       }
138       break;
139     case SEND_AVERAGE:
140       if (record->event.pressed) {
141         SEND_STRING("_AVERAGE*");
142       }
143       break;
144     case SEND_COUNTIF:
145       if (record->event.pressed) {
146         SEND_STRING("_COUNTIF*");
147       }
148       break;
149     case SEND_MAX:
150       if (record->event.pressed) {
151         SEND_STRING("_MAX*");
152       }
153       break;
154     case SEND_MIN:
155       if (record->event.pressed) {
156         SEND_STRING("_MIN*");
157       }
158       break;
159     #ifdef RGBLIGHT_ENABLE
160       case RGB_MOD:
161           if (record->event.pressed) {
162             rgblight_mode(RGB_current_mode);
163             rgblight_step();
164             RGB_current_mode = rgblight_config.mode;
165           }
166         break;
167       case RGBRST:
168           if (record->event.pressed) {
169             eeconfig_update_rgblight_default();
170             rgblight_enable();
171             RGB_current_mode = rgblight_config.mode;
172           }
173         break;
174     #endif
175     default:
176       result = true;
177       break;
178   }
179
180   return result;
181 }
182
183 void matrix_init_user(void) {
184   #ifdef RGBLIGHT_ENABLE
185     RGB_current_mode = rgblight_config.mode;
186   #endif
187 }