aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/preonic/config.h3
-rw-r--r--keyboards/preonic/keymaps/via/config.h33
-rw-r--r--keyboards/preonic/keymaps/via/keymap.c197
-rw-r--r--keyboards/preonic/keymaps/via/readme.md1
-rw-r--r--keyboards/preonic/keymaps/via/rules.mk4
-rw-r--r--keyboards/preonic/rev1/config.h1
-rw-r--r--keyboards/preonic/rev2/config.h1
-rw-r--r--keyboards/preonic/rev3/config.h1
8 files changed, 239 insertions, 2 deletions
diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h
index f08be58c6..dfd0a8439 100644
--- a/keyboards/preonic/config.h
+++ b/keyboards/preonic/config.h
@@ -21,8 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21#include "config_common.h" 21#include "config_common.h"
22 22
23/* USB Device descriptor parameter */ 23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED 24#define VENDOR_ID 0x03A8
25#define PRODUCT_ID 0x6061
26#define MANUFACTURER OLKB 25#define MANUFACTURER OLKB
27#define PRODUCT Preonic 26#define PRODUCT Preonic
28 27
diff --git a/keyboards/preonic/keymaps/via/config.h b/keyboards/preonic/keymaps/via/config.h
new file mode 100644
index 000000000..80d19d265
--- /dev/null
+++ b/keyboards/preonic/keymaps/via/config.h
@@ -0,0 +1,33 @@
1#pragma once
2
3#define DYNAMIC_KEYMAP_LAYER_COUNT 4
4
5#ifdef AUDIO_ENABLE
6 #define STARTUP_SONG SONG(PREONIC_SOUND)
7 // #define STARTUP_SONG SONG(NO_SOUND)
8
9 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND) }
10#endif
11
12#define MUSIC_MASK (keycode != KC_NO)
13
14/*
15 * MIDI options
16 */
17
18/* enable basic MIDI features:
19 - MIDI notes can be sent when in Music mode is on
20*/
21
22#define MIDI_BASIC
23
24/* enable advanced MIDI features:
25 - MIDI notes can be added to the keymap
26 - Octave shift and transpose
27 - Virtual sustain, portamento, and modulation wheel
28 - etc.
29*/
30//#define MIDI_ADVANCED
31
32/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
33//#define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/preonic/keymaps/via/keymap.c b/keyboards/preonic/keymaps/via/keymap.c
new file mode 100644
index 000000000..04f20b316
--- /dev/null
+++ b/keyboards/preonic/keymaps/via/keymap.c
@@ -0,0 +1,197 @@
1/* Copyright 2015-2017 Jack Humbert
2 * Updated for VIA 2021 George Wietor
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include QMK_KEYBOARD_H
19#include "muse.h"
20
21enum preonic_layers {
22 _QWERTY,
23 _LOWER,
24 _RAISE,
25 _ADJUST
26};
27
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29
30/* Qwerty
31 * ,-----------------------------------------------------------------------------------.
32 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
33 * |------+------+------+------+------+------+------+------+------+------+------+------|
34 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
35 * |------+------+------+------+------+-------------+------+------+------+------+------|
36 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
37 * |------+------+------+------+------+------|------+------+------+------+------+------|
38 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
39 * |------+------+------+------+------+------+------+------+------+------+------+------|
40 * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
41 * `-----------------------------------------------------------------------------------'
42 */
43[_QWERTY] = LAYOUT_preonic_grid(
44 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
45 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
46 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
47 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
48 _______, KC_LCTL, KC_LALT, KC_LGUI, FN_MO13, KC_SPC, KC_SPC, FN_MO23, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
49),
50
51/* Lower
52 * ,-----------------------------------------------------------------------------------.
53 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
54 * |------+------+------+------+------+-------------+------+------+------+------+------|
55 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
56 * |------+------+------+------+------+-------------+------+------+------+------+------|
57 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
58 * |------+------+------+------+------+------|------+------+------+------+------+------|
59 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
60 * |------+------+------+------+------+------+------+------+------+------+------+------|
61 * | | | | | | | | Next | Vol- | Vol+ | Play |
62 * `-----------------------------------------------------------------------------------'
63 */
64[_LOWER] = LAYOUT_preonic_grid(
65 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
66 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
67 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
68 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
70),
71
72/* Raise
73 * ,-----------------------------------------------------------------------------------.
74 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
75 * |------+------+------+------+------+------+------+------+------+------+------+------|
76 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
77 * |------+------+------+------+------+-------------+------+------+------+------+------|
78 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
79 * |------+------+------+------+------+------|------+------+------+------+------+------|
80 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
81 * |------+------+------+------+------+------+------+------+------+------+------+------|
82 * | | | | | | | | Next | Vol- | Vol+ | Play |
83 * `-----------------------------------------------------------------------------------'
84 */
85[_RAISE] = LAYOUT_preonic_grid(
86 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
87 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
88 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
89 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
90 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
91),
92
93/* Adjust (Lower + Raise)
94 * ,-----------------------------------------------------------------------------------.
95 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
96 * |------+------+------+------+------+------+------+------+------+------+------+------|
97 * | | Reset| Debug| | | | | | | | | Del |
98 * |------+------+------+------+------+-------------+------+------+------+------+------|
99 * | | |Mu Mod|Aud on|AudOff| | | | | | | |
100 * |------+------+------+------+------+------|------+------+------+------+------+------|
101 * | | | |Mus on|MusOff| | | | | | | |
102 * |------+------+------+------+------+------+------+------+------+------+------+------|
103 * | | | | | | | | | | | |
104 * `-----------------------------------------------------------------------------------'
105 */
106[_ADJUST] = LAYOUT_preonic_grid(
107 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
108 _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
109 _______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______,
110 _______, _______, _______, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______,
111 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
112)
113
114
115};
116
117bool muse_mode = false;
118uint8_t last_muse_note = 0;
119uint16_t muse_counter = 0;
120uint8_t muse_offset = 70;
121uint16_t muse_tempo = 50;
122
123void encoder_update_user(uint8_t index, bool clockwise) {
124 if (muse_mode) {
125 if (IS_LAYER_ON(_RAISE)) {
126 if (clockwise) {
127 muse_offset++;
128 } else {
129 muse_offset--;
130 }
131 } else {
132 if (clockwise) {
133 muse_tempo+=1;
134 } else {
135 muse_tempo-=1;
136 }
137 }
138 } else {
139 if (clockwise) {
140 register_code(KC_PGDN);
141 unregister_code(KC_PGDN);
142 } else {
143 register_code(KC_PGUP);
144 unregister_code(KC_PGUP);
145 }
146 }
147}
148
149void dip_switch_update_user(uint8_t index, bool active) {
150 switch (index) {
151 case 0:
152 if (active) {
153 layer_on(_ADJUST);
154 } else {
155 layer_off(_ADJUST);
156 }
157 break;
158 case 1:
159 if (active) {
160 muse_mode = true;
161 } else {
162 muse_mode = false;
163 }
164 }
165}
166
167
168void matrix_scan_user(void) {
169#ifdef AUDIO_ENABLE
170 if (muse_mode) {
171 if (muse_counter == 0) {
172 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
173 if (muse_note != last_muse_note) {
174 stop_note(compute_freq_for_midi_note(last_muse_note));
175 play_note(compute_freq_for_midi_note(muse_note), 0xF);
176 last_muse_note = muse_note;
177 }
178 }
179 muse_counter = (muse_counter + 1) % muse_tempo;
180 } else {
181 if (muse_counter) {
182 stop_all_notes();
183 muse_counter = 0;
184 }
185 }
186#endif
187}
188
189bool music_mask_user(uint16_t keycode) {
190 switch (keycode) {
191 case FN_MO13:
192 case FN_MO23:
193 return false;
194 default:
195 return true;
196 }
197}
diff --git a/keyboards/preonic/keymaps/via/readme.md b/keyboards/preonic/keymaps/via/readme.md
new file mode 100644
index 000000000..e911968dd
--- /dev/null
+++ b/keyboards/preonic/keymaps/via/readme.md
@@ -0,0 +1 @@
# The default Preonic layout - largely based on the Planck's \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/via/rules.mk b/keyboards/preonic/keymaps/via/rules.mk
new file mode 100644
index 000000000..ed6f2029b
--- /dev/null
+++ b/keyboards/preonic/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
1SRC += muse.c
2
3VIA_ENABLE = yes
4LTO_ENABLE = yes
diff --git a/keyboards/preonic/rev1/config.h b/keyboards/preonic/rev1/config.h
index 56dfedd45..76b646590 100644
--- a/keyboards/preonic/rev1/config.h
+++ b/keyboards/preonic/rev1/config.h
@@ -21,5 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21#include "config_common.h" 21#include "config_common.h"
22 22
23#define DEVICE_VER 0x0001 23#define DEVICE_VER 0x0001
24#define PRODUCT_ID 0x67F3
24 25
25#endif \ No newline at end of file 26#endif \ No newline at end of file
diff --git a/keyboards/preonic/rev2/config.h b/keyboards/preonic/rev2/config.h
index 20f11066b..29fc09184 100644
--- a/keyboards/preonic/rev2/config.h
+++ b/keyboards/preonic/rev2/config.h
@@ -21,5 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21#include "config_common.h" 21#include "config_common.h"
22 22
23#define DEVICE_VER 0x0002 23#define DEVICE_VER 0x0002
24#define PRODUCT_ID 0x67F3
24 25
25#endif \ No newline at end of file 26#endif \ No newline at end of file
diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h
index b336477a3..d37f300b0 100644
--- a/keyboards/preonic/rev3/config.h
+++ b/keyboards/preonic/rev3/config.h
@@ -20,6 +20,7 @@
20 20
21/* USB Device descriptor parameter */ 21/* USB Device descriptor parameter */
22#define DEVICE_VER 0x0003 22#define DEVICE_VER 0x0003
23#define PRODUCT_ID 0xA649
23 24
24#undef MATRIX_ROWS 25#undef MATRIX_ROWS
25#undef MATRIX_COLS 26#undef MATRIX_COLS