aboutsummaryrefslogtreecommitdiff
path: root/keyboards/preonic
diff options
context:
space:
mode:
authoryhaliaw <43424755+yhaliaw@users.noreply.github.com>2021-03-15 04:19:05 +0800
committerGitHub <noreply@github.com>2021-03-14 13:19:05 -0700
commitb44bffe954dca574bf6ef16b8c8d985e9547d3e1 (patch)
tree1dab8b29b3ff07bcad63ad59bfb6f78c25c21657 /keyboards/preonic
parent739925c902488e39cced8f8ef03c77ef6cfee751 (diff)
downloadqmk_firmware-b44bffe954dca574bf6ef16b8c8d985e9547d3e1.tar.gz
qmk_firmware-b44bffe954dca574bf6ef16b8c8d985e9547d3e1.zip
[Keymap] Add yhaliaw keymap for Planck/Rev6.1. (#11318)
Diffstat (limited to 'keyboards/preonic')
-rw-r--r--keyboards/preonic/keymaps/yhaliaw/config.h12
-rw-r--r--keyboards/preonic/keymaps/yhaliaw/keymap.c231
-rw-r--r--keyboards/preonic/keymaps/yhaliaw/rules.mk4
3 files changed, 247 insertions, 0 deletions
diff --git a/keyboards/preonic/keymaps/yhaliaw/config.h b/keyboards/preonic/keymaps/yhaliaw/config.h
new file mode 100644
index 000000000..84ec6e1af
--- /dev/null
+++ b/keyboards/preonic/keymaps/yhaliaw/config.h
@@ -0,0 +1,12 @@
1
2#pragma once
3
4#ifdef AUDIO_ENABLE
5#define STARTUP_SONG SONG(PLANCK_SOUND)
6#endif
7
8#define RGBLIGHT_LAYERS
9#define RGBLIGHT_LED_MAP {8, 2, 3, 7, 6, 5, 4, 0, 1}
10
11#define LEADER_TIMEOUT 200
12#define LEADER_PER_KEY_TIMING
diff --git a/keyboards/preonic/keymaps/yhaliaw/keymap.c b/keyboards/preonic/keymaps/yhaliaw/keymap.c
new file mode 100644
index 000000000..252806189
--- /dev/null
+++ b/keyboards/preonic/keymaps/yhaliaw/keymap.c
@@ -0,0 +1,231 @@
1/* Copyright 2021 Andrew Liaw
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18enum preonic_layers {
19 _BASE,
20 _LOWER,
21 _RAISE,
22 _ADJUST,
23};
24
25enum preonic_keycodes {
26 L_RESET = SAFE_RANGE,
27};
28
29#ifdef AUDIO_ENABLE
30float planck_sound[][2] = SONG(PLANCK_SOUND);
31#endif
32
33#define LOWER MO(_LOWER)
34#define RAISE MO(_RAISE)
35
36const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37 /* Base
38 * ,-----------------------------------------------------------------------------------.
39 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
40 * |------+------+------+------+------+------+------+------+------+------+------+------|
41 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
42 * |------+------+------+------+------+-------------+------+------+------+------+------|
43 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
44 * |------+------+------+------+------+------|------+------+------+------+------+------|
45 * | Shift| Z | X | C | V | B | N | M | , | . | / | Shift|
46 * |------+------+------+------+------+------+------+------+------+------+------+------|
47 * |Leader| Ctrl | Alt | GUI | Lower| Enter| Space| Raise| GUI | Alt | Ctrl | Del |
48 * `-----------------------------------------------------------------------------------'
49 */
50 [_BASE] = LAYOUT_preonic_grid(
51 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
52 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
53 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
54 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
55 KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_ENT, KC_SPC, RAISE, KC_RGUI, KC_RALT, KC_RCTL, KC_DEL
56 ),
57
58 /* Lower
59 * ,-----------------------------------------------------------------------------------.
60 * | | | | | | | | | | | | |
61 * |------+------+------+------+------+-------------+------+------+------+------+------|
62 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
63 * |------+------+------+------+------+-------------+------+------+------+------+------|
64 * | Caps | | | | | | Left | Down | Up | Right| | \ |
65 * |------+------+------+------+------+------|------+------+------+------+------+------|
66 * | | | | | | | | Home | End | Pg Up| Pg Dn| |
67 * |------+------+------+------+------+------+------+------+------+------+------+------|
68 * | | | | | | | | | | | | |
69 * `-----------------------------------------------------------------------------------'
70 */
71 [_LOWER] = LAYOUT_preonic_grid(
72 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
73 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
74 KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_BSLS,
75 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, KC_PGUP, KC_PGDN, _______,
76 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
77 ),
78
79 /* Raise
80 * ,-----------------------------------------------------------------------------------.
81 * | | | | | | | | | | | | |
82 * |------+------+------+------+------+------+------+------+------+------+------+------|
83 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
84 * |------+------+------+------+------+-------------+------+------+------+------+------|
85 * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | |
86 * |------+------+------+------+------+------|------+------+------+------+------+------|
87 * | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } | |
88 * |------+------+------+------+------+------+------+------+------+------+------+------|
89 * | | | | | | | | Next | Vol- | Vol+ | Play |
90 * `-----------------------------------------------------------------------------------'
91 */
92 [_RAISE] = LAYOUT_preonic_grid(
93 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
94 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
95 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE,
96 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
97 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
98 ),
99
100 /* Adjust (Lower + Raise)
101 * ,-----------------------------------------------------------------------------------.
102 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
103 * |------+------+------+------+------+------+------+------+------+------+------+------|
104 * | | Reset| Debug| Clear| RGB | HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| |
105 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | | | |Aud on|Audoff| Swap | Norm | | | | | |
107 * |------+------+------+------+------+------+------+------+------+------+------+------|
108 * | | | |Mus on|Musoff| NKRO | 6KRO | | | | | |
109 * |------+------+------+------+------+------+------+------+------+------+------+------|
110 * | | | | | | | | | | | | |
111 * `-----------------------------------------------------------------------------------'
112 */
113 [_ADJUST] = LAYOUT_preonic_grid(
114 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
115 _______, L_RESET, DEBUG, EEP_RST, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______,
116 _______, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, AG_SWAP, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
117 _______, XXXXXXX, XXXXXXX, MU_ON, MU_OFF, NK_ON, NK_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
118 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
119 )
120};
121
122const rgblight_segment_t PROGMEM base_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, 0, 0, 0});
123
124const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_RED});
125
126const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_GREEN});
127
128const rgblight_segment_t PROGMEM adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 8, HSV_BLUE});
129
130const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({4, 5, HSV_WHITE});
131
132// Later layers take precedence.
133const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
134 base_layer,
135 lower_layer,
136 raise_layer,
137 adjust_layer,
138 capslock_layer
139);
140
141bool audio_disable = false;
142
143void keyboard_pre_init_user(void) {
144 // If the audio is off during hardware init,
145 // it causes problem when the audio is turn on later.
146 // The workaround is to always set the audio on during hardware init,
147 // then toggle audio back to the setting.
148#ifdef AUDIO_ENABLE
149 if (!is_audio_on()) {
150 audio_disable = true;
151 audio_on();
152 }
153#endif
154}
155
156void matrix_init_user(void) {
157 // To fix a audio related problem. See comments in keyboard_pre_init_user().
158#ifdef AUDIO_ENABLE
159 if (audio_disable) {
160 audio_off();
161 }
162#endif
163}
164
165void keyboard_post_init_user(void) {
166 rgblight_layers = rgb_layers;
167 rgblight_set_layer_state(0, true);
168}
169
170bool leader_found;
171LEADER_EXTERNS();
172
173void matrix_scan_user(void) {
174 LEADER_DICTIONARY() {
175 leading = false;
176 leader_found = false;
177 SEQ_ONE_KEY(L_RESET) {
178 leader_found = true;
179 reset_keyboard();
180 }
181 else
182 SEQ_ONE_KEY(KC_DEL) {
183 leader_found = true;
184 layer_clear();
185 }
186 else
187 SEQ_ONE_KEY(LOWER) {
188 leader_found = true;
189 layer_on(_LOWER);
190 }
191 else
192 SEQ_ONE_KEY(RAISE) {
193 leader_found = true;
194 layer_on(_RAISE);
195 }
196 leader_end();
197 }
198}
199
200void leader_end(void) {
201 // Plays sound on if leader sequence found.
202 if (leader_found) {
203#ifdef AUDIO_ENABLE
204 PLAY_SONG(planck_sound);
205#endif
206 }
207}
208
209bool led_update_user(led_t led_state) {
210 // Turn on RBG for capslock.
211 rgblight_set_layer_state(4, led_state.caps_lock);
212 return true;
213}
214
215layer_state_t layer_state_set_user(layer_state_t state) {
216 // Set RBG layer according to active keymap layer.
217 rgblight_set_layer_state(1, layer_state_cmp(state, 1));
218 rgblight_set_layer_state(2, layer_state_cmp(state, 2));
219 rgblight_set_layer_state(3, layer_state_cmp(state, 1) && layer_state_cmp(state, 2));
220 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
221}
222
223bool music_mask_user(uint16_t keycode) {
224 switch (keycode) {
225 case RAISE:
226 case LOWER:
227 return false;
228 default:
229 return true;
230 }
231}
diff --git a/keyboards/preonic/keymaps/yhaliaw/rules.mk b/keyboards/preonic/keymaps/yhaliaw/rules.mk
new file mode 100644
index 000000000..8762502b5
--- /dev/null
+++ b/keyboards/preonic/keymaps/yhaliaw/rules.mk
@@ -0,0 +1,4 @@
1LEADER_ENABLE = yes
2
3ENCODER_ENABLE = no
4DIP_SWITCH_ENABLE = no