aboutsummaryrefslogtreecommitdiff
path: root/keyboard
diff options
context:
space:
mode:
authorIBNobody <ibnobody@gmail.com>2016-04-16 19:31:32 -0500
committerIBNobody <ibnobody@gmail.com>2016-04-16 19:31:32 -0500
commit4aea806aa8aa585930a89b67d7206050ac6adb3a (patch)
treead8b36cc2ebb7500a531ff4601a6fbdf1086ffe2 /keyboard
parentb5c22ab5b5b77d5e21cc4145831608eed6756ad7 (diff)
parentb8d2e66638409066661e7dd3c66473d583256ec5 (diff)
downloadqmk_firmware-4aea806aa8aa585930a89b67d7206050ac6adb3a.tar.gz
qmk_firmware-4aea806aa8aa585930a89b67d7206050ac6adb3a.zip
Adding Musical Notes
Diffstat (limited to 'keyboard')
-rw-r--r--keyboard/planck/keymaps/bone2planck.c112
-rw-r--r--keyboard/planck/keymaps/default/README.md32
-rw-r--r--keyboard/planck/keymaps/default/keymap.c86
-rw-r--r--keyboard/preonic/Makefile55
-rw-r--r--keyboard/preonic/keymaps/default/README.md35
-rw-r--r--keyboard/preonic/keymaps/default/keymap.c337
-rw-r--r--keyboard/preonic/keymaps/default/makefile.mk1
7 files changed, 494 insertions, 164 deletions
diff --git a/keyboard/planck/keymaps/bone2planck.c b/keyboard/planck/keymaps/bone2planck.c
new file mode 100644
index 000000000..a99e7719f
--- /dev/null
+++ b/keyboard/planck/keymaps/bone2planck.c
@@ -0,0 +1,112 @@
1
2#include "planck.h"
3#ifdef BACKLIGHT_ENABLE
4#include "backlight.h"
5#endif
6#include "..\..\quantum\keymap_extras\keymap_german.h"
7
8/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
9 It has Umlauts and "ß" as it is optimized for a mix of German & English.
10 My favourite features are the placement of the special characters often used for programming right on the home row
11 and the number & navigation block combo, so you never have to move your hands from their home position.
12
13 Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone
14*/
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17
18 /* Bone2
19 * ,-----------------------------------------------------------------------------------.
20 * | Q | J | D | U | A | X | P | H | L | M | W | ẞ |
21 * |------+------+------+------+------+-------------+------+------+------+------+------|
22 * | M1 | C | T | I | E | O | B | N | R | S | G | M1 |
23 * |------+------+------+------+------+------|------+------+------+------+------+------|
24 * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift |
25 * |------+------+------+------+------+------+------+------+------+------+------+------|
26 * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter |
27 * `-----------------------------------------------------------------------------------'
28 */
29 [0] = {
30 { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS },
31 { MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, MO(1) },
32 { DE_S, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, DE_S },
33 { KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), KC_SPC, KC_SPC, MO(2), MO(3), KC_ESC, KC_TAB, KC_ENT }
34 },
35
36 /* M1 Special Characters
37 * ,-----------------------------------------------------------------------------------.
38 * | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | |
39 * |------+------+------+------+------+-------------+------+------+------+------+------|
40 * | M1 | \ | / | { | } | * | ? | ( | ) | - | : | M1 |
41 * |------+------+------+------+------+------|------+------+------+------+------+------|
42 * | | # | $ | | | ~ | € | + | % | " | ' | ; | |
43 * |------+------+------+------+------+------+------+------+------+------+------+------|
44 * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter |
45 * `-----------------------------------------------------------------------------------'
46 */
47 [1] = {
48 { DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_NO },
49 { KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS },
50 { KC_NO , DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_NO },
51 { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
52 },
53
54 /* Navigation & Number Blocks
55 * ,-----------------------------------------------------------------------------------.
56 * | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | |
57 * |------+------+------+------+------+-------------+------+------+------+------+------|
58 * | | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | |
59 * |------+------+------+------+------+------|------+------+------+------+------+------|
60 * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift |
61 * |------+------+------+------+------+------+------+------+------+------+------+------|
62 * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter |
63 * `-----------------------------------------------------------------------------------'
64 */
65 [2] = {
66 { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO },
67 { KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_NO },
68 { DE_S, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, KC_0, DE_1, DE_2, DE_3, DE_SCLN, DE_S },
69 { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
70 },
71
72 /* Function & Media Keys
73 * ,-----------------------------------------------------------------------------------.
74 * | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | |
75 * |------+------+------+------+------+-------------+------+------+------+------+------|
76 * | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | |
77 * |------+------+------+------+------+------|------+------+------+------+------+------|
78 * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift |
79 * |------+------+------+------+------+------+------+------+------+------+------+------|
80 * | Ctrl | GUI | Alt | M3 | | Space | | M3 | Esc | Tab |Enter |
81 * `-----------------------------------------------------------------------------------'
82 */
83 [3] = {
84 { KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO },
85 { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO },
86 { KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_TRNS},
87 { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
88 }
89};
90
91const uint16_t PROGMEM fn_actions[] = {
92
93};
94
95const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
96{
97 // MACRODOWN only works in this function
98 switch (id) {
99 case 0:
100 if (record->event.pressed) {
101 register_code(KC_RSFT);
102#ifdef BACKLIGHT_ENABLE
103 backlight_step();
104#endif
105 }
106 else {
107 unregister_code(KC_RSFT);
108 }
109 break;
110 }
111 return MACRO_NONE;
112};
diff --git a/keyboard/planck/keymaps/default/README.md b/keyboard/planck/keymaps/default/README.md
index d2f43bbdb..de9680b49 100644
--- a/keyboard/planck/keymaps/default/README.md
+++ b/keyboard/planck/keymaps/default/README.md
@@ -1,34 +1,2 @@
1# The Default Planck Layout 1# The Default Planck Layout
2 2
3 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [_QW] = { /* Qwerty */
5 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
6 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
7 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
8 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
9 },
10 [_CM] = { /* Colemak */
11 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
12 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
13 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
14 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
15 },
16 [_DV] = { /* Dvorak */
17 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
18 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
19 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
20 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
21 },
22 [_RS] = { /* RAISE */
23 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
24 {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
25 {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
26 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
27 },
28 [_LW] = { /* LOWER */
29 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
30 {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
31 {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
32 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
33 }
34 }; \ No newline at end of file
diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c
index dee2840f2..ede08ad7f 100644
--- a/keyboard/planck/keymaps/default/keymap.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -19,12 +19,16 @@
19#define _AD 5 19#define _AD 5
20 20
21// Macro name shortcuts 21// Macro name shortcuts
22#define M_QW 0 22#define QWERTY M(_QW)
23#define M_CM 1 23#define COLEMAK M(_CM)
24#define M_DV 2 24#define DVORAK M(_DV)
25#define M_LW 3 25#define LOWER M(_LW)
26#define M_RS 4 26#define RAISE M(_RS)
27#define M_BL 5 27#define M_BL 5
28#ifdef AUDIO_ENABLE
29 #define AUD_OFF M(6)
30 #define AUD_ON M(7)
31#endif
28 32
29// Fillers to make layering more clear 33// Fillers to make layering more clear
30#define _______ KC_TRNS 34#define _______ KC_TRNS
@@ -47,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
47 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 51 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
48 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, 52 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
49 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, 53 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
50 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 54 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
51}, 55},
52 56
53/* Colemak 57/* Colemak
@@ -65,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, 69 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
66 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, 70 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
67 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, 71 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
68 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 72 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
69}, 73},
70 74
71/* Dvorak 75/* Dvorak
@@ -83,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
83 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, 87 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
84 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, 88 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
85 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, 89 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
86 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 90 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
87}, 91},
88 92
89/* Lower 93/* Lower
@@ -126,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
126 * ,-----------------------------------------------------------------------------------. 130 * ,-----------------------------------------------------------------------------------.
127 * | | Reset| | | | | | | | | | Del | 131 * | | Reset| | | | | | | | | | Del |
128 * |------+------+------+------+------+-------------+------+------+------+------+------| 132 * |------+------+------+------+------+-------------+------+------+------+------+------|
129 * | | | | | | | |Qwerty|Colemk|Dvorak| | | 133 * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak| | |
130 * |------+------+------+------+------+------|------+------+------+------+------+------| 134 * |------+------+------+------+------+------|------+------+------+------+------+------|
131 * | | | | | | | | | | | | | 135 * | | | | | | | | | | | | |
132 * |------+------+------+------+------+------+------+------+------+------+------+------| 136 * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -135,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
135 */ 139 */
136[_AD] = { 140[_AD] = {
137 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, 141 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
138 {_______, _______, _______, _______, _______, _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, 142 {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______},
139 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 143 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
140 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 144 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
141} 145}
@@ -146,6 +150,14 @@ const uint16_t PROGMEM fn_actions[] = {
146}; 150};
147 151
148#ifdef AUDIO_ENABLE 152#ifdef AUDIO_ENABLE
153float start_up[][2] = {
154 {440.0*pow(2.0,(67)/12.0), 12},
155 {440.0*pow(2.0,(64)/12.0), 8},
156 {440.0*pow(2.0,(55)/12.0), 8},
157 {440.0*pow(2.0,(60)/12.0), 8},
158 {440.0*pow(2.0,(64)/12.0), 20}
159};
160
149float tone_qw[][2] = { 161float tone_qw[][2] = {
150 {440.0*pow(2.0,(59)/12.0), 8}, 162 {440.0*pow(2.0,(59)/12.0), 8},
151 {440.0*pow(2.0,(60)/12.0), 8}, 163 {440.0*pow(2.0,(60)/12.0), 8},
@@ -157,38 +169,29 @@ float tone_cm[][2] = {
157 {440.0*pow(2.0,(59)/12.0), 8}, 169 {440.0*pow(2.0,(59)/12.0), 8},
158 {440.0*pow(2.0,(60)/12.0), 8}, 170 {440.0*pow(2.0,(60)/12.0), 8},
159 {0, 4}, 171 {0, 4},
160 {440.0*pow(2.0,(67)/12.0), 16}, 172 {440.0*pow(2.0,(67)/12.0), 12},
161 {0, 4}, 173 {0, 4},
162 {440.0*pow(2.0,(71)/12.0), 16} 174 {440.0*pow(2.0,(71)/12.0), 12}
163}; 175};
164 176
165float tone_dv[][2] = { 177float tone_dv[][2] = {
166 {440.0*pow(2.0,(59)/12.0), 8}, 178 {440.0*pow(2.0,(59)/12.0), 8},
167 {440.0*pow(2.0,(60)/12.0), 8}, 179 {440.0*pow(2.0,(60)/12.0), 8},
168 {0, 4}, 180 {0, 4},
169 {440.0*pow(2.0,(67)/12.0), 16}, 181 {440.0*pow(2.0,(67)/12.0), 8},
170 {0, 4}, 182 {0, 4},
171 {440.0*pow(2.0,(69)/12.0), 16}, 183 {440.0*pow(2.0,(69)/12.0), 8},
172 {0, 4}, 184 {0, 4},
173 {440.0*pow(2.0,(67)/12.0), 16} 185 {440.0*pow(2.0,(67)/12.0), 8}
174}; 186};
175#endif 187#endif
176 188
177#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer)))
178#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer)))
179 189
180void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
181 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
182 layer_on(layer3);
183 } else {
184 layer_off(layer3);
185 }
186}
187const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 190const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
188{ 191{
189 // MACRODOWN only works in this function 192 // MACRODOWN only works in this function
190 switch(id) { 193 switch(id) {
191 case M_QW: 194 case _QW:
192 if (record->event.pressed) { 195 if (record->event.pressed) {
193 #ifdef AUDIO_ENABLE 196 #ifdef AUDIO_ENABLE
194 play_notes(&tone_qw, 4, false); 197 play_notes(&tone_qw, 4, false);
@@ -196,7 +199,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
196 default_layer_set(1UL<<_QW); 199 default_layer_set(1UL<<_QW);
197 } 200 }
198 break; 201 break;
199 case M_CM: 202 case _CM:
200 if (record->event.pressed) { 203 if (record->event.pressed) {
201 #ifdef AUDIO_ENABLE 204 #ifdef AUDIO_ENABLE
202 play_notes(&tone_cm, 6, false); 205 play_notes(&tone_cm, 6, false);
@@ -204,7 +207,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
204 default_layer_set(1UL<<_CM); 207 default_layer_set(1UL<<_CM);
205 } 208 }
206 break; 209 break;
207 case M_DV: 210 case _DV:
208 if (record->event.pressed) { 211 if (record->event.pressed) {
209 #ifdef AUDIO_ENABLE 212 #ifdef AUDIO_ENABLE
210 play_notes(&tone_dv, 8, false); 213 play_notes(&tone_dv, 8, false);
@@ -212,7 +215,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
212 default_layer_set(1UL<<_DV); 215 default_layer_set(1UL<<_DV);
213 } 216 }
214 break; 217 break;
215 case M_LW: 218 case _LW:
216 if (record->event.pressed) { 219 if (record->event.pressed) {
217 layer_on(_LW); 220 layer_on(_LW);
218 update_tri_layer(_LW, _RS, _AD); 221 update_tri_layer(_LW, _RS, _AD);
@@ -221,7 +224,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
221 update_tri_layer(_LW, _RS, _AD); 224 update_tri_layer(_LW, _RS, _AD);
222 } 225 }
223 break; 226 break;
224 case M_RS: 227 case _RS:
225 if (record->event.pressed) { 228 if (record->event.pressed) {
226 layer_on(_RS); 229 layer_on(_RS);
227 update_tri_layer(_LW, _RS, _AD); 230 update_tri_layer(_LW, _RS, _AD);
@@ -240,20 +243,25 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
240 unregister_code(KC_RSFT); 243 unregister_code(KC_RSFT);
241 } 244 }
242 break; 245 break;
246 case 6:
247 if (record->event.pressed) {
248 #ifdef AUDIO_ENABLE
249 audio_off();
250 #endif
251 }
252 break;
253 case 7:
254 if (record->event.pressed) {
255 #ifdef AUDIO_ENABLE
256 audio_on();
257 play_notes(&start_up, 5, false);
258 #endif
259 }
260 break;
243 } 261 }
244 return MACRO_NONE; 262 return MACRO_NONE;
245}; 263};
246 264
247#ifdef AUDIO_ENABLE
248float start_up[][2] = {
249 {440.0*pow(2.0,(67)/12.0), 12},
250 {440.0*pow(2.0,(64)/12.0), 8},
251 {440.0*pow(2.0,(55)/12.0), 8},
252 {440.0*pow(2.0,(60)/12.0), 8},
253 {440.0*pow(2.0,(64)/12.0), 20}
254};
255#endif
256
257void matrix_init_user(void) { 265void matrix_init_user(void) {
258 #ifdef AUDIO_ENABLE 266 #ifdef AUDIO_ENABLE
259 init_notes(); 267 init_notes();
diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile
index 664aff732..9199968c3 100644
--- a/keyboard/preonic/Makefile
+++ b/keyboard/preonic/Makefile
@@ -126,27 +126,44 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
126# USBaspLoader 2048 126# USBaspLoader 2048
127OPT_DEFS += -DBOOTLOADER_SIZE=4096 127OPT_DEFS += -DBOOTLOADER_SIZE=4096
128 128
129
130# Build Options 129# Build Options
131# comment out to disable the options. 130# change to "no" to disable the options, or define them in the makefile.mk in
132# 131# the appropriate keymap folder that will get included automatically
133BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) 132#
134MOUSEKEY_ENABLE = yes # Mouse keys(+4700) 133BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
135EXTRAKEY_ENABLE = yes # Audio control and System control(+450) 134MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
136CONSOLE_ENABLE = yes # Console for debug(+400) 135EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
137COMMAND_ENABLE = yes # Commands for debug and configuration 136CONSOLE_ENABLE = yes # Console for debug(+400)
137COMMAND_ENABLE = yes # Commands for debug and configuration
138NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
139BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
140MIDI_ENABLE = no # MIDI controls
141AUDIO_ENABLE = no # Audio output on port C6
142UNICODE_ENABLE = no # Unicode
143BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
144RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
145
138# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 146# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
139# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend 147SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
140# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 148
141BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 149ifdef KEYMAP
142MIDI_ENABLE = YES # MIDI controls 150
143AUDIO_ENABLE = YES # Audio output on port C6 151ifeq ("$(wildcard keymaps/$(KEYMAP).c)","")
144# UNICODE_ENABLE = YES # Unicode 152ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
145# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID 153 include keymaps/$(KEYMAP)/makefile.mk
146# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. 154endif
147 155endif
148ifdef BACKLIGHT_ENABLE 156
149 SRC += backlight.c 157else
158
159ifneq ("$(wildcard keymaps/default/makefile.mk)","")
160 include keymaps/default/makefile.mk
161endif
162
163endif
164
165ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
166 SRC := backlight.c $(SRC)
150endif 167endif
151 168
152 169
diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md
index d2f43bbdb..e911968dd 100644
--- a/keyboard/preonic/keymaps/default/README.md
+++ b/keyboard/preonic/keymaps/default/README.md
@@ -1,34 +1 @@
1# The Default Planck Layout # The default Preonic layout - largely based on the Planck's \ No newline at end of file
2
3 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [_QW] = { /* Qwerty */
5 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
6 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
7 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
8 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
9 },
10 [_CM] = { /* Colemak */
11 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
12 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
13 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
14 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
15 },
16 [_DV] = { /* Dvorak */
17 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
18 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
19 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
20 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
21 },
22 [_RS] = { /* RAISE */
23 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
24 {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
25 {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
26 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
27 },
28 [_LW] = { /* LOWER */
29 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
30 {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
31 {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
32 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
33 }
34 }; \ No newline at end of file
diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c
index 784670784..e1f9b6202 100644
--- a/keyboard/preonic/keymaps/default/keymap.c
+++ b/keyboard/preonic/keymaps/default/keymap.c
@@ -1,56 +1,182 @@
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 "preonic.h" 1#include "preonic.h"
5#ifdef BACKLIGHT_ENABLE 2#include "action_layer.h"
6 #include "backlight.h" 3#include "eeconfig.h"
4#ifdef AUDIO_ENABLE
5 #include "audio.h"
6 #define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \
7 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
8 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \
9 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \
10 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
7#endif 11#endif
8 12
9// Each layer gets a name for readability, which is then used in the keymap matrix below. 13// Each layer gets a name for readability, which is then used in the keymap matrix below.
10// The underscores don't mean anything - you can have a layer called STUFF or any other name. 14// The underscores don't mean anything - you can have a layer called STUFF or any other name.
11// Layer names don't all need to be of the same length, obviously, and you can also skip them 15// Layer names don't all need to be of the same length, obviously, and you can also skip them
12// entirely and just use numbers. 16// entirely and just use numbers.
13#define _QW 0 17#define _QWERTY 0
14#define _CM 1 18#define _COLEMAK 1
15#define _DV 2 19#define _DVORAK 2
16#define _LW 3 20#define _LOWER 3
17#define _RS 4 21#define _RAISE 4
22#define _ADJUST 5
23#define _MUSIC 6
24
25// Macro name shortcuts
26#define QWERTY M(_QWERTY)
27#define COLEMAK M(_COLEMAK)
28#define DVORAK M(_DVORAK)
29#define LOWER M(_LOWER)
30#define RAISE M(_RAISE)
31#define M_BL 5
32#ifdef AUDIO_ENABLE
33 #define AUD_OFF M(6)
34 #define AUD_ON M(7)
35#endif
36#define MUS_OFF M(8)
37#define MUS_ON M(9)
38
39// Fillers to make layering more clear
40#define _______ KC_TRNS
41#define XXXXXXX KC_NO
18 42
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 43const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20[_QW] = { /* Qwerty */ 44
45/* Qwerty
46 * ,-----------------------------------------------------------------------------------.
47 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
48 * |------+------+------+------+------+------+------+------+------+------+------+------|
49 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
50 * |------+------+------+------+------+-------------+------+------+------+------+------|
51 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
52 * |------+------+------+------+------+------|------+------+------+------+------+------|
53 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
56 * `-----------------------------------------------------------------------------------'
57 */
58[_QWERTY] = {
21 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 59 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_BSPC}, 60 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL},
23 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, 61 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
24 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, 62 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
25 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 63 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
26}, 64},
27[_CM] = { /* Colemak */ 65
66/* Colemak
67 * ,-----------------------------------------------------------------------------------.
68 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
69 * |------+------+------+------+------+------+------+------+------+------+------+------|
70 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
71 * |------+------+------+------+------+-------------+------+------+------+------+------|
72 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
73 * |------+------+------+------+------+------|------+------+------+------+------+------|
74 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
75 * |------+------+------+------+------+------+------+------+------+------+------+------|
76 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
77 * `-----------------------------------------------------------------------------------'
78 */
79[_COLEMAK] = {
28 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 80 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
29 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, 81 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL},
30 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, 82 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
31 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, 83 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
32 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 84 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
33}, 85},
34[_DV] = { /* Dvorak */ 86
87/* Dvorak
88 * ,-----------------------------------------------------------------------------------.
89 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
92 * |------+------+------+------+------+-------------+------+------+------+------+------|
93 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
94 * |------+------+------+------+------+------|------+------+------+------+------+------|
95 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
96 * |------+------+------+------+------+------+------+------+------+------+------+------|
97 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
98 * `-----------------------------------------------------------------------------------'
99 */
100[_DVORAK] = {
35 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 101 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
36 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, 102 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL},
37 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, 103 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
38 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, 104 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
39 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 105 {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
40}, 106},
41[_RS] = { /* RAISE */ 107
42 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 108/* Lower
43 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 109 * ,-----------------------------------------------------------------------------------.
44 {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, 110 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
45 {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, 111 * |------+------+------+------+------+-------------+------+------+------+------+------|
46 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} 112 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
113 * |------+------+------+------+------+-------------+------+------+------+------+------|
114 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
115 * |------+------+------+------+------+------|------+------+------+------+------+------|
116 * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter |
117 * |------+------+------+------+------+------+------+------+------+------+------+------|
118 * | | | | | | | | Next | Vol- | Vol+ | Play |
119 * `-----------------------------------------------------------------------------------'
120 */
121[_LOWER] = {
122 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
123 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL},
124 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
125 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______},
126 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
47}, 127},
48[_LW] = { /* LOWER */ 128
129/* Raise
130 * ,-----------------------------------------------------------------------------------.
131 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
132 * |------+------+------+------+------+------+------+------+------+------+------+------|
133 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
134 * |------+------+------+------+------+-------------+------+------+------+------+------|
135 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
136 * |------+------+------+------+------+------|------+------+------+------+------+------|
137 * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter |
138 * |------+------+------+------+------+------+------+------+------+------+------+------|
139 * | | | | | | | | Next | Vol- | Vol+ | Play |
140 * `-----------------------------------------------------------------------------------'
141 */
142[_RAISE] = {
49 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 143 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
50 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, 144 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
51 {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, 145 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
52 {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, 146 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______},
53 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} 147 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
148},
149
150/* Adjust (Lower + Raise)
151 * ,-----------------------------------------------------------------------------------.
152 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
153 * |------+------+------+------+------+------+------+------+------+------+------+------|
154 * | | Reset| | | | | | | | | | Del |
155 * |------+------+------+------+------+-------------+------+------+------+------+------|
156 * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
157 * |------+------+------+------+------+------|------+------+------+------+------+------|
158 * | | | |Musoff|Mus on| | | | | | | |
159 * |------+------+------+------+------+------+------+------+------+------+------+------|
160 * | | | | | | | | | | | |
161 * `-----------------------------------------------------------------------------------'
162 */
163[_ADJUST] = {
164 {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
165 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
166 {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______},
167 {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______},
168 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
169},
170
171/* Music (reserved for process_action_user)
172 *
173 */
174[_MUSIC] = {
175 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
176 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
177 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
178 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
179 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
54} 180}
55}; 181};
56 182
@@ -58,19 +184,104 @@ const uint16_t PROGMEM fn_actions[] = {
58 184
59}; 185};
60 186
187#ifdef AUDIO_ENABLE
61float start_up[][2] = { 188float start_up[][2] = {
62 {440.0*pow(2.0,(67)/12.0), 600}, 189 {440.0*pow(2.0,(50)/12.0), 20},
63 {440.0*pow(2.0,(64)/12.0), 400}, 190 {440.0*pow(2.0,(62)/12.0), 8},
64 {440.0*pow(2.0,(55)/12.0), 400}, 191 {440.0*pow(2.0,(54)/12.0), 20},
65 {440.0*pow(2.0,(60)/12.0), 400}, 192 {440.0*pow(2.0,(62)/12.0), 8}
66 {440.0*pow(2.0,(64)/12.0), 1000},
67}; 193};
68 194
195float tone_qwerty[][2] = {
196 {440.0*pow(2.0,(59)/12.0), 8},
197 {440.0*pow(2.0,(60)/12.0), 8},
198 {0, 4},
199 {440.0*pow(2.0,(67)/12.0), 16}
200};
201
202float tone_colemak[][2] = {
203 {440.0*pow(2.0,(59)/12.0), 8},
204 {440.0*pow(2.0,(60)/12.0), 8},
205 {0, 4},
206 {440.0*pow(2.0,(67)/12.0), 12},
207 {0, 4},
208 {440.0*pow(2.0,(71)/12.0), 12}
209};
210
211float tone_dvorak[][2] = {
212 {440.0*pow(2.0,(59)/12.0), 8},
213 {440.0*pow(2.0,(60)/12.0), 8},
214 {0, 4},
215 {440.0*pow(2.0,(67)/12.0), 8},
216 {0, 4},
217 {440.0*pow(2.0,(69)/12.0), 8},
218 {0, 4},
219 {440.0*pow(2.0,(67)/12.0), 8}
220};
221
222float tone_music[][2] = {
223 {440.0*pow(2.0,(48)/12.0), 8},
224 {440.0*pow(2.0,(50)/12.0), 8},
225 {440.0*pow(2.0,(52)/12.0), 8},
226 {440.0*pow(2.0,(53)/12.0), 8},
227 {440.0*pow(2.0,(55)/12.0), 8},
228 {440.0*pow(2.0,(57)/12.0), 8},
229 {440.0*pow(2.0,(59)/12.0), 8},
230 {440.0*pow(2.0,(60)/12.0), 8}
231};
232#endif
233
234void persistant_default_layer_set(uint16_t default_layer) {
235 eeconfig_write_default_layer(default_layer);
236 default_layer_set(default_layer);
237}
238
69const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 239const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
70{ 240{
71 // MACRODOWN only works in this function
72 switch(id) { 241 switch(id) {
73 case 0: 242 case _QWERTY:
243 if (record->event.pressed) {
244 #ifdef AUDIO_ENABLE
245 play_notes(&tone_qwerty, 4, false);
246 #endif
247 persistant_default_layer_set(1UL<<_QWERTY);
248 }
249 break;
250 case _COLEMAK:
251 if (record->event.pressed) {
252 #ifdef AUDIO_ENABLE
253 play_notes(&tone_colemak, 6, false);
254 #endif
255 persistant_default_layer_set(1UL<<_COLEMAK);
256 }
257 break;
258 case _DVORAK:
259 if (record->event.pressed) {
260 #ifdef AUDIO_ENABLE
261 play_notes(&tone_dvorak, 8, false);
262 #endif
263 persistant_default_layer_set(1UL<<_DVORAK);
264 }
265 break;
266 case _LOWER:
267 if (record->event.pressed) {
268 layer_on(_LOWER);
269 update_tri_layer(_LOWER, _RAISE, _ADJUST);
270 } else {
271 layer_off(_LOWER);
272 update_tri_layer(_LOWER, _RAISE, _ADJUST);
273 }
274 break;
275 case _RAISE:
276 if (record->event.pressed) {
277 layer_on(_RAISE);
278 update_tri_layer(_LOWER, _RAISE, _ADJUST);
279 } else {
280 layer_off(_RAISE);
281 update_tri_layer(_LOWER, _RAISE, _ADJUST);
282 }
283 break;
284 case M_BL:
74 if (record->event.pressed) { 285 if (record->event.pressed) {
75 register_code(KC_RSFT); 286 register_code(KC_RSFT);
76 #ifdef BACKLIGHT_ENABLE 287 #ifdef BACKLIGHT_ENABLE
@@ -80,13 +291,59 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
80 unregister_code(KC_RSFT); 291 unregister_code(KC_RSFT);
81 } 292 }
82 break; 293 break;
294 case 6:
295 if (record->event.pressed) {
296 #ifdef AUDIO_ENABLE
297 audio_off();
298 #endif
299 }
300 break;
301 case 7:
302 if (record->event.pressed) {
303 #ifdef AUDIO_ENABLE
304 audio_on();
305 play_notes(&start_up, 4, false);
306 #endif
307 }
308 break;
309 case 8:
310 if (record->event.pressed) {
311 #ifdef AUDIO_ENABLE
312 layer_off(_MUSIC);
313 stop_all_notes();
314 #endif
315 }
316 break;
317 case 9:
318 if (record->event.pressed) {
319 #ifdef AUDIO_ENABLE
320 play_notes(&tone_music, 8, false);
321 layer_on(_MUSIC);
322 #endif
323 }
324 break;
83 } 325 }
84 return MACRO_NONE; 326 return MACRO_NONE;
85}; 327};
86 328
329uint8_t starting_note = 0x0C;
330int offset = 7;
331
332void process_action_user(keyrecord_t *record) {
333
334 if (IS_LAYER_ON(_MUSIC)) {
335 if (record->event.pressed) {
336 play_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
337 } else {
338 stop_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
339 }
340 }
341
342}
343
87void matrix_init_user(void) { 344void matrix_init_user(void) {
88#ifdef AUDIO_ENABLE 345 #ifdef AUDIO_ENABLE
89 init_notes(); 346 init_notes();
90 play_notes(&start_up, 5, false); 347 play_notes(&start_up, 4, false);
91#endif 348 #endif
92} 349}
diff --git a/keyboard/preonic/keymaps/default/makefile.mk b/keyboard/preonic/keymaps/default/makefile.mk
new file mode 100644
index 000000000..628167ff6
--- /dev/null
+++ b/keyboard/preonic/keymaps/default/makefile.mk
@@ -0,0 +1 @@
AUDIO_ENABLE = yes \ No newline at end of file