]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/handwired/lovelive9/keymaps/default/keymap.c
[Keyboard] new keyboard lovelive9 (#5266)
[qmk_firmware.git] / keyboards / handwired / lovelive9 / keymaps / default / keymap.c
1 #include QMK_KEYBOARD_H
2
3 //#include "v1.h"
4
5 //Following line allows macro to read current RGB settings
6
7 rgblight_config_t RGB_current_config;
8
9 #define KC_KANJI KC_GRV
10
11
12 enum Layer
13 {
14   _QWERTY,
15   _DIA,
16   _YOU,
17   _CHIKA,
18   _ZURA,
19   _RUBY,
20   _YOHANE,
21   _RIKO,
22   _MARI,
23   _KANAN,
24   _RUBY_SUB1,
25   _RUBY_SUB2,
26   _RUBY_SUB3,
27   _SCHOOL_IDOL_FESTIVAL
28 };
29
30 #define SEND_DIA 100
31 #define SEND_YOU 101
32 #define SEND_CHIKA 102
33 #define SEND_ZURA 103
34 #define SEND_RUBY 104
35 #define SEND_YOHANE 105
36 #define SEND_RIKO 106
37 #define SEND_MARI 107
38 #define SEND_KANAN 108
39
40
41 enum custom_keycodes {
42   QWERTY = SAFE_RANGE,
43   DIA,
44   YOU,
45   CHIKA,
46   ZURA,
47   RUBY,
48   RUBY_SUB1,
49   RUBY_SUB2,
50   RUBY_SUB3,
51   YOHANE,
52   RIKO,
53   MARI,
54   KANAN,
55   TO_SCHOOL_IDOL_FESTIVAL,
56   RETURN_SCHOOL_IDOL_FESTIVAL
57 };
58
59
60 int long_tap_timer;
61
62 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63   [_QWERTY] = LAYOUT(
64     DIA, YOU, CHIKA, ZURA, RUBY, YOHANE, RIKO, MARI, KANAN
65   ),
66   [_DIA] = LAYOUT(
67     DIA, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_LSFT
68   ),
69
70   [_YOU] = LAYOUT(
71     KC_H, YOU, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_LSFT
72   ),
73
74   [_CHIKA] = LAYOUT(
75     KC_O, KC_P, CHIKA, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_LSFT
76   ),
77
78   [_ZURA] = LAYOUT(
79     KC_V, KC_W, KC_X, ZURA, KC_Y, KC_Z, KC_M, KC_N, KC_LSFT
80   ),
81
82   //推しをたくさん押せるようにルビーちゃんには複数のレイヤー設定
83   [_RUBY] = LAYOUT(
84     KC_CIRC, KC_LPRN, KC_QUOT, RUBY_SUB1, RUBY, RUBY_SUB2, KC_LCBR, KC_EXLM, KC_LSFT
85   ),
86   [_RUBY_SUB1] = LAYOUT(
87     KC_RCBR, KC_AT, KC_PIPE, RUBY_SUB1, RUBY, RUBY_SUB2, KC_HASH, KC_EQL, KC_LSFT
88   ),
89   [_RUBY_SUB2] = LAYOUT(
90     KC_TILD, KC_DLR, KC_LBRC, RUBY_SUB1, RUBY, RUBY_SUB2, KC_PERC, KC_RBRC, KC_LSFT
91   ),
92   [_RUBY_SUB3] = LAYOUT(
93     TO_SCHOOL_IDOL_FESTIVAL, KC_DLR, KC_LBRC, RUBY_SUB1, RUBY, RUBY_SUB2, KC_PERC, KC_RBRC, RETURN_SCHOOL_IDOL_FESTIVAL
94   ),
95
96   [_YOHANE] = LAYOUT(
97     KC_0, KC_1, KC_2, KC_3, KC_4, YOHANE, KC_5, KC_6, KC_LSFT
98   ),
99
100   [_RIKO] = LAYOUT(
101     KC_7, KC_8, KC_9, KC_PLUS, KC_MINS, KC_ASTR, RIKO, KC_SLSH, KC_LSFT
102   ),
103
104   [_MARI] = LAYOUT(
105     KC_TAB, KC_DEL, KC_COMM, KC_SPC, KC_ENT, KC_BSPC, KC_DOT, MARI, KC_LSFT
106   ),
107
108   [_KANAN] = LAYOUT(
109     KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, KC_BSPC, KC_AMPR, KC_KANJI, KANAN
110   ),
111   [_SCHOOL_IDOL_FESTIVAL] = LAYOUT(
112     KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9
113   ),
114 };
115
116 void check_tap_and_send_key(int MEMBER) {
117   if (long_tap_timer < 500) {
118     switch (MEMBER) {
119       case SEND_DIA:
120         SEND_STRING("KUROSAWA DIA");
121       break;
122       case SEND_YOU:
123         SEND_STRING("WATANABE YOU");
124       break;
125       case SEND_CHIKA:
126         SEND_STRING("TAKAMI CHIKA");
127       break;
128       case SEND_ZURA:
129         SEND_STRING("KUNIKIDA HANAMARU");
130       break;
131       case SEND_RUBY:
132         SEND_STRING("KUROSAWA RUBY");
133       break;
134       case SEND_YOHANE:
135         SEND_STRING("TSUSHIMA YOSHIKO");
136       break;
137       case SEND_RIKO:
138         SEND_STRING("SAKURAUCHI RIKO");
139       break;
140       case SEND_MARI:
141         SEND_STRING("OHARA MARI");
142       break;
143       case SEND_KANAN:
144         SEND_STRING("MATSUURA KANAN");
145       break;
146       }
147   }
148   long_tap_timer = 0;
149 }
150
151 int aqours_color_h[] = { 26, 340, 150,   0, 199, 220, 53, 265, 322};
152 int aqours_color_s[] = {255, 165, 255, 255, 255, 350, 255, 255, 255};
153 int aqours_color_v[] = {255, 255, 255, 255, 255, 255, 200, 255, 255};
154
155 void LED_default_set(void) {
156
157   sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (LED_TYPE *)&led[0]);
158   sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (LED_TYPE *)&led[1]);
159   sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (LED_TYPE *)&led[2]);
160   sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (LED_TYPE *)&led[3]);
161   sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (LED_TYPE *)&led[4]);
162   sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (LED_TYPE *)&led[5]);
163   sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (LED_TYPE *)&led[6]);
164   sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (LED_TYPE *)&led[7]);
165   sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (LED_TYPE *)&led[8]);
166
167   rgblight_set();
168
169 }
170
171
172 void LED_layer_set(int aqours_index) {
173   for (int c = 0; c < 9; c++) {
174     sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (LED_TYPE *)&led[c]);
175   }
176   rgblight_set();
177 }
178
179
180 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
181
182   switch (keycode) {
183
184     case DIA:
185       if (record->event.pressed) {
186         long_tap_timer = 1;
187         layer_on(_DIA);
188         LED_layer_set(3);
189       } else {
190         check_tap_and_send_key(SEND_DIA);
191         layer_off(_DIA);
192         LED_default_set();
193       }
194       break;
195
196     case YOU:
197       if (record->event.pressed) {
198         long_tap_timer = 1;
199         layer_on(_YOU);
200         LED_layer_set(4);
201       } else {
202         check_tap_and_send_key(SEND_YOU);
203         layer_off(_YOU);
204         LED_default_set();
205       }
206       break;
207
208     case CHIKA:
209       if (record->event.pressed) {
210         long_tap_timer = 1;
211         layer_on(_CHIKA);
212         LED_layer_set(0);
213       } else {
214         check_tap_and_send_key(SEND_CHIKA);
215         layer_off(_CHIKA);
216         LED_default_set();
217       }
218       break;
219
220     case ZURA:
221       if (record->event.pressed) {
222         long_tap_timer = 1;
223         layer_on(_ZURA);
224         LED_layer_set(6);
225       } else {
226         check_tap_and_send_key(SEND_ZURA);
227         layer_off(_ZURA);
228         LED_default_set();
229       }
230       break;
231
232     case RUBY:
233       if (record->event.pressed) {
234         long_tap_timer = 1;
235         layer_on(_RUBY);
236         LED_layer_set(8);
237       } else {
238         check_tap_and_send_key(SEND_RUBY);
239         layer_off(_RUBY);
240         LED_default_set();
241       }
242       break;
243     case RUBY_SUB1:
244       if (record->event.pressed) {
245         layer_on(_RUBY_SUB1);
246         if (IS_LAYER_ON(_RUBY_SUB1) && IS_LAYER_ON(_RUBY_SUB2)) {
247           layer_on(_RUBY_SUB3);
248         } else {
249           layer_off(_RUBY_SUB3);
250         }
251       } else {
252         layer_off(_RUBY_SUB1);
253       }
254       break;
255     case RUBY_SUB2:
256       if (record->event.pressed) {
257         layer_on(_RUBY_SUB2);
258         if (IS_LAYER_ON(_RUBY_SUB1) && IS_LAYER_ON(_RUBY_SUB2)) {
259           layer_on(_RUBY_SUB3);
260         } else {
261           layer_off(_RUBY_SUB3);
262         }
263       } else {
264         layer_off(_RUBY_SUB2);
265       }
266       break;
267
268     case YOHANE:
269       if (record->event.pressed) {
270         long_tap_timer = 1;
271         layer_on(_YOHANE);
272         LED_layer_set(5);
273       } else {
274         check_tap_and_send_key(SEND_YOHANE);
275         layer_off(_YOHANE);
276         LED_default_set();
277       }
278       break;
279
280     case RIKO:
281       if (record->event.pressed) {
282         long_tap_timer = 1;
283         layer_on(_RIKO);
284         LED_layer_set(1);
285       } else {
286         check_tap_and_send_key(SEND_RIKO);
287         layer_off(_RIKO);
288         LED_default_set();
289       }
290       break;
291
292     case MARI:
293       if (record->event.pressed) {
294         long_tap_timer = 1;
295         layer_on(_MARI);
296         LED_layer_set(7);
297       } else {
298         check_tap_and_send_key(SEND_MARI);
299         layer_off(_MARI);
300         LED_default_set();
301       }
302       break;
303
304     case KANAN:
305       if (record->event.pressed) {
306         long_tap_timer = 1;
307         layer_on(_KANAN);
308         LED_layer_set(2);
309       } else {
310         check_tap_and_send_key(SEND_KANAN);
311         layer_off(_KANAN);
312         LED_default_set();
313       }
314       break;
315
316     case TO_SCHOOL_IDOL_FESTIVAL:
317       if (record->event.pressed) {
318         LED_default_set();
319         layer_on(_SCHOOL_IDOL_FESTIVAL);
320       }
321       break;
322     case RETURN_SCHOOL_IDOL_FESTIVAL:
323       if (record->event.pressed) {
324         layer_off(_SCHOOL_IDOL_FESTIVAL);
325       }
326       break;
327   }
328
329   return true;
330 }
331
332
333 void matrix_scan_user(void) {
334
335   if (long_tap_timer > 0) {
336     long_tap_timer++;
337   }
338 }