aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/feature_encoders.md2
-rw-r--r--docs/ja/feature_encoders.md81
-rw-r--r--keyboards/coseyfannitutti/discipad/config.h6
-rw-r--r--keyboards/coseyfannitutti/discipad/keymaps/via/keymap.c43
-rw-r--r--keyboards/coseyfannitutti/discipad/keymaps/via/rules.mk4
-rw-r--r--keyboards/coseyfannitutti/mysterium/config.h8
-rw-r--r--keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c50
-rw-r--r--keyboards/coseyfannitutti/mysterium/keymaps/via/rules.mk4
-rw-r--r--keyboards/crkbd/keymaps/bcat/readme.md100
-rw-r--r--keyboards/dmqdesign/spin/config.h58
-rw-r--r--keyboards/dmqdesign/spin/info.json28
-rw-r--r--keyboards/dmqdesign/spin/keymaps/default/config.h21
-rw-r--r--keyboards/dmqdesign/spin/keymaps/default/keymap.c47
-rw-r--r--keyboards/dmqdesign/spin/keymaps/default/readme.md1
-rw-r--r--keyboards/dmqdesign/spin/keymaps/encoderlayers/config.h23
-rw-r--r--keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c151
-rw-r--r--keyboards/dmqdesign/spin/keymaps/encoderlayers/readme.md1
-rw-r--r--keyboards/dmqdesign/spin/readme.md17
-rw-r--r--keyboards/dmqdesign/spin/rules.mk34
-rw-r--r--keyboards/dmqdesign/spin/spin.c16
-rw-r--r--keyboards/dmqdesign/spin/spin.h29
-rw-r--r--keyboards/ergodash/rev1/keymaps/333fred/config.h1
-rw-r--r--keyboards/ergodash/rev1/keymaps/333fred/rules.mk2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c6
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk4
-rw-r--r--keyboards/handwired/p1800fl/config.h72
-rw-r--r--keyboards/handwired/p1800fl/info.json99
-rw-r--r--keyboards/handwired/p1800fl/keymaps/default/keymap.c41
-rw-r--r--keyboards/handwired/p1800fl/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/p1800fl/p1800fl.c28
-rw-r--r--keyboards/handwired/p1800fl/p1800fl.h42
-rw-r--r--keyboards/handwired/p1800fl/readme.md15
-rw-r--r--keyboards/handwired/p1800fl/rules.mk32
-rw-r--r--keyboards/handwired/xealousbrown/README.md8
-rw-r--r--keyboards/handwired/xealousbrown/config.h5
-rw-r--r--keyboards/handwired/xealousbrown/keymaps/default/keymap.c4
-rw-r--r--keyboards/handwired/xealousbrown/matrix.c112
-rw-r--r--keyboards/handwired/xealousbrown/rules.mk34
-rw-r--r--keyboards/handwired/xealousbrown/xealousbrown.c41
-rw-r--r--keyboards/id80/keymaps/via/keymap.c51
-rw-r--r--keyboards/id80/keymaps/via/rules.mk2
-rw-r--r--keyboards/idb/idb_60/idb_60.c6
-rw-r--r--keyboards/idb/idb_60/idb_60.h12
-rw-r--r--keyboards/idb/idb_60/keymaps/all_keys/keymap.c8
-rw-r--r--keyboards/idb/idb_60/keymaps/default/keymap.c8
-rw-r--r--keyboards/idb/idb_60/keymaps/pngu/keymap.c12
-rw-r--r--keyboards/idb/idb_60/keymaps/via/keymap.c8
-rw-r--r--keyboards/idb/idb_60/readme.md5
-rw-r--r--keyboards/idb/idb_60/rules.mk1
-rw-r--r--keyboards/jj4x4/config.h4
-rw-r--r--keyboards/jj4x4/info.json56
-rw-r--r--keyboards/jj4x4/jj4x4.h21
-rw-r--r--keyboards/jj4x4/keymaps/default/keymap.c83
-rw-r--r--keyboards/jj4x4/keymaps/via/keymap.c44
-rw-r--r--keyboards/jj4x4/keymaps/via/rules.mk3
-rw-r--r--keyboards/jj4x4/readme.md (renamed from keyboards/jj4x4/README.md)26
-rw-r--r--keyboards/jj4x4/rules.mk2
-rw-r--r--keyboards/keebio/iris/keymaps/333fred/config.h2
-rw-r--r--keyboards/keebio/iris/keymaps/333fred/rules.mk3
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/config.h33
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json192
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/keymap.c73
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/readme.md16
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/rules.mk2
-rw-r--r--keyboards/lily58/keymaps/bcat/config.h3
-rw-r--r--keyboards/lily58/keymaps/bcat/readme.md51
-rw-r--r--keyboards/maartenwut/plain60/keymaps/via/keymap.c39
-rw-r--r--keyboards/maartenwut/wasdat/info.json4
-rw-r--r--keyboards/maartenwut/wasdat_code/config.h258
-rw-r--r--keyboards/maartenwut/wasdat_code/info.json459
-rw-r--r--keyboards/maartenwut/wasdat_code/keymaps/default/keymap.c53
-rw-r--r--keyboards/maartenwut/wasdat_code/keymaps/default/readme.md1
-rw-r--r--keyboards/maartenwut/wasdat_code/keymaps/default_iso/keymap.c44
-rw-r--r--keyboards/maartenwut/wasdat_code/keymaps/default_iso/readme.md1
-rw-r--r--keyboards/maartenwut/wasdat_code/keymaps/via/keymap.c46
-rw-r--r--keyboards/maartenwut/wasdat_code/keymaps/via/rules.mk2
-rw-r--r--keyboards/maartenwut/wasdat_code/matrix.c369
-rw-r--r--keyboards/maartenwut/wasdat_code/readme.md19
-rw-r--r--keyboards/maartenwut/wasdat_code/rules.mk37
-rw-r--r--keyboards/maartenwut/wasdat_code/wasdat_code.c47
-rw-r--r--keyboards/maartenwut/wasdat_code/wasdat_code.h107
-rw-r--r--keyboards/montsinger/rebound/keymaps/rossman360/keymap.c55
-rwxr-xr-xkeyboards/montsinger/rebound/readme.md5
-rw-r--r--keyboards/montsinger/rebound/rebound.h26
-rw-r--r--keyboards/montsinger/rebound/rev1/config.h (renamed from keyboards/montsinger/rebound/config.h)0
-rw-r--r--keyboards/montsinger/rebound/rev1/info.json61
-rw-r--r--keyboards/montsinger/rebound/rev1/keymaps/curry/keymap.c (renamed from keyboards/montsinger/rebound/keymaps/curry/keymap.c)0
-rw-r--r--keyboards/montsinger/rebound/rev1/keymaps/curry/rules.mk (renamed from keyboards/montsinger/rebound/keymaps/curry/rules.mk)0
-rw-r--r--keyboards/montsinger/rebound/rev1/keymaps/default/keymap.c (renamed from keyboards/montsinger/rebound/keymaps/default/keymap.c)0
-rw-r--r--keyboards/montsinger/rebound/rev1/rev1.h39
-rw-r--r--keyboards/montsinger/rebound/rev1/rules.mk32
-rw-r--r--keyboards/montsinger/rebound/rev2/config.h65
-rw-r--r--keyboards/montsinger/rebound/rev2/info.json128
-rw-r--r--keyboards/montsinger/rebound/rev2/keymaps/default/keymap.c161
-rw-r--r--keyboards/montsinger/rebound/rev2/keymaps/rossman360/keymap.c57
-rw-r--r--keyboards/montsinger/rebound/rev2/rev2.h53
-rw-r--r--keyboards/montsinger/rebound/rev2/rules.mk33
-rw-r--r--keyboards/montsinger/rebound/rules.mk33
-rw-r--r--keyboards/naked60/keymaps/333fred/config.h24
-rw-r--r--keyboards/naked60/keymaps/333fred/keymap.c53
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/333fred/rules.mk2
-rw-r--r--keyboards/vitamins_included/keymaps/default/keymap.c46
-rw-r--r--keyboards/vitamins_included/rev2/config.h3
-rw-r--r--keyboards/vitamins_included/rules.mk2
-rw-r--r--keyboards/wete/keymaps/via/config.h1
-rw-r--r--keyboards/wete/keymaps/via/keymap.c53
-rw-r--r--keyboards/wete/keymaps/via/rules.mk2
-rw-r--r--keyboards/wete/wete.h24
-rw-r--r--keyboards/wheatfield/blocked65/config.h2
-rw-r--r--keyboards/yd60mq/info.json71
-rw-r--r--keyboards/yd60mq/keymaps/iso/keymap.c28
-rw-r--r--keyboards/yd60mq/rules.mk2
-rw-r--r--keyboards/yd60mq/yd60mq.h15
-rw-r--r--layouts/community/ergodox/333fred/config.h1
-rw-r--r--layouts/community/ergodox/333fred/rules.mk2
-rw-r--r--layouts/community/ortho_5x12/333fred/config.h2
-rw-r--r--layouts/community/ortho_5x12/333fred/rules.mk2
-rw-r--r--tmk_core/protocol/arm_atsam/usb/conf_usb.h20
-rw-r--r--tmk_core/protocol/arm_atsam/usb/main_usb.c15
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_cdc.c2
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_cdc.h6
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_device_conf.h479
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c24
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h22
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c28
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_main.h22
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h2
-rw-r--r--users/333fred/config.h (renamed from users/333fred/333fred_config.h)1
-rw-r--r--users/333fred/rules.mk4
-rw-r--r--users/bcat/bcat.c4
-rw-r--r--users/bcat/config.h82
-rw-r--r--users/bcat/readme.md13
-rw-r--r--users/bcat/rules.mk28
-rwxr-xr-xutil/linux_install.sh8
135 files changed, 4677 insertions, 652 deletions
diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md
index 4a0ae60c3..7799b78d6 100644
--- a/docs/feature_encoders.md
+++ b/docs/feature_encoders.md
@@ -61,7 +61,7 @@ void encoder_update_user(uint8_t index, bool clockwise) {
61 } else { 61 } else {
62 tap_code(KC_PGUP); 62 tap_code(KC_PGUP);
63 } 63 }
64 } else if (index == 1) { /* Second encoder */ 64 } else if (index == 1) { /* Second encoder */
65 if (clockwise) { 65 if (clockwise) {
66 tap_code(KC_DOWN); 66 tap_code(KC_DOWN);
67 } else { 67 } else {
diff --git a/docs/ja/feature_encoders.md b/docs/ja/feature_encoders.md
new file mode 100644
index 000000000..7f8922652
--- /dev/null
+++ b/docs/ja/feature_encoders.md
@@ -0,0 +1,81 @@
1# エンコーダ
2
3<!---
4 original document: 0.8.123:docs/feature_encoders.md
5 git diff 0.8.123 HEAD -- docs/feature_encoders.md | cat
6-->
7
8以下を `rules.mk` に追加することで基本的なエンコーダがサポートされます:
9
10```make
11ENCODER_ENABLE = yes
12```
13
14さらに、以下を `config.h` に追加します:
15
16```c
17#define ENCODERS_PAD_A { B12 }
18#define ENCODERS_PAD_B { B13 }
19```
20
21各 PAD_A/B 変数は配列を定義するため、複数のエンコーダを定義することができます。例えば:
22
23```c
24#define ENCODERS_PAD_A { encoder1a, encoder2a }
25#define ENCODERS_PAD_B { encoder1b, encoder2b }
26```
27
28エンコーダの時計回りの方向が間違っている場合は、A と B のパッド定義を交換することができます。define を使って逆にすることもできます:
29
30```c
31#define ENCODER_DIRECTION_FLIP
32```
33
34さらに、解像度を同じファイルで指定することができます (デフォルトかつお勧めは4):
35
36```c
37#define ENCODER_RESOLUTION 4
38```
39
40## 分割キーボード
41
42分割キーボードのそれぞれの側のエンコーダに異なるピン配列を使っている場合、右側のピン配列を以下のように定義することができます:
43
44```c
45#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a }
46#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b }
47```
48
49## コールバック
50
51コールバック関数を `<keyboard>.c` に記述することができます:
52
53```c
54void encoder_update_kb(uint8_t index, bool clockwise) {
55 encoder_update_user(index, clockwise);
56}
57```
58
59あるいは `keymap.c` に記述することもできます:
60
61```c
62void encoder_update_user(uint8_t index, bool clockwise) {
63 if (index == 0) { /* First encoder */
64 if (clockwise) {
65 tap_code(KC_PGDN);
66 } else {
67 tap_code(KC_PGUP);
68 }
69 } else if (index == 1) { /* Second encoder */
70 if (clockwise) {
71 tap_code(KC_DOWN);
72 } else {
73 tap_code(KC_UP);
74 }
75 }
76}
77```
78
79## ハードウェア
80
81エンコーダの A と B の線は MCU に直接配線し、C/common 線はグランドに配線する必要があります。
diff --git a/keyboards/coseyfannitutti/discipad/config.h b/keyboards/coseyfannitutti/discipad/config.h
index 55033bd9d..34776fcbd 100644
--- a/keyboards/coseyfannitutti/discipad/config.h
+++ b/keyboards/coseyfannitutti/discipad/config.h
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
19 19
20#include "config_common.h" 20#include "config_common.h"
21 21
22#define VENDOR_ID 0xFEED 22#define VENDOR_ID 0x6B62
23#define PRODUCT_ID 0x1769 23#define PRODUCT_ID 0x1769
24#define DEVICE_VER 0x0001 24#define DEVICE_VER 0x0001
25#define MANUFACTURER coseyfannitutti 25#define MANUFACTURER coseyfannitutti
@@ -243,7 +243,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
243#endif 243#endif
244*/ 244*/
245 245
246/* Bootmagic Lite key configuration 246/* Bootmagic Lite key configuration */
247#define BOOTMAGIC_LITE_ROW 0 247#define BOOTMAGIC_LITE_ROW 0
248#define BOOTMAGIC_LITE_COLUMN 0 248#define BOOTMAGIC_LITE_COLUMN 0
249*/ 249
diff --git a/keyboards/coseyfannitutti/discipad/keymaps/via/keymap.c b/keyboards/coseyfannitutti/discipad/keymaps/via/keymap.c
new file mode 100644
index 000000000..d47c2ce75
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipad/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright 2019 COSEYFANNITUTTI
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_numpad_5x4(
20 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
21 KC_P7, KC_P8, KC_P9,
22 KC_P4, KC_P5, KC_P6, KC_PPLS,
23 KC_P1, KC_P2, KC_P3,
24 KC_P0, KC_PDOT, KC_PENT ),
25 [1] = LAYOUT_numpad_5x4(
26 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
27 KC_TRNS, KC_TRNS, KC_TRNS,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS ),
31 [2] = LAYOUT_numpad_5x4(
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
35 KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS ),
37 [3] = LAYOUT_numpad_5x4(
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS ),
43};
diff --git a/keyboards/coseyfannitutti/discipad/keymaps/via/rules.mk b/keyboards/coseyfannitutti/discipad/keymaps/via/rules.mk
new file mode 100644
index 000000000..00c11accc
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipad/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
3EXTRAKEY_ENABLE = no
4MOUSEKEY_ENABLE = no
diff --git a/keyboards/coseyfannitutti/mysterium/config.h b/keyboards/coseyfannitutti/mysterium/config.h
index 1d0094b8b..968794da9 100644
--- a/keyboards/coseyfannitutti/mysterium/config.h
+++ b/keyboards/coseyfannitutti/mysterium/config.h
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
18 18
19#include "config_common.h" 19#include "config_common.h"
20 20
21#define VENDOR_ID 0xFEED 21#define VENDOR_ID 0x6B62
22#define PRODUCT_ID 0x8769 22#define PRODUCT_ID 0x8769
23#define DEVICE_VER 0x0001 23#define DEVICE_VER 0x0001
24#define MANUFACTURER coseyfannitutti 24#define MANUFACTURER coseyfannitutti
@@ -237,4 +237,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
237#define LCD_E_PORT LCD_PORT //< port for Enable line 237#define LCD_E_PORT LCD_PORT //< port for Enable line
238#define LCD_E_PIN 1 //< pin for Enable line 238#define LCD_E_PIN 1 //< pin for Enable line
239#endif 239#endif
240*/ \ No newline at end of file 240*/
241
242/* Bootmagic Lite key configuration */
243#define BOOTMAGIC_LITE_ROW 0
244#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c b/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c
new file mode 100644
index 000000000..bd8de69a0
--- /dev/null
+++ b/keyboards/coseyfannitutti/mysterium/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
1/* Copyright 2019 COSEYFANNITUTTI
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_tkl_ansi(
20 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
21 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
26
27 [1] = LAYOUT_tkl_ansi(
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS),
34
35 [2] = LAYOUT_tkl_ansi(
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
42
43 [3] = LAYOUT_tkl_ansi(
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
50};
diff --git a/keyboards/coseyfannitutti/mysterium/keymaps/via/rules.mk b/keyboards/coseyfannitutti/mysterium/keymaps/via/rules.mk
new file mode 100644
index 000000000..d0e4977b8
--- /dev/null
+++ b/keyboards/coseyfannitutti/mysterium/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
3EXTRAKEY_ENABLE = no
4MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/bcat/readme.md b/keyboards/crkbd/keymaps/bcat/readme.md
index 71a9d93c9..9b2110a47 100644
--- a/keyboards/crkbd/keymaps/bcat/readme.md
+++ b/keyboards/crkbd/keymaps/bcat/readme.md
@@ -1,9 +1,24 @@
1# bcat's Corne layout 1# bcat's Corne layout
2 2
3This split ergo layout mirrors 3This is my favorite split ergo layout for typing, featuring the traditional
4[my Lily58 layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat) 4four ortho/ergo layers (Default, Lower, Raise, Adjust). It is loosely inspired
5with the number row removed and RGB controls added. See that layout's docs for 5by the default Planck (numbers on Lower, symbols on Raise) and Crkbd (Space on
6more details on the principles that went into the layout. 6left, Enter on right) layouts, but has since been redesigned heavily according
7to the principles described below:
8
9* Since most of the modifiers are on the left half, keys frequently pressed
10together with mods (e.g., numbers, function keys, etc.) are on the Raise layer
11activated by the right thumb.
12
13* Navigation can be done on the right half alone, to enable simultaneous
14left-handed mousing. Additionally, Web pages can be scrolled with Space or
15Shift+Space on the left half alone, to enable taking notes with the right hand
16at the same time.
17
18* Other than Right Shift (which I seldom use), mods aren't rebound on layers.
19
20* Likewise, Backspace is not rebound on layers to avoid having to let go of
21layer-switch keys to correct mistakes.
7 22
8## Default layer 23## Default layer
9 24
@@ -11,20 +26,97 @@ more details on the principles that went into the layout.
11 26
12([KLE](http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5)) 27([KLE](http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5))
13 28
29* The alpha keys are a standard QWERTY layout, no funny business there.
30
31* Tab and Backspace are in familiar locations from my row-staggered boards
32(almost all of which use HHKB-style split backspace).
33
34* Likewise, the Ctrl key is in the same place as on my row-staggered boards
35(where I've been remapping Caps Lock as Ctrl since before even using QMK).
36
37* There are two Shift keys, because I do use Right Shift on occasion (even
38though I'm predominately a Left Shift-er).
39
40* Lower and Raise layer-switch keys are below the left and right thumb,
41respectively, when resting my fingers on the home row.
42
43* Space and Enter are on the big thumb keys so they're easy to press.
44
45* Alt is on the left so I can navigate back (Alt+Raise+H) and forward
46(Alt+Raise+L) without having to uncomfortably hit two thumb keys on the same
47half. This puts Super on the right by the process of elimination.
48
49* Escape shares a mod-tap key with Ctrl, which is convenient for Vim, but not
50something I'm totally in love with, as even after tweaking `TAPPING_TERM` I
51still get occasional spurious Esc taps. (I might move Esc up a key and put Tab
52on a layer, but that'd take some getting used to....)
53
14## Lower layer 54## Lower layer
15 55
16![Lower layer layout](https://i.imgur.com/rDlSmrA.png) 56![Lower layer layout](https://i.imgur.com/rDlSmrA.png)
17 57
18([KLE](http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0)) 58([KLE](http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0))
19 59
60* This could also be called the "symbol layer".
61
62* Shifted numbers are bound in their usual positions on the top row.
63
64* Hyphen/Underscore and Equals/Plus are in the right index- and middle-finger
65columns for easy reach. They share the same relative position as on a
66row-staggered keyboard, and the shifted versions are physically above the
67unshifted versions as a mnemonic device.
68
69* Brackets and braces are placed below the parens for easy recall. Once again,
70the shifted versions are on the home row and the unshifted versions are on the
71bottom row.
72
73* Forward Slash/Pipe and Backtick/Tilde fill out the remaining positions on the
74right half, with the same relative positions as on a row-staggered HHKB layout.
75And yup, the shifted versions are above the unshifted versions.
76
77* Caps Lock is bound in the same position as on an HHKB, for lack of an obvious
78better location.
79
80* Some extra keys are placed on the bottom row of the left half, ensuring every
81key on a TKL has a binding.
82
83* The left-half home row is reversed for future use. (It's free real estate.)
84
20## Raise layer 85## Raise layer
21 86
22![Raise layer layout](https://i.imgur.com/cVoKygg.png) 87![Raise layer layout](https://i.imgur.com/cVoKygg.png)
23 88
24([KLE](http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7)) 89([KLE](http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7))
25 90
91* This could also be called the "number layer".
92
93* Unshifted numbers are bound in their usual positions on the top row.
94
95* Arrow keys are on VIM-style HJKL keys.
96
97* Home/End and Page Up/Page Down are in the same column as the arrow keys, but
98translated down one row. (This means that the comma and period keys are not
99bound on the number layer, which makes data entry a bit funky. I might add a
100dedicated numpad layer to compensate.)
101
102* Function keys F1–F10 take up most of remaining space on the left half, with
103F11 and F12 spilling over to the right half. (This puts the most used function
104keys (F1–F5) on the home row.)
105
106* Insert and Delete are on the rightmost column, because there didn't seem to
107be a better place to put them.
108
26## Adjust layer 109## Adjust layer
27 110
28![Adjust layer layout](https://i.imgur.com/LEHM4DU.png) 111![Adjust layer layout](https://i.imgur.com/LEHM4DU.png)
29 112
30([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee)) 113([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee))
114
115* Media keys are centered around the ESDF cluster, just like I arrange them on
116row-staggered keyboards. (It's even more sensible with columnar stagger.)
117
118* The navigation keys are replaced by RGB controls. Again, this mirrors the
119positioning I use on my row-staggered keyboards.
120
121* Finally, reset keys live at the top-left corner of the right half where it's
122reasonably hard to press them by accident.
diff --git a/keyboards/dmqdesign/spin/config.h b/keyboards/dmqdesign/spin/config.h
new file mode 100644
index 000000000..63a3aa94b
--- /dev/null
+++ b/keyboards/dmqdesign/spin/config.h
@@ -0,0 +1,58 @@
1/*
2Copyright 2019-2020 DMQ Design
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xA455
24#define PRODUCT_ID 0x0001
25#define DEVICE_VER 0x0001
26#define MANUFACTURER DMQ Design
27#define PRODUCT SPIN
28#define DESCRIPTION The SPIN Macro Pad is a 12 key Macro Pad by DMQ Design with 3 rotary encoders, inspired by the Plaid & RoMac.
29
30/* key matrix size */
31#define MATRIX_ROWS 3
32#define MATRIX_COLS 5
33//Matrix is 3x5 instead of 3x4, as the 3 encoders are wired into the matrix
34
35#define MATRIX_ROW_PINS { F0, F1, F4 }
36#define MATRIX_COL_PINS { F5, F6, F7, C7, C6 }
37#define UNUSED_PINS { D5, D2, D1, D0, B7, B3, B2, B0, E6 }
38
39/* COL2ROW, ROW2COL*/
40#define DIODE_DIRECTION COL2ROW
41
42//rotary encoder setup
43#define ENCODERS_PAD_A { B6, B4, D6 }
44#define ENCODERS_PAD_B { B5, D7, D4 }
45#define ENCODER_RESOLUTION 4
46
47//Data pin for the 3 RGB LEDs
48#define RGB_DI_PIN D3
49//Number of RGB LEDs
50#define RGBLED_NUM 3
51
52/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
53#define DEBOUNCE 5
54
55/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
56#define LOCKING_SUPPORT_ENABLE
57/* Locking resynchronize hack */
58#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/dmqdesign/spin/info.json b/keyboards/dmqdesign/spin/info.json
new file mode 100644
index 000000000..032ff3990
--- /dev/null
+++ b/keyboards/dmqdesign/spin/info.json
@@ -0,0 +1,28 @@
1{
2 "keyboard_name": "SPIN",
3 "url": "https://www.DMQdesign.com",
4 "maintainer": "Quarren42",
5 "width": 4.5,
6 "height": 4,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3.5, "y":0},
14 {"x":0, "y":1},
15 {"x":1, "y":1},
16 {"x":2, "y":1},
17 {"x":3.5, "y":1.5},
18 {"x":0, "y":2},
19 {"x":1, "y":2},
20 {"x":2, "y":2},
21 {"x":3.5, "y":3},
22 {"x":0, "y":3},
23 {"x":1, "y":3},
24 {"x":2, "y":3}
25 ]
26 }
27 }
28}
diff --git a/keyboards/dmqdesign/spin/keymaps/default/config.h b/keyboards/dmqdesign/spin/keymaps/default/config.h
new file mode 100644
index 000000000..a6d4ee431
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/default/config.h
@@ -0,0 +1,21 @@
1/* Copyright 2019-2020 DMQ Design
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
17#pragma once
18
19#define RGBLIGHT_HUE_STEP 8
20
21// place overrides here
diff --git a/keyboards/dmqdesign/spin/keymaps/default/keymap.c b/keyboards/dmqdesign/spin/keymaps/default/keymap.c
new file mode 100644
index 000000000..0b5e6bd0b
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
1/* Copyright 2019-2020 DMQ Design
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT(/* Base */
20 KC_7, KC_8, KC_9, KC_TRNS,
21 KC_4, KC_5, KC_6, KC_TRNS,
22 KC_1, KC_2, KC_3, KC_TRNS,
23 KC_0, RGB_TOG, KC_ENTER
24 ),
25};
26
27void encoder_update_user(uint8_t index, bool clockwise) {
28 if (index == 0) { /* First encoder */
29 if (clockwise) {
30 rgblight_increase_hue(); //Cycle through the RGB hue
31 } else {
32 rgblight_decrease_hue();
33 }
34 } else if (index == 1) { /* Second encoder */
35 if (clockwise) {
36 tap_code(KC_VOLU); //Example of using tap_code which lets you use keycodes outside of the keymap
37 } else {
38 tap_code(KC_VOLD);
39 }
40 } else if (index == 2) { /* Third encoder */
41 if (clockwise) {
42 rgblight_increase_val(); //Change brightness on the RGB LEDs
43 } else {
44 rgblight_decrease_val();
45 }
46 }
47}
diff --git a/keyboards/dmqdesign/spin/keymaps/default/readme.md b/keyboards/dmqdesign/spin/keymaps/default/readme.md
new file mode 100644
index 000000000..384b1a7d8
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for the SPIN Macro Pad, it includes basic encoder & rgb functionality. \ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/encoderlayers/config.h b/keyboards/dmqdesign/spin/keymaps/encoderlayers/config.h
new file mode 100644
index 000000000..feedd68eb
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/encoderlayers/config.h
@@ -0,0 +1,23 @@
1/* Copyright 2019-2020 DMQ Design
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
17#pragma once
18
19#define RGBLIGHT_EFFECT_RAINBOW_MOOD
20#define RGBLIGHT_HUE_STEP 8
21#define MIDI_ENABLE_STRICT 1
22#define MIDI_ADVANCED
23
diff --git a/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c b/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c
new file mode 100644
index 000000000..cb2a21f55
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/encoderlayers/keymap.c
@@ -0,0 +1,151 @@
1/* Copyright 2019-2020 DMQ Design
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#include "midi.h"
18#include "qmk_midi.h"
19
20enum layers
21{
22 _BL,
23 _FL,
24 _TL
25};
26
27uint8_t currentLayer;
28
29//The below layers are intentionally empty in order to give a good starting point for how to configure multiple layers.
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 [_BL] = LAYOUT(/* Base */
32 KC_KP_7, KC_KP_8, KC_KP_9, TO(_BL),
33 KC_KP_4, KC_KP_5, KC_KP_6, TO(_FL),
34 KC_KP_1, KC_KP_2, KC_KP_3, TO(_TL),
35 KC_KP_0, RGB_TOG, RGB_MOD
36 ),
37
38 [_FL] = LAYOUT(/* Base */
39 KC_NO, KC_NO, KC_NO, KC_TRNS,
40 KC_NO, KC_NO, KC_NO, KC_TRNS,
41 KC_NO, KC_NO, KC_NO, KC_TRNS,
42 KC_MS_BTN1, KC_NO, KC_MS_BTN2
43 ),
44
45 [_TL] = LAYOUT(/* Base */
46 KC_NO, KC_NO, KC_NO, KC_TRNS,
47 KC_NO, KC_NO, KC_NO, KC_TRNS,
48 KC_NO, KC_NO, KC_NO, KC_TRNS,
49 KC_NO, KC_NO, KC_NO
50 )
51};
52
53void encoder_update_user(uint8_t index, bool clockwise) {
54 if (index == 0) { /* First encoder */
55 switch (currentLayer) { //break each encoder update into a switch statement for the current layer
56 case _BL:
57 if (clockwise) {
58 rgblight_increase_hue();
59 } else {
60 rgblight_decrease_hue();
61 }
62 break;
63 case _FL:
64 if (clockwise) {
65 midi_send_cc(&midi_device, 0, 0x14, 1);
66 } else {
67 midi_send_cc(&midi_device, 0, 0x15, 1);
68 }
69 break;
70 case _TL:
71 if (clockwise) {
72 midi_send_cc(&midi_device, 0, 0x1A, 1);
73 } else {
74 midi_send_cc(&midi_device, 0, 0x1B, 1);
75 }
76 break;
77 }
78 } else if (index == 1) { /* Second encoder */
79 switch (currentLayer) {
80 case _BL:
81 if (clockwise) {
82 tap_code(KC_VOLU);
83 } else {
84 tap_code(KC_VOLD);
85 }
86 break;
87 case _FL:
88 if (clockwise) {
89 midi_send_cc(&midi_device, 0, 0x16, 1);
90 } else {
91 midi_send_cc(&midi_device, 0, 0x17, 1);
92 }
93 break;
94 case _TL:
95 if (clockwise) {
96 midi_send_cc(&midi_device, 0, 0x1C, 1);
97 } else {
98 midi_send_cc(&midi_device, 0, 0x1D, 1);
99 }
100 break;
101 }
102 } else if (index == 2) { /* Third encoder */
103 switch (currentLayer) {
104 case _BL:
105 if (clockwise) {
106 rgblight_increase_val();
107 } else {
108 rgblight_decrease_val();
109 }
110 break;
111 case _FL:
112 if (clockwise) {
113 midi_send_cc(&midi_device, 0, 0x18, 1);
114 } else {
115 midi_send_cc(&midi_device, 0, 0x19, 1);
116 }
117 break;
118 case _TL:
119 if (clockwise) {
120 midi_send_cc(&midi_device, 0, 0x1E, 1);
121 } else {
122 midi_send_cc(&midi_device, 0, 0x1F, 1);
123 }
124 break;
125 }
126 }
127}
128
129layer_state_t layer_state_set_user(layer_state_t state) { //This will run every time the layer is updated
130 currentLayer = get_highest_layer(state);
131
132 switch (currentLayer) {
133 case _BL:
134 setrgb(RGB_WHITE, &led[0]); //Set the top LED to white for the bottom layer
135 setrgb(0, 0, 0, &led[1]);
136 setrgb(0, 0, 0, &led[2]);
137 break;
138 case _FL:
139 setrgb(0, 0, 0, &led[0]); //Set the middle LED to white for the middle layer
140 setrgb(RGB_WHITE, &led[1]);
141 setrgb(0, 0, 0, &led[2]);
142 break;
143 case _TL:
144 setrgb(0, 0, 0, &led[0]);
145 setrgb(0, 0, 0, &led[1]);
146 setrgb(RGB_WHITE, &led[2]); //Set the bottom LED to white for the top layer
147 break;
148 }
149 rgblight_set();
150 return state;
151}
diff --git a/keyboards/dmqdesign/spin/keymaps/encoderlayers/readme.md b/keyboards/dmqdesign/spin/keymaps/encoderlayers/readme.md
new file mode 100644
index 000000000..256fb16d4
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/encoderlayers/readme.md
@@ -0,0 +1 @@
# This keymap is intended to demonstrate how to implement different encoder functions dependent on layer, and on how to implement MIDI control with encoders. \ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/readme.md b/keyboards/dmqdesign/spin/readme.md
new file mode 100644
index 000000000..8f856a81d
--- /dev/null
+++ b/keyboards/dmqdesign/spin/readme.md
@@ -0,0 +1,17 @@
1# SPIN
2
3![SPIN](https://i.imgur.com/5oYg1WD.jpg)
4
5The SPIN Macro Pad is a USB-C, hotswappable Macro Pad with 3 encoders designed by Nick from DMQ Design.
6
7* Keyboard Maintainer: [Nicholas Junker](https://github.com/Quarren42)
8* Hardware Supported: SPIN Macro Pad PCB/kit
9* Hardware Availability: The macro pad is available at [DMQdesign.com](www.dmqdesign.com)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make dmqdesign/spin:default
14
15I have two example keymaps available, both the default and the encoderlayers keymap which demonstrates using different encoder functions based on the layer chosen.
16
17See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/dmqdesign/spin/rules.mk b/keyboards/dmqdesign/spin/rules.mk
new file mode 100644
index 000000000..f8dc59afa
--- /dev/null
+++ b/keyboards/dmqdesign/spin/rules.mk
@@ -0,0 +1,34 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu
13
14# Build Options
15# change yes to no to disable
16#
17BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = yes # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = no # Console for debug
21COMMAND_ENABLE = no # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = yes # USB Nkey Rollover
26BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
27RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
28MIDI_ENABLE = yes # MIDI support
29UNICODE_ENABLE = no # Unicode
30BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
31AUDIO_ENABLE = no # Audio output on port C6
32FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
33HD44780_ENABLE = no # Enable support for HD44780 based LCDs
34ENCODER_ENABLE = yes # Enable rotary encoder support
diff --git a/keyboards/dmqdesign/spin/spin.c b/keyboards/dmqdesign/spin/spin.c
new file mode 100644
index 000000000..fe3f267d1
--- /dev/null
+++ b/keyboards/dmqdesign/spin/spin.c
@@ -0,0 +1,16 @@
1/* Copyright 2019-2020 DMQ Design
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 "spin.h"
diff --git a/keyboards/dmqdesign/spin/spin.h b/keyboards/dmqdesign/spin/spin.h
new file mode 100644
index 000000000..d60dbe82f
--- /dev/null
+++ b/keyboards/dmqdesign/spin/spin.h
@@ -0,0 +1,29 @@
1/* Copyright 2019-2020 DMQ Design
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#pragma once
17
18#include "quantum.h"
19
20#define LAYOUT( \
21 k00, k01, k02, k03, \
22 k10, k11, k12, k13, \
23 k20, k21, k22, k23, \
24 k30, k31, k32 \
25) { \
26 {k00, k10, k20, k30, k23}, \
27 {k01, k11, k21, k31, k13}, \
28 {k02, k12, k22, k32, k03} \
29}
diff --git a/keyboards/ergodash/rev1/keymaps/333fred/config.h b/keyboards/ergodash/rev1/keymaps/333fred/config.h
index e48702fd6..862f306d0 100644
--- a/keyboards/ergodash/rev1/keymaps/333fred/config.h
+++ b/keyboards/ergodash/rev1/keymaps/333fred/config.h
@@ -1,7 +1,6 @@
1#pragma once 1#pragma once
2 2
3#include QMK_KEYBOARD_CONFIG_H 3#include QMK_KEYBOARD_CONFIG_H
4#include "333fred_config.h"
5 4
6#define USE_SERIAL 5#define USE_SERIAL
7#define MASTER_LEFT 6#define MASTER_LEFT
diff --git a/keyboards/ergodash/rev1/keymaps/333fred/rules.mk b/keyboards/ergodash/rev1/keymaps/333fred/rules.mk
index 9d8ff37e1..2a91ad3ba 100644
--- a/keyboards/ergodash/rev1/keymaps/333fred/rules.mk
+++ b/keyboards/ergodash/rev1/keymaps/333fred/rules.mk
@@ -1,7 +1,5 @@
1BACKLIGHT_ENABLE = no 1BACKLIGHT_ENABLE = no
2RGBLIGHT_ENABLE = yes 2RGBLIGHT_ENABLE = yes
3AUDIO_ENABLE = no 3AUDIO_ENABLE = no
4NKRO_ENABLE = yes
5KEY_LOCK_ENABLE = yes 4KEY_LOCK_ENABLE = yes
6TAP_DANCE_ENABLE = yes
7CONSOLE_ENABLE = no 5CONSOLE_ENABLE = no
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h
index 10b969326..319013208 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h
@@ -1,7 +1,5 @@
1#pragma once 1#pragma once
2 2
3#include "333fred_config.h"
4
5#define USE_SERIAL 3#define USE_SERIAL
6#define EE_HANDS 4#define EE_HANDS
7 5
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
index bc61579de..d8ac1910b 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
@@ -1,12 +1,6 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2#include "333fred.h" 2#include "333fred.h"
3 3
4enum custom_macros {
5 DLEFT,
6 DRIGHT,
7 PSCREEN_APP
8};
9
10const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
11 5
12 [BASE] = LAYOUT_5x6( 6 [BASE] = LAYOUT_5x6(
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk
index 79ef33e7c..6d2e27cb4 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk
@@ -1,7 +1,3 @@
1
2NKRO_ENABLE = yes
3KEY_LOCK_ENABLE = yes 1KEY_LOCK_ENABLE = yes
4TAP_DANCE_ENABLE = yes
5CONSOLE_ENABLE = no 2CONSOLE_ENABLE = no
6PERMISSIVE_HOLD = yes
7EXTRAFLAGS += -flto 3EXTRAFLAGS += -flto
diff --git a/keyboards/handwired/p1800fl/config.h b/keyboards/handwired/p1800fl/config.h
new file mode 100644
index 000000000..c2022a6b2
--- /dev/null
+++ b/keyboards/handwired/p1800fl/config.h
@@ -0,0 +1,72 @@
1/*
2Copyright 2020 marhalloweenvt
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x3EAE
25#define DEVICE_VER 0x0001
26#define MANUFACTURER marhalloweenvt
27#define PRODUCT p1800fl
28#define DESCRIPTION A compact 1800 layout keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 6
32#define MATRIX_COLS 15
33
34/*
35 * Keyboard Matrix Assignments
36 *
37 * Change this to how you wired your keyboard
38 * COLS: AVR pins used for columns, left to right
39 * ROWS: AVR pins used for rows, top to bottom
40 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
41 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
42 *
43 */
44#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6, D4 }
45#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3, D0, D1, D2}
46#define UNUSED_PINS
47
48/* COL2ROW, ROW2COL*/
49#define DIODE_DIRECTION COL2ROW
50
51#define BACKLIGHT_PIN B7
52#define BACKLIGHT_BREATHING
53#define BACKLIGHT_LEVELS 5
54
55/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
56#define DEBOUNCE 5
57
58/* define if matrix has ghost (lacks anti-ghosting diodes) */
59//#define MATRIX_HAS_GHOST
60
61/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
62#define LOCKING_SUPPORT_ENABLE
63/* Locking resynchronize hack */
64#define LOCKING_RESYNC_ENABLE
65
66/* disable these deprecated features by default */
67#define NO_ACTION_MACRO
68#define NO_ACTION_FUNCTION
69
70/* QMK DFU key configuration */
71#define QMK_ESC_OUTPUT C7 // usually COL
72#define QMK_ESC_INPUT B6 // usually ROW \ No newline at end of file
diff --git a/keyboards/handwired/p1800fl/info.json b/keyboards/handwired/p1800fl/info.json
new file mode 100644
index 000000000..1de6c2cdb
--- /dev/null
+++ b/keyboards/handwired/p1800fl/info.json
@@ -0,0 +1,99 @@
1{
2 "keyboard_name": "p1800fl",
3 "url": "",
4 "maintainer": "marhalloweenvt",
5 "width": 19.5,
6 "height": 5.25,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label":"Esc", "x":0, "y":0
11 {"label":"!", "x":1, "y":0
12 {"label":"@", "x":2, "y":0
13 {"label":"#", "x":3, "y":0
14 {"label":"$", "x":4, "y":0
15 {"label":"%", "x":5, "y":0
16 {"label":"^", "x":6, "y":0
17 {"label":"&", "x":7, "y":0
18 {"label":"*", "x":8, "y":0
19 {"label":"(", "x":9, "y":0
20 {"label":")", "x":10, "y":0
21 {"label":"_", "x":11, "y":0
22 {"label":"+", "x":12, "y":0
23 {"label":"Backspace", "x":13, "y":0
24 {"label":"Backspace", "x":14, "y":0
25 {"label":"Num Lock", "x":15.5, "y":0
26 {"label":"/", "x":16.5, "y":0
27 {"label":"*", "x":17.5, "y":0
28 {"label":"-", "x":18.5, "y":0
29 {"label":"Tab", "x":0, "y":1, "w":1.5
30 {"label":"Q", "x":1.5, "y":1
31 {"label":"W", "x":2.5, "y":1
32 {"label":"E", "x":3.5, "y":1
33 {"label":"R", "x":4.5, "y":1
34 {"label":"T", "x":5.5, "y":1
35 {"label":"Y", "x":6.5, "y":1
36 {"label":"U", "x":7.5, "y":1
37 {"label":"I", "x":8.5, "y":1
38 {"label":"O", "x":9.5, "y":1
39 {"label":"P", "x":10.5, "y":1
40 {"label":"{", "x":11.5, "y":1
41 {"label":"}", "x":12.5, "y":1
42 {"label":"|", "x":13.5, "y":1, "w":1.5
43 {"label":"7", "x":15.5, "y":1
44 {"label":"8", "x":16.5, "y":1
45 {"label":"9", "x":17.5, "y":1
46 {"label":"+", "x":18.5, "y":1
47 {"label":"Caps Lock", "x":0, "y":2, "w":1.75
48 {"label":"A", "x":1.75, "y":2
49 {"label":"S", "x":2.75, "y":2
50 {"label":"D", "x":3.75, "y":2
51 {"label":"F", "x":4.75, "y":2
52 {"label":"G", "x":5.75, "y":2
53 {"label":"H", "x":6.75, "y":2
54 {"label":"J", "x":7.75, "y":2
55 {"label":"K", "x":8.75, "y":2
56 {"label":"L", "x":9.75, "y":2
57 {"label":":", "x":10.75, "y":2
58 {"label":"\"", "x":11.75, "y":2
59 {"label":"Enter", "x":12.75, "y":2
60 {"label":"Enter", "x":13.75, "y":2, "w":1.25
61 {"label":"4", "x":15.5, "y":2
62 {"label":"5", "x":16.5, "y":2
63 {"label":"6", "x":17.5, "y":2
64 {"label":"+", "x":18.5, "y":2
65 {"label":"Shift", "x":0, "y":3, "w":1.25
66 {"label":"Shift", "x":1.25, "y":3
67 {"label":"Z", "x":2.25, "y":3
68 {"label":"X", "x":3.25, "y":3
69 {"label":"C", "x":4.25, "y":3
70 {"label":"V", "x":5.25, "y":3
71 {"label":"B", "x":6.25, "y":3
72 {"label":"N", "x":7.25, "y":3
73 {"label":"M", "x":8.25, "y":3
74 {"label":"<", "x":9.25, "y":3
75 {"label":">", "x":10.25, "y":3
76 {"label":"?", "x":11.25, "y":3
77 {"label":"Shift", "x":12.25, "y":3, "w":1.75
78 {"label":"1", "x":15.5, "y":3
79 {"label":"2", "x":16.5, "y":3
80 {"label":"3", "x":17.5, "y":3
81 {"label":"Enter", "x":18.5, "y":3
82 {"label":"Up", "x":14.25, "y":3.25
83 {"label":"Ctrl", "x":0, "y":4, "w":1.25
84 {"label":"Win", "x":1.25, "y":4, "w":1.25
85 {"label":"Alt", "x":2.5, "y":4, "w":1.25
86 {"label":"6.25x", "x":3.75, "y":4, "w":6.25
87 {"label":"Ctrl", "x":10, "y":4
88 {"label":"Win", "x":11, "y":4
89 {"label":"Alt", "x":12, "y":4
90 {"label":"0", "x":16.5, "y":4
91 {"label":".", "x":17.5, "y":4
92 {"label":"Enter", "x":18.5, "y":4
93 {"label":"Left", "x":13.25, "y":4.25
94 {"label":"Down", "x":14.25, "y":4.25
95 {"label":"Right", "x":15.25, "y":4.25}
96 ]
97 }
98 }
99} \ No newline at end of file
diff --git a/keyboards/handwired/p1800fl/keymaps/default/keymap.c b/keyboards/handwired/p1800fl/keymaps/default/keymap.c
new file mode 100644
index 000000000..03b6a1efd
--- /dev/null
+++ b/keyboards/handwired/p1800fl/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
1/* Copyright 2020 marhalloweenvt
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
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN
22};
23
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 /* Base */
27 [_BASE] = LAYOUT(
28 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL,
29 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
30 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
31 KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
32 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
33 ),
34 [_FN] = LAYOUT(
35 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, BL_TOGG, BL_INC, KC_PAST, RESET,
36 _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, BL_BRTG, BL_DEC, _______, EEP_RST,
37 _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______
40 )
41};
diff --git a/keyboards/handwired/p1800fl/keymaps/default/readme.md b/keyboards/handwired/p1800fl/keymaps/default/readme.md
new file mode 100644
index 000000000..268d39922
--- /dev/null
+++ b/keyboards/handwired/p1800fl/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for p1800fl
diff --git a/keyboards/handwired/p1800fl/p1800fl.c b/keyboards/handwired/p1800fl/p1800fl.c
new file mode 100644
index 000000000..e0fc16a5e
--- /dev/null
+++ b/keyboards/handwired/p1800fl/p1800fl.c
@@ -0,0 +1,28 @@
1/* Copyright 2020 marhalloweenvt
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
17#include "p1800fl.h"
18
19bool led_update_kb(led_t led_state) {
20 bool res = led_update_user(led_state);
21 if(res) {
22 writePin(D3, led_state.num_lock);
23 writePin(D5, led_state.caps_lock);
24 writePin(C6, led_state.scroll_lock);
25 }
26 return res;
27}
28
diff --git a/keyboards/handwired/p1800fl/p1800fl.h b/keyboards/handwired/p1800fl/p1800fl.h
new file mode 100644
index 000000000..7b8f3dcff
--- /dev/null
+++ b/keyboards/handwired/p1800fl/p1800fl.h
@@ -0,0 +1,42 @@
1/* Copyright 2020 marhalloweenvt
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
17#pragma once
18
19#include "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define LAYOUT( \
30 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k50, k51, k52, k53, \
31 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k54, k55, k56, k57, \
32 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k58, k59, k5a, k5b, \
33 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k5c, k5d, k5e, k4e, \
34 k40, k41, k42, k43, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
35) { \
36 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
37 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, KC_NO }, \
38 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \
39 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, KC_NO }, \
40 { k40, k41, k42, k43, KC_NO, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e }, \
41 { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5e }, \
42}
diff --git a/keyboards/handwired/p1800fl/readme.md b/keyboards/handwired/p1800fl/readme.md
new file mode 100644
index 000000000..545bd691a
--- /dev/null
+++ b/keyboards/handwired/p1800fl/readme.md
@@ -0,0 +1,15 @@
1# p1800fl
2
3![p1800fl](https://i.imgur.com/GQd28rN.jpg)
4
5A 1800 Frow-less keyboard project from our local makers.
6
7* Keyboard Maintainer: [marhalloweenvt](https://github.com/marhalloweenvt)
8* Hardware Supported: p1800fl
9* Hardware Availability: p1800fl
10
11Make example for this keyboard (after setting up your build environment):
12
13 make handwired/p1800fl:default
14
15See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/p1800fl/rules.mk b/keyboards/handwired/p1800fl/rules.mk
new file mode 100644
index 000000000..b8601f0f1
--- /dev/null
+++ b/keyboards/handwired/p1800fl/rules.mk
@@ -0,0 +1,32 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = qmk-dfu
13
14# Build Options
15# change yes to no to disable
16#
17BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = yes # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = yes # Console for debug
21COMMAND_ENABLE = yes # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = yes # USB Nkey Rollover
26BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
27RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
28MIDI_ENABLE = no # MIDI support
29BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
30AUDIO_ENABLE = no # Audio output on port C6
31FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
32HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/handwired/xealousbrown/README.md b/keyboards/handwired/xealousbrown/README.md
index e6092ebb0..970f9444c 100644
--- a/keyboards/handwired/xealousbrown/README.md
+++ b/keyboards/handwired/xealousbrown/README.md
@@ -7,5 +7,11 @@ https://sites.google.com/site/xaelous/keyboards/handwired-keyboard
7 7
8Make example for this keyboard (after setting up your build environment): 8Make example for this keyboard (after setting up your build environment):
9 9
10 make handwired/xealous-brown:default 10 make handwired/xealousbrown:default
11 11
12
13The brief list of speedhacks to make this keyboard blazing fast:
141) bit-bash implementation of scanning rows, columns. Very short delay between pin waiting.
152) Compiling with a few extra flags
163) Eager-per-key Debouncing algorithm (no 5ms delay before message is sent)
174) 1000hz polling
diff --git a/keyboards/handwired/xealousbrown/config.h b/keyboards/handwired/xealousbrown/config.h
index 17aa6c94e..bf15637a4 100644
--- a/keyboards/handwired/xealousbrown/config.h
+++ b/keyboards/handwired/xealousbrown/config.h
@@ -29,7 +29,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
29/* key matrix size */ 29/* key matrix size */
30#define MATRIX_ROWS 5 30#define MATRIX_ROWS 5
31#define MATRIX_COLS 13 31#define MATRIX_COLS 13
32 32#define DEBOUNCE 10
33#define USB_POLLING_INTERVAL_MS 1
34/* layer optimization */
35#define LAYER_STATE_8BIT
33/* 36/*
34 * Keyboard Matrix Assignments 37 * Keyboard Matrix Assignments
35 * 38 *
diff --git a/keyboards/handwired/xealousbrown/keymaps/default/keymap.c b/keyboards/handwired/xealousbrown/keymaps/default/keymap.c
index 6597c5667..908e54133 100644
--- a/keyboards/handwired/xealousbrown/keymaps/default/keymap.c
+++ b/keyboards/handwired/xealousbrown/keymaps/default/keymap.c
@@ -10,8 +10,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 ), 10 ),
11 [1] = LAYOUT( /* FN_Layer */ 11 [1] = LAYOUT( /* FN_Layer */
12 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ 12 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
13 KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK,KC_PAUS,\ 13 KC_CAPS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK,KC_PAUS,\
14 KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, KC_TRNS, \ 14 KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_HOME, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, KC_TRNS, \
15 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,KC_TRNS, 15 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS,KC_TRNS,
16 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL \ 16 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL \
17 ) 17 )
diff --git a/keyboards/handwired/xealousbrown/matrix.c b/keyboards/handwired/xealousbrown/matrix.c
new file mode 100644
index 000000000..cce0d06eb
--- /dev/null
+++ b/keyboards/handwired/xealousbrown/matrix.c
@@ -0,0 +1,112 @@
1/*
2Copyright 2019 Alex Ong
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include <stdint.h>
18#include <stdbool.h>
19#include "wait.h"
20#include "util.h"
21#include "matrix.h"
22#include "debounce.h"
23#include "quantum.h"
24
25/* matrix state(1:on, 0:off) */
26extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
27extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
28
29// matrix code
30// super fast read_cols code.
31static matrix_row_t read_cols(void) {
32 return (PINC & (1 << 6) ? 0 : (1UL << 0)) |
33 (PIND & (1 << 7) ? 0 : (1UL << 1)) |
34 (PINE & (1 << 6) ? 0 : (1UL << 2)) |
35 (PINB & (1 << 4) ? 0 : (1UL << 3)) |
36 (PINB & (1 << 5) ? 0 : (1UL << 4)) |
37 (PINB & (1 << 6) ? 0 : (1UL << 5)) |
38 (PINB & (1 << 2) ? 0 : (1UL << 6)) |
39 (PINB & (1 << 3) ? 0 : (1UL << 7)) |
40 (PINB & (1 << 1) ? 0 : (1UL << 8)) |
41 (PINF & (1 << 7) ? 0 : (1UL << 9)) |
42 (PINF & (1 << 6) ? 0 : (1UL << 10)) |
43 (PINF & (1 << 5) ? 0 : (1UL << 11)) |
44 (PINF & (1 << 4) ? 0 : (1UL << 12));
45}
46
47static void unselect_rows(void) {
48 DDRD &= ~0b00011111;
49 PORTD &= ~0b00011111;
50}
51
52static void select_row(uint8_t row) {
53 switch (row) {
54 case 0:
55 DDRD |= (1 << 3);
56 PORTD &= ~(1 << 3);
57 break;
58 case 1:
59 DDRD |= (1 << 2);
60 PORTD &= ~(1 << 2);
61 break;
62 case 2:
63 DDRD |= (1 << 1);
64 PORTD &= ~(1 << 1);
65 break;
66 case 3:
67 DDRD |= (1 << 0);
68 PORTD &= ~(1 << 0);
69 break;
70 case 4:
71 DDRD |= (1 << 4);
72 PORTD &= ~(1 << 4);
73 break;
74 }
75}
76
77static void init_pins(void) {
78 DDRC &= ~(1 << 6);
79 PORTC |= (1 << 6);
80 DDRD &= ~(1 << 7);
81 PORTD |= (1 << 7);
82 DDRE &= ~(1 << 6);
83 PORTE |= (1 << 6);
84 DDRB &= ~(1 << 4 | 1 << 5 | 1 << 6 | 1 << 2 | 1 << 3 | 1 << 1);
85 PORTB |= (1 << 4 | 1 << 5 | 1 << 6 | 1 << 2 | 1 << 3 | 1 << 1);
86 DDRF &= ~(1 << 7 | 1 << 6 | 1 << 5 | 1 << 4);
87 PORTF |= (1 << 7 | 1 << 6 | 1 << 5 | 1 << 4);
88}
89
90// Only need to init the pins. Debounce / raw matrix are initialized already for us.
91void matrix_init_custom(void) {
92 // initialize key pins
93 init_pins();
94}
95
96// Only need to scan the result into current_matrix, and return changed.
97uint8_t matrix_scan_custom(matrix_row_t current_matrix[]) {
98 bool changed = false;
99
100 // Set row, read cols
101 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
102 select_row(current_row);
103 asm volatile("nop");
104 asm volatile("nop");
105 matrix_row_t cols = read_cols();
106 changed |= (current_matrix[current_row] != cols);
107 current_matrix[current_row] = cols;
108 unselect_rows();
109 }
110
111 return changed;
112}
diff --git a/keyboards/handwired/xealousbrown/rules.mk b/keyboards/handwired/xealousbrown/rules.mk
index c346ef6c9..887663580 100644
--- a/keyboards/handwired/xealousbrown/rules.mk
+++ b/keyboards/handwired/xealousbrown/rules.mk
@@ -14,17 +14,27 @@ BOOTLOADER = caterina
14# Build Options 14# Build Options
15# change yes to no to disable 15# change yes to no to disable
16# 16#
17BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) 17BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = no # Mouse keys(+4700) 18MOUSEKEY_ENABLE = no # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control(+450) 19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = yes # Console for debug(+400) 20CONSOLE_ENABLE = yes # Console for debug
21COMMAND_ENABLE = yes # Commands for debug and configuration 21COMMAND_ENABLE = yes # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = yes # USB Nkey Rollover 25NKRO_ENABLE = yes # USB Nkey Rollover
26BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default 26BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
27MIDI_ENABLE = no # MIDI controls 27MIDI_ENABLE = no # MIDI controls
28UNICODE_ENABLE = no # Unicode 28UNICODE_ENABLE = no # Unicode
29BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 29BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
30AUDIO_ENABLE = no # Audio output on port C6 30AUDIO_ENABLE = no # Audio output on port C6
31SPACE_CADET_ENABLE = no # Unneeded feature.
32
33
34# special sauce for this keyboard
35DEBOUNCE_TYPE = eager_pk # Debounce using eager_pk.
36CUSTOM_MATRIX = lite # Custom matrix that polls at 7000hz instead of a measly 2000hz.
37LTO_ENABLE = yes # smaller binary
38SRC += matrix.c
39
40# Also remember to open tmk's rules.mk and set compilation optimization to 3
diff --git a/keyboards/handwired/xealousbrown/xealousbrown.c b/keyboards/handwired/xealousbrown/xealousbrown.c
index 5c8e2fb18..39def8ade 100644
--- a/keyboards/handwired/xealousbrown/xealousbrown.c
+++ b/keyboards/handwired/xealousbrown/xealousbrown.c
@@ -6,3 +6,44 @@ void matrix_init_kb(void) {
6 6
7 matrix_init_user(); 7 matrix_init_user();
8} 8}
9
10
11
12#ifdef BENCHMARK_MATRIX
13# include "timer.h"
14# include <stdint.h>
15# include <stdbool.h>
16# include "wait.h"
17# include "util.h"
18# include "matrix.h"
19# include "quantum.h"
20
21static int scans = 0;
22static uint16_t last_print_out = 0;
23static int last_timer = 0;
24void matrix_scan_user(void) {
25 scans++;
26 uint16_t timer = timer_read();
27
28 if (timer != last_timer && timer != last_timer + 1) {
29 print("MS:\n");
30 print_dec(timer);
31 print("->");
32 print_dec(last_timer);
33 print("\n");
34 }
35
36 last_timer = timer;
37 if ((timer % 1000 == 0) && (timer != last_print_out)) {
38 print("Benchmark:");
39 print("\n");
40 print_dec(timer);
41 print("\n");
42 print_dec(scans);
43 print("\n");
44 print("-------");
45 scans = 0;
46 last_print_out = timer;
47 }
48}
49#endif
diff --git a/keyboards/id80/keymaps/via/keymap.c b/keyboards/id80/keymaps/via/keymap.c
new file mode 100644
index 000000000..686ce9ce7
--- /dev/null
+++ b/keyboards/id80/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
1/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
21 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27 [1] = LAYOUT(
28 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
32 _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
33 _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
34 ),
35 [2] = LAYOUT(
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______, _______, _______, _______, _______, _______
42 ),
43 [3] = LAYOUT(
44 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
46 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______
50 ),
51};
diff --git a/keyboards/id80/keymaps/via/rules.mk b/keyboards/id80/keymaps/via/rules.mk
new file mode 100644
index 000000000..ea9a831e1
--- /dev/null
+++ b/keyboards/id80/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1LINK_TIME_OPTIMIZATION_ENABLE = yes
2VIA_ENABLE = yes
diff --git a/keyboards/idb/idb_60/idb_60.c b/keyboards/idb/idb_60/idb_60.c
index d280f644b..18ce69043 100644
--- a/keyboards/idb/idb_60/idb_60.c
+++ b/keyboards/idb/idb_60/idb_60.c
@@ -1,11 +1,5 @@
1#include "idb_60.h" 1#include "idb_60.h"
2 2
3extern inline void _idb_60_caps_led_on(void);
4extern inline void _idb_60_esc_led_on(void);
5
6extern inline void _idb_60_caps_led_off(void);
7extern inline void _idb_60_esc_led_off(void);
8
9void keyboard_pre_init_kb(void) { 3void keyboard_pre_init_kb(void) {
10 setPinOutput(C4); 4 setPinOutput(C4);
11 setPinOutput(C5); 5 setPinOutput(C5);
diff --git a/keyboards/idb/idb_60/idb_60.h b/keyboards/idb/idb_60/idb_60.h
index c47d6b292..5d61ac464 100644
--- a/keyboards/idb/idb_60/idb_60.h
+++ b/keyboards/idb/idb_60/idb_60.h
@@ -3,21 +3,24 @@
3#include "quantum.h" 3#include "quantum.h"
4 4
5inline void _idb_60_caps_led_on(void) { 5inline void _idb_60_caps_led_on(void) {
6 writePinLow(C5); 6 writePinHigh(C5);
7} 7}
8 8
9inline void _idb_60_esc_led_on(void) { 9inline void _idb_60_fn_led_on(void) {
10 writePinLow(C4); 10 writePinHigh(C4);
11} 11}
12 12
13inline void _idb_60_caps_led_off(void) { 13inline void _idb_60_caps_led_off(void) {
14 writePinLow(C5); 14 writePinLow(C5);
15} 15}
16 16
17inline void _idb_60_esc_led_off(void) { 17inline void _idb_60_fn_led_off(void) {
18 writePinLow(C4); 18 writePinLow(C4);
19} 19}
20 20
21#define _idb_60_esc_led_on _idb_60_fn_led_on
22#define _idb_60_esc_led_off _idb_60_fn_led_off
23
21#define LAYOUT( \ 24#define LAYOUT( \
22 K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07,\ 25 K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07,\
23 K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36,\ 26 K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36,\
@@ -57,4 +60,3 @@ inline void _idb_60_esc_led_off(void) {
57 { K80, K81, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ 60 { K80, K81, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
58 { KC_NO, KC_NO, KC_NO, K93, KC_NO, K95, K96 } \ 61 { KC_NO, KC_NO, KC_NO, K93, KC_NO, K95, K96 } \
59} 62}
60
diff --git a/keyboards/idb/idb_60/keymaps/all_keys/keymap.c b/keyboards/idb/idb_60/keymaps/all_keys/keymap.c
index 9f2ef36a1..2edde98c2 100644
--- a/keyboards/idb/idb_60/keymaps/all_keys/keymap.c
+++ b/keyboards/idb/idb_60/keymaps/all_keys/keymap.c
@@ -37,10 +37,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37 37
38layer_state_t layer_state_set_user(layer_state_t state) { 38layer_state_t layer_state_set_user(layer_state_t state) {
39 if (layer_state_cmp(state, 1)) { 39 if (layer_state_cmp(state, 1)) {
40 _idb_60_esc_led_on(); 40 _idb_60_fn_led_on();
41 } else { 41 } else {
42 _idb_60_esc_led_off(); 42 _idb_60_fn_led_off();
43 } 43 }
44 44
45 return state; 45 return state;
46} \ No newline at end of file 46}
diff --git a/keyboards/idb/idb_60/keymaps/default/keymap.c b/keyboards/idb/idb_60/keymaps/default/keymap.c
index 22f208caa..1bf25867f 100644
--- a/keyboards/idb/idb_60/keymaps/default/keymap.c
+++ b/keyboards/idb/idb_60/keymaps/default/keymap.c
@@ -37,10 +37,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37 37
38layer_state_t layer_state_set_user(layer_state_t state) { 38layer_state_t layer_state_set_user(layer_state_t state) {
39 if (layer_state_cmp(state, 1)) { 39 if (layer_state_cmp(state, 1)) {
40 _idb_60_esc_led_on(); 40 _idb_60_fn_led_on();
41 } else { 41 } else {
42 _idb_60_esc_led_off(); 42 _idb_60_fn_led_off();
43 } 43 }
44 44
45 return state; 45 return state;
46} \ No newline at end of file 46}
diff --git a/keyboards/idb/idb_60/keymaps/pngu/keymap.c b/keyboards/idb/idb_60/keymaps/pngu/keymap.c
index de336e5fa..ac0ad10d3 100644
--- a/keyboards/idb/idb_60/keymaps/pngu/keymap.c
+++ b/keyboards/idb/idb_60/keymaps/pngu/keymap.c
@@ -6,8 +6,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, 6 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO,
7 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, 7 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
8 LT(2, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 8 LT(2, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
9 KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, 9 KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
10 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, MO(1) 10 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, KC_RGUI
11 ), 11 ),
12 [1] = LAYOUT( 12 [1] = LAYOUT(
13 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 13 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
@@ -30,10 +30,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 30
31layer_state_t layer_state_set_user(layer_state_t state) { 31layer_state_t layer_state_set_user(layer_state_t state) {
32 if (layer_state_cmp(state, 1)) { 32 if (layer_state_cmp(state, 1)) {
33 _idb_60_esc_led_on(); 33 _idb_60_fn_led_on();
34 } else { 34 } else {
35 _idb_60_esc_led_off(); 35 _idb_60_fn_led_off();
36 } 36 }
37 37
38 return state; 38 return state;
39} \ No newline at end of file 39}
diff --git a/keyboards/idb/idb_60/keymaps/via/keymap.c b/keyboards/idb/idb_60/keymaps/via/keymap.c
index 22f208caa..1bf25867f 100644
--- a/keyboards/idb/idb_60/keymaps/via/keymap.c
+++ b/keyboards/idb/idb_60/keymaps/via/keymap.c
@@ -37,10 +37,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37 37
38layer_state_t layer_state_set_user(layer_state_t state) { 38layer_state_t layer_state_set_user(layer_state_t state) {
39 if (layer_state_cmp(state, 1)) { 39 if (layer_state_cmp(state, 1)) {
40 _idb_60_esc_led_on(); 40 _idb_60_fn_led_on();
41 } else { 41 } else {
42 _idb_60_esc_led_off(); 42 _idb_60_fn_led_off();
43 } 43 }
44 44
45 return state; 45 return state;
46} \ No newline at end of file 46}
diff --git a/keyboards/idb/idb_60/readme.md b/keyboards/idb/idb_60/readme.md
index 13a4841b4..bd2f76ae6 100644
--- a/keyboards/idb/idb_60/readme.md
+++ b/keyboards/idb/idb_60/readme.md
@@ -2,9 +2,10 @@
2 2
3Firmware for the idb 60 PCB 3Firmware for the idb 60 PCB
4 4
5* Keyboard Maintainer: [/u/omgitspngu](https://github.com/itspngu) 5* Keyboard Maintainer: [pngu](https://github.com/itspngu)
6* Hardware Supported: idb 60 PCB 6* Hardware Supported: idb 60 PCB
7* Hardware Availability: [/u/omgitspngu](https://www.reddit.com/user/omgitspngu/) 7* Hardware Availability: [Case & PCB Files (CC-by-SA 4.0)](https://github.com/itspngu/idb_60)
8* Project Website: [idb Keyboards » 60](https://idb-keyboards.xyz/60)
8 9
9Make example for this keyboard (after setting up your build environment): 10Make example for this keyboard (after setting up your build environment):
10 11
diff --git a/keyboards/idb/idb_60/rules.mk b/keyboards/idb/idb_60/rules.mk
index 289e77f77..7e11d4be7 100644
--- a/keyboards/idb/idb_60/rules.mk
+++ b/keyboards/idb/idb_60/rules.mk
@@ -25,4 +25,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
25MIDI_ENABLE = no # MIDI controls 25MIDI_ENABLE = no # MIDI controls
26UNICODE_ENABLE = no # Unicode 26UNICODE_ENABLE = no # Unicode
27BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 27BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
28DEBOUNCE_TYPE = eager_pk # Eager debounce type
diff --git a/keyboards/jj4x4/config.h b/keyboards/jj4x4/config.h
index 8c5b1988d..45c8671cc 100644
--- a/keyboards/jj4x4/config.h
+++ b/keyboards/jj4x4/config.h
@@ -19,8 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
19 19
20#include "config_common.h" 20#include "config_common.h"
21 21
22#define VENDOR_ID 0x20A0 22#define VENDOR_ID 0x4B50 // "KP"
23#define PRODUCT_ID 0x422D 23#define PRODUCT_ID 0x0044 // 4x4
24#define DEVICE_VER 0x0200 24#define DEVICE_VER 0x0200
25#define MANUFACTURER KPrepublic 25#define MANUFACTURER KPrepublic
26#define PRODUCT JJ4x4 26#define PRODUCT JJ4x4
diff --git a/keyboards/jj4x4/info.json b/keyboards/jj4x4/info.json
index 602fdc90a..0fff9b9c8 100644
--- a/keyboards/jj4x4/info.json
+++ b/keyboards/jj4x4/info.json
@@ -1,30 +1,30 @@
1{ 1{
2 "keyboard_name": "jj4x4", 2 "keyboard_name": "JJ4x4",
3 "url": "", 3 "url": "",
4 "maintainer": "qmk", 4 "maintainer": "qmk",
5 "width": 4, 5 "width": 4,
6 "height": 4, 6 "height": 4,
7 "layouts": { 7 "layouts": {
8 "LAYOUT_ortho_4x4": { 8 "LAYOUT_ortho_4x4": {
9 "key_count": 16, 9 "key_count": 16,
10 "layout": [ 10 "layout": [
11 {"x":0, "y":0}, 11 {"x":0, "y":0},
12 {"x":1, "y":0}, 12 {"x":1, "y":0},
13 {"x":2, "y":0}, 13 {"x":2, "y":0},
14 {"x":3, "y":0}, 14 {"x":3, "y":0},
15 {"x":0, "y":1}, 15 {"x":0, "y":1},
16 {"x":1, "y":1}, 16 {"x":1, "y":1},
17 {"x":2, "y":1}, 17 {"x":2, "y":1},
18 {"x":3, "y":1}, 18 {"x":3, "y":1},
19 {"x":0, "y":2}, 19 {"x":0, "y":2},
20 {"x":1, "y":2}, 20 {"x":1, "y":2},
21 {"x":2, "y":2}, 21 {"x":2, "y":2},
22 {"x":3, "y":2}, 22 {"x":3, "y":2},
23 {"x":0, "y":3}, 23 {"x":0, "y":3},
24 {"x":1, "y":3}, 24 {"x":1, "y":3},
25 {"x":2, "y":3}, 25 {"x":2, "y":3},
26 {"x":3, "y":3} 26 {"x":3, "y":3}
27 ] 27 ]
28 }
28 } 29 }
29 } 30}
30} \ No newline at end of file
diff --git a/keyboards/jj4x4/jj4x4.h b/keyboards/jj4x4/jj4x4.h
index 7b8cb8183..ee17e896d 100644
--- a/keyboards/jj4x4/jj4x4.h
+++ b/keyboards/jj4x4/jj4x4.h
@@ -28,14 +28,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
28 * represents the switch matrix. 28 * represents the switch matrix.
29 */ 29 */
30#define LAYOUT_ortho_4x4( \ 30#define LAYOUT_ortho_4x4( \
31 K01, K02, K03, K04, \ 31 K00, K01, K02, K03, \
32 K11, K12, K13, K14, \ 32 K10, K11, K12, K13, \
33 K21, K22, K23, K24, \ 33 K20, K21, K22, K23, \
34 K31, K32, K33, K34 \ 34 K30, K31, K32, K33 \
35) \ 35) { \
36{ \ 36 { K00, K01, K02, K03 }, \
37 { K01, K02, K03, K04 }, \ 37 { K10, K11, K12, K13 }, \
38 { K11, K12, K13, K14 }, \ 38 { K20, K21, K22, K23 }, \
39 { K21, K22, K23, K24 }, \ 39 { K30, K31, K32, K33 } \
40 { K31, K32, K33, K34 } \ 40}
41}
diff --git a/keyboards/jj4x4/keymaps/default/keymap.c b/keyboards/jj4x4/keymaps/default/keymap.c
index a0b06ee92..ae2c6b541 100644
--- a/keyboards/jj4x4/keymaps/default/keymap.c
+++ b/keyboards/jj4x4/keymaps/default/keymap.c
@@ -13,61 +13,56 @@
13 * You should have received a copy of the GNU General Public License 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/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16
16#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
17 18
18enum layers { 19enum layers {
19 _BASE = 0, 20 _BASE = 0,
20 _FN1, 21 _FN1,
21 _FN2, 22 _FN2
22}; 23};
23 24
24// Defines the keycodes used by our macros in process_record_user 25// Defines the keycodes used by our macros in process_record_user
25enum custom_keycodes { 26enum custom_keycodes {
26 QMKBEST = SAFE_RANGE, 27 QMKBEST = SAFE_RANGE,
27 QMKURL 28 QMKURL
28}; 29};
29 30
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 32 [_BASE] = LAYOUT_ortho_4x4(
32 [_BASE] = LAYOUT_ortho_4x4( 33 KC_PGUP, KC_HOME, KC_UP, KC_END,
33 KC_PGUP, KC_HOME, KC_UP, KC_END , \ 34 KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT,
34 KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, \ 35 MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV,
35 MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV, \ 36 MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT
36 MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT \ 37 ),
37 ), 38 [_FN1] = LAYOUT_ortho_4x4(
38 [_FN1] = LAYOUT_ortho_4x4( 39 KC_ESC, KC_P7, KC_P8, KC_P9,
39 KC_ESC, KC_P7, KC_P8, KC_P9, \ 40 KC_TAB, KC_P4, KC_P5, KC_P6,
40 KC_TAB, KC_P4, KC_P5, KC_P6, \ 41 KC_ENT, KC_P1, KC_P2, KC_P3,
41 KC_ENT, KC_P1, KC_P2, KC_P3, \ 42 _______, KC_P0, KC_P0, KC_DOT
42 _______, KC_P0, KC_P0, KC_DOT \ 43 ),
43 ), 44 [_FN2] = LAYOUT_ortho_4x4(
44 [_FN2] = LAYOUT_ortho_4x4( 45 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
45 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \ 46 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
46 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, \ 47 _______, _______, _______, RESET,
47 _______, _______, _______, RESET, \ 48 BL_STEP, _______, QMKBEST, QMKURL
48 BL_STEP, _______, QMKBEST, QMKURL \ 49 )
49 )
50
51}; 50};
52 51
53bool process_record_user(uint16_t keycode, keyrecord_t *record) { 52bool process_record_user(uint16_t keycode, keyrecord_t *record) {
54 switch (keycode) { 53 switch (keycode) {
55 case QMKBEST: 54 case QMKBEST:
56 if (record->event.pressed) { 55 if (record->event.pressed) {
57 // when keycode QMKBEST is pressed 56 // when keycode QMKBEST is pressed
58 SEND_STRING("QMK is the best thing ever!"); 57 SEND_STRING("QMK is the best thing ever!");
59 } else { 58 }
60 // when keycode QMKBEST is released 59 break;
61 } 60 case QMKURL:
62 break; 61 if (record->event.pressed) {
63 case QMKURL: 62 // when keycode QMKURL is pressed
64 if (record->event.pressed) { 63 SEND_STRING("https://qmk.fm/\n");
65 // when keycode QMKURL is pressed 64 }
66 SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); 65 break;
67 } else { 66 }
68 // when keycode QMKURL is released 67 return true;
69 }
70 break;
71 }
72 return true;
73} 68}
diff --git a/keyboards/jj4x4/keymaps/via/keymap.c b/keyboards/jj4x4/keymaps/via/keymap.c
new file mode 100644
index 000000000..35ca0e361
--- /dev/null
+++ b/keyboards/jj4x4/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
1/* Copyright 2020
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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 LAYOUT_ortho_4x4(
21 KC_P7, KC_P8, KC_P9, KC_PSLS,
22 KC_P4, KC_P5, KC_P6, KC_PAST,
23 KC_P1, KC_P2, KC_P3, KC_PMNS,
24 KC_P0, KC_PDOT, KC_PPLS, LT(1, KC_ENT)
25 ),
26 LAYOUT_ortho_4x4(
27 RESET, _______, _______, _______,
28 _______, _______, _______, _______,
29 _______, _______, _______, _______,
30 _______, _______, _______, _______
31 ),
32 LAYOUT_ortho_4x4(
33 _______, _______, _______, _______,
34 _______, _______, _______, _______,
35 _______, _______, _______, _______,
36 _______, _______, _______, _______
37 ),
38 LAYOUT_ortho_4x4(
39 _______, _______, _______, _______,
40 _______, _______, _______, _______,
41 _______, _______, _______, _______,
42 _______, _______, _______, _______
43 )
44};
diff --git a/keyboards/jj4x4/keymaps/via/rules.mk b/keyboards/jj4x4/keymaps/via/rules.mk
new file mode 100644
index 000000000..82fb80d5e
--- /dev/null
+++ b/keyboards/jj4x4/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
1VIA_ENABLE = yes
2EXTRAKEY_ENABLE = no
3MOUSEKEY_ENABLE = no
diff --git a/keyboards/jj4x4/README.md b/keyboards/jj4x4/readme.md
index 24212bc99..714e8e88f 100644
--- a/keyboards/jj4x4/README.md
+++ b/keyboards/jj4x4/readme.md
@@ -1,8 +1,8 @@
1# jj4x4 1# JJ4x4
2 2
3![jj4x4](https://cdn.shopify.com/s/files/1/2711/4238/products/JJ4x4case-1_1024x1024.jpg?v=1532325339) 3![jj4x4](https://cdn.shopify.com/s/files/1/2711/4238/products/JJ4x4case-1_1024x1024.jpg?v=1532325339)
4 4
5A 4x4 keypad kit made and KPRepublic on AliExpress. This is a chopped off version of the jj40 with rearranged keys. 5A 4x4 keypad kit made and KPRepublic on AliExpress. This is a chopped off version of the JJ40 with rearranged keys.
6 6
7* Keyboard Maintainer: [QMK Community](https://github.com/qmk) 7* Keyboard Maintainer: [QMK Community](https://github.com/qmk)
8* Hardware Supported: Atmega32A 8* Hardware Supported: Atmega32A
@@ -18,22 +18,22 @@ Flashing example for this keyboard ([after setting up the bootloadHID flashing e
18 18
19**Reset Key**: 19**Reset Key**:
20 20
21Hold down the key located at *K12*, commonly programmed as *8* while plugging in the keyboard USB cable. 21Hold down the key located at *K11*, commonly programmed as *8* while plugging in the keyboard USB cable.
22 22
23Key *K12* is in the above picture: 23Key *K11* is in the above picture:
24 24
25Row 2 from the top, Column 2 from the left, see the schematic below: 25Row 2 from the top, Column 2 from the left, see the schematic below:
26 26
27``` 27```
28 ,-----------------------. 28,-----------------------.
29 | | | | | 29| | | | |
30 |-----`-----`-----`-----| 30|-----`-----`-----`-----|
31 | | K12 | | | 31| | K11 | | |
32 |-----`-----`-----`-----| 32|-----`-----`-----`-----|
33 | | | | | 33| | | | |
34 |-----`-----`-----`-----| 34|-----`-----`-----`-----|
35 | | | | | 35| | | | |
36 `-----`-----`-----`-----' 36`-----`-----`-----`-----'
37``` 37```
38 38
39See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 39See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/jj4x4/rules.mk b/keyboards/jj4x4/rules.mk
index 82e25e6a7..5ff5c3769 100644
--- a/keyboards/jj4x4/rules.mk
+++ b/keyboards/jj4x4/rules.mk
@@ -31,6 +31,6 @@ UNICODE_ENABLE = no # Unicode
31BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 31BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
32AUDIO_ENABLE = no # Audio output on port C6 32AUDIO_ENABLE = no # Audio output on port C6
33FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches 33FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
34HD44780_ENABLE = no # Enable support for HD44780 based LCDs 34HD44780_ENABLE = no # Enable support for HD44780 based LCDs
35 35
36LAYOUTS = ortho_4x4 36LAYOUTS = ortho_4x4
diff --git a/keyboards/keebio/iris/keymaps/333fred/config.h b/keyboards/keebio/iris/keymaps/333fred/config.h
index 8a866b826..c3997b0f4 100644
--- a/keyboards/keebio/iris/keymaps/333fred/config.h
+++ b/keyboards/keebio/iris/keymaps/333fred/config.h
@@ -1,7 +1,5 @@
1#pragma once 1#pragma once
2 2
3#include "333fred_config.h"
4
5#define USE_SERIAL 3#define USE_SERIAL
6#define EE_HANDS 4#define EE_HANDS
7#define NO_ACTION_MACRO 5#define NO_ACTION_MACRO
diff --git a/keyboards/keebio/iris/keymaps/333fred/rules.mk b/keyboards/keebio/iris/keymaps/333fred/rules.mk
index 2b5da5a22..995272e2f 100644
--- a/keyboards/keebio/iris/keymaps/333fred/rules.mk
+++ b/keyboards/keebio/iris/keymaps/333fred/rules.mk
@@ -1,7 +1,4 @@
1NKRO_ENABLE = yes
2KEY_LOCK_ENABLE = yes 1KEY_LOCK_ENABLE = yes
3TAP_DANCE_ENABLE = yes
4CONSOLE_ENABLE = no 2CONSOLE_ENABLE = no
5PERMISSIVE_HOLD = yes
6EXTRAFLAGS += -flto 3EXTRAFLAGS += -flto
7 4
diff --git a/keyboards/keebio/iris/keymaps/dvorak/config.h b/keyboards/keebio/iris/keymaps/dvorak/config.h
new file mode 100644
index 000000000..d37d3c312
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/dvorak/config.h
@@ -0,0 +1,33 @@
1/*
2Copyright 2017 Danny Nguyen <danny@keeb.io>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20/* Use I2C or Serial, not both */
21
22#define USE_SERIAL
23
24/* Select hand configuration */
25
26#define MASTER_LEFT
27
28#undef RGBLED_NUM
29#define RGBLIGHT_ANIMATIONS
30#define RGBLED_NUM 12
31#define RGBLIGHT_HUE_STEP 8
32#define RGBLIGHT_SAT_STEP 8
33#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json b/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json
new file mode 100644
index 000000000..be5cc3793
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json
@@ -0,0 +1,192 @@
1{
2 "author": "",
3 "layers": [
4 [
5 "KC_ESC",
6 "KC_1",
7 "KC_2",
8 "KC_3",
9 "KC_4",
10 "KC_5",
11 "KC_6",
12 "KC_7",
13 "KC_8",
14 "KC_9",
15 "KC_0",
16 "KC_BSPC",
17 "KC_TAB",
18 "KC_QUOT",
19 "KC_COMM",
20 "KC_DOT",
21 "KC_P",
22 "KC_Y",
23 "KC_F",
24 "KC_G",
25 "KC_C",
26 "KC_R",
27 "KC_L",
28 "KC_SLSH",
29 "KC_LCTL",
30 "KC_A",
31 "KC_O",
32 "KC_E",
33 "KC_U",
34 "KC_I",
35 "KC_D",
36 "KC_H",
37 "KC_T",
38 "KC_N",
39 "KC_S",
40 "KC_MINS",
41 "KC_LSFT",
42 "KC_SCLN",
43 "KC_Q",
44 "KC_J",
45 "KC_K",
46 "KC_X",
47 "KC_HOME",
48 "KC_END",
49 "KC_B",
50 "KC_M",
51 "KC_W",
52 "KC_V",
53 "KC_Z",
54 "KC_RSFT",
55 "MO(1)",
56 "KC_LGUI",
57 "KC_ENT",
58 "KC_SPC",
59 "KC_RALT",
60 "MO(2)"
61 ],
62 [
63 "KC_TILD",
64 "KC_EXLM",
65 "KC_AT",
66 "KC_HASH",
67 "KC_DLR",
68 "KC_PERC",
69 "KC_CIRC",
70 "KC_AMPR",
71 "KC_ASTR",
72 "KC_LPRN",
73 "KC_RPRN",
74 "KC_BSPC",
75 "RESET",
76 "KC_1",
77 "KC_2",
78 "KC_3",
79 "KC_4",
80 "KC_5",
81 "KC_6",
82 "KC_7",
83 "KC_8",
84 "KC_9",
85 "KC_0",
86 "KC_GRV",
87 "KC_DEL",
88 "KC_NO",
89 "KC_LEFT",
90 "KC_RGHT",
91 "KC_UP",
92 "KC_LCBR",
93 "KC_RCBR",
94 "KC_P4",
95 "KC_P5",
96 "KC_P6",
97 "KC_PPLS",
98 "KC_BSPC",
99 "BL_INC",
100 "KC_NO",
101 "KC_NO",
102 "KC_NO",
103 "KC_DOWN",
104 "KC_LBRC",
105 "KC_LPRN",
106 "KC_RPRN",
107 "KC_RBRC",
108 "KC_P1",
109 "KC_P2",
110 "KC_P3",
111 "KC_PMNS",
112 "KC_PIPE",
113 "KC_NO",
114 "KC_NO",
115 "KC_DEL",
116 "KC_DEL",
117 "KC_NO",
118 "KC_P0"
119 ],
120 [
121 "KC_F12",
122 "KC_F1",
123 "KC_F2",
124 "KC_F3",
125 "KC_F4",
126 "KC_F5",
127 "KC_F6",
128 "KC_F7",
129 "KC_F8",
130 "KC_F9",
131 "KC_F10",
132 "KC_F11",
133 "RGB_TOG",
134 "KC_EXLM",
135 "KC_AT",
136 "KC_HASH",
137 "KC_DLR",
138 "KC_PERC",
139 "KC_CIRC",
140 "KC_AMPR",
141 "KC_ASTR",
142 "KC_LPRN",
143 "KC_RPRN",
144 "KC_NO",
145 "RGB_MOD",
146 "KC_MRWD",
147 "KC_MFFD",
148 "KC_VOLU",
149 "KC_PGUP",
150 "KC_UNDS",
151 "KC_PEQL",
152 "KC_HOME",
153 "RGB_HUI",
154 "RGB_SAI",
155 "RGB_VAI",
156 "KC_BSLS",
157 "KC_MUTE",
158 "KC_MSTP",
159 "KC_MPLY",
160 "KC_VOLD",
161 "KC_PGDN",
162 "KC_PMNS",
163 "KC_NO",
164 "KC_NO",
165 "KC_PPLS",
166 "KC_END",
167 "RGB_HUD",
168 "RGB_SAD",
169 "RGB_VAD",
170 "KC_NO",
171 "KC_NO",
172 "KC_NO",
173 "KC_NO",
174 "KC_NO",
175 "KC_NO",
176 "KC_NO"
177 ]
178 ],
179 "layout": "LAYOUT",
180 "keymap": "keebio_iris_rev2_layout_dvorak.json",
181 "keyboard": "keebio/iris/rev2",
182 "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.
183
184To setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>
185
186You can convert this file to a keymap.c using this command: `qmk json2c {keymap}`
187
188You can compile this keymap using this command: `qmk compile {keymap}`\"
189",
190 "notes": "",
191 "version": 1
192}
diff --git a/keyboards/keebio/iris/keymaps/dvorak/keymap.c b/keyboards/keebio/iris/keymaps/dvorak/keymap.c
new file mode 100644
index 000000000..3f0886521
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/dvorak/keymap.c
@@ -0,0 +1,73 @@
1#include QMK_KEYBOARD_H
2enum my_layers {
3 _DVORAK,
4 _LOWER,
5 _RAISE,
6 _ADJUST
7};
8
9#define RAISE MO(_RAISE)
10#define LOWER MO(_LOWER)
11
12const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13
14 [_DVORAK] = LAYOUT(
15 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
16 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
17 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
18 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
19 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
20 KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
21 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
22 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_HOME, KC_END, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
23 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
24 LOWER, KC_LGUI, KC_ENT, KC_SPC, KC_RALT, RAISE
25 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
26 ),
27
28 [_LOWER] = LAYOUT(
29 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
30 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
31 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
32 RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRAVE,
33 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
34 KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_BSPC,
35 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
36 BL_STEP, _______, _______, _______, KC_DOWN, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, KC_PIPE,
37 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
38 _______, _______, KC_DEL, KC_DEL, _______, KC_P0
39 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
40 ),
41
42 [_RAISE] = LAYOUT(
43 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
44 KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
45 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
46 RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
47 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
48 RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS,
49 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
50 KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, _______, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______,
51 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
52 _______, _______, _______, _______, _______, _______
53 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
54 ),
55
56 [_ADJUST] = LAYOUT(
57 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
59 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
60 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
61 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
62 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
63 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
64 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
65 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
66 _______, _______, _______, _______, _______, _______
67 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
68 )
69};
70
71layer_state_t layer_state_set_user(layer_state_t state) {
72 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
73}
diff --git a/keyboards/keebio/iris/keymaps/dvorak/readme.md b/keyboards/keebio/iris/keymaps/dvorak/readme.md
new file mode 100644
index 000000000..8397ef84a
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/dvorak/readme.md
@@ -0,0 +1,16 @@
1
2![Iris Dvorak keymap](https://i.imgur.com/DXESYqV.png)
3
4# Dvorak
5
6```
7make keebio/iris/rev2:dvorak
8```
9```
10make keebio/iris/rev3:dvorak
11```
12```
13make keebio/iris/rev4:dvorak
14```
15
16Tested with Iris rev. 2
diff --git a/keyboards/keebio/iris/keymaps/dvorak/rules.mk b/keyboards/keebio/iris/keymaps/dvorak/rules.mk
new file mode 100644
index 000000000..d7463419b
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/dvorak/rules.mk
@@ -0,0 +1,2 @@
1RGBLIGHT_ENABLE = yes
2BACKLIGHT_ENABLE = yes
diff --git a/keyboards/lily58/keymaps/bcat/config.h b/keyboards/lily58/keymaps/bcat/config.h
index 180926204..f7f08d076 100644
--- a/keyboards/lily58/keymaps/bcat/config.h
+++ b/keyboards/lily58/keymaps/bcat/config.h
@@ -1,3 +1,6 @@
1#pragma once 1#pragma once
2 2
3#define EE_HANDS 3#define EE_HANDS
4
5/* Work around Elite-C v3 with broken VBUS detection. */
6#define SPLIT_USB_DETECT
diff --git a/keyboards/lily58/keymaps/bcat/readme.md b/keyboards/lily58/keymaps/bcat/readme.md
index 389def143..0ea0d2278 100644
--- a/keyboards/lily58/keymaps/bcat/readme.md
+++ b/keyboards/lily58/keymaps/bcat/readme.md
@@ -1,49 +1,18 @@
1# bcat's Lily58 layout 1# bcat's Lily58 layout
2 2
3This split ergo layout is standard QWERTY on the default layer, with symbols on 3This split ergo layout follows my preferred [Crkbd
4the lower layer, numbers/navigation on the raise layer, and media keys centered 4layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd/keymaps/bcat)
5around the ESDF cluster in the adjust (raise + lower) layer. A few general 5with the following changes:
6principles went into this layout:
7 6
8* The number row is optional, as are the outermost bottom row keys and the 7* There's an optional number row at the top of the keyboard. I am quite used to
9"extra" keys on the innnermost columns below the controllers. This allows me to 8using layers for numbers and symbols, so in practice this goes unused.
10switch between this keyboard and a 40% like the
11[Crkbd](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat)
12without breaking muscle memory.
13 9
14* Space and Enter are on the big thumb keys so they're easy to press. 10* The dedicated Hyphen/Underscore and Equals/Plus keys on the number row are
11placed in the same positions as on the ErgoDox EZ. (There's no real reason for
12this; I just had to do _something_ with those keys.)
15 13
16* There are two shift keys because Right Shift is all that important, but just 14* The extra thumb keys are used for dedicated Ctrl/Menu keys (not super useful)
17because I don't have any better ideas for what to put there. 15and browser back/forward navigation keys (actually more useful than expected).
18
19* Arrow keys are on VIM-style HJKL keys.
20
21* Home/End and Page Up/Page Down are equivalent to the arrow keys, but
22translated down one row.
23
24* Navigation is usable with just the right hand, to enable left-handed mousing
25at the same time. Additionally, Web page scrolling (Space, Shift+Space) is
26possible with just the left hand, for writing at the same time as scrolling.
27
28* Escape is easy to reach because Vim is life.
29
30* Since most of the modifiers are on the left half, keys frequently pressed
31together with mods (e.g., numbers, function keys, etc.) are on the Raise layer
32activated by the right thumb.
33
34* Every key on a TKL has a binding.
35
36* Backspace is bound in the same place on every layer to avoid having to let go
37of layer-shift keys to fix a mistake.
38
39* Likewise, the comma and period keys are not rebound on the raise layer to
40allow typing numbers with thousand separators and decimal points without
41releasing the layer key.
42
43* Brackets and braces are on or near the home row for quick access when coding.
44They're positioned below the parens on the Raise layer for easy recall.
45
46* For consistency, mods aren't rebound on layers (except for the Tab key).
47 16
48## Default layer 17## Default layer
49 18
diff --git a/keyboards/maartenwut/plain60/keymaps/via/keymap.c b/keyboards/maartenwut/plain60/keymaps/via/keymap.c
index 7e8cfff35..a500f2389 100644
--- a/keyboards/maartenwut/plain60/keymaps/via/keymap.c
+++ b/keyboards/maartenwut/plain60/keymaps/via/keymap.c
@@ -1,17 +1,32 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2 2
3// Each layer gets a name for readability, which is then used in the keymap matrix below.
4// The underscores don't mean anything - you can have a layer called STUFF or any other name.
5// Layer names don't all need to be of the same length, obviously, and you can also skip them
6// entirely and just use numbers.
7#define _MA 0
8
9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 4
11[_MA] = LAYOUT( 5[0] = LAYOUT(
12 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, \ 6 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
13 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ 7 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
14 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, \ 8 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
15 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ 9 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
16 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL) 10 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL),
11
12[1] = LAYOUT(
13 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
14 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
15 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
16 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
17 _______, _______, _______, _______, _______, _______, _______, _______),
18
19[2] = LAYOUT(
20 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
21 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
22 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
23 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
24 _______, _______, _______, _______, _______, _______, _______, _______),
25
26[3] = LAYOUT(
27 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______),
17}; 32};
diff --git a/keyboards/maartenwut/wasdat/info.json b/keyboards/maartenwut/wasdat/info.json
index 8f931f46c..6154bd555 100644
--- a/keyboards/maartenwut/wasdat/info.json
+++ b/keyboards/maartenwut/wasdat/info.json
@@ -185,7 +185,6 @@
185 {"label":"P", "x":10.5, "y":2.5}, 185 {"label":"P", "x":10.5, "y":2.5},
186 {"label":"{", "x":11.5, "y":2.5}, 186 {"label":"{", "x":11.5, "y":2.5},
187 {"label":"}", "x":12.5, "y":2.5}, 187 {"label":"}", "x":12.5, "y":2.5},
188 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
189 188
190 {"label":"Delete", "x":15.25, "y":2.5}, 189 {"label":"Delete", "x":15.25, "y":2.5},
191 {"label":"End", "x":16.25, "y":2.5}, 190 {"label":"End", "x":16.25, "y":2.5},
@@ -209,6 +208,7 @@
209 {"label":":", "x":10.75, "y":3.5}, 208 {"label":":", "x":10.75, "y":3.5},
210 {"label":"@", "x":11.75, "y":3.5}, 209 {"label":"@", "x":11.75, "y":3.5},
211 {"label":"~", "x":12.75, "y":3.5}, 210 {"label":"~", "x":12.75, "y":3.5},
211 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
212 212
213 {"label":"4", "x":18.5, "y":3.5}, 213 {"label":"4", "x":18.5, "y":3.5},
214 {"label":"5", "x":19.5, "y":3.5}, 214 {"label":"5", "x":19.5, "y":3.5},
@@ -405,7 +405,6 @@
405 {"label":"P", "x":10.5, "y":2.5}, 405 {"label":"P", "x":10.5, "y":2.5},
406 {"label":"{", "x":11.5, "y":2.5}, 406 {"label":"{", "x":11.5, "y":2.5},
407 {"label":"}", "x":12.5, "y":2.5}, 407 {"label":"}", "x":12.5, "y":2.5},
408 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
409 408
410 {"label":"Delete", "x":15.25, "y":2.5}, 409 {"label":"Delete", "x":15.25, "y":2.5},
411 {"label":"End", "x":16.25, "y":2.5}, 410 {"label":"End", "x":16.25, "y":2.5},
@@ -424,6 +423,7 @@
424 {"label":":", "x":10.75, "y":3.5}, 423 {"label":":", "x":10.75, "y":3.5},
425 {"label":"@", "x":11.75, "y":3.5}, 424 {"label":"@", "x":11.75, "y":3.5},
426 {"label":"~", "x":12.75, "y":3.5}, 425 {"label":"~", "x":12.75, "y":3.5},
426 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
427 427
428 {"label":"Shift", "x":0, "y":4.5, "w":1.25}, 428 {"label":"Shift", "x":0, "y":4.5, "w":1.25},
429 {"label":"|", "x":1.25, "y":4.5}, 429 {"label":"|", "x":1.25, "y":4.5},
diff --git a/keyboards/maartenwut/wasdat_code/config.h b/keyboards/maartenwut/wasdat_code/config.h
new file mode 100644
index 000000000..16d5acd9c
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/config.h
@@ -0,0 +1,258 @@
1/*
2Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x4705
24#define PRODUCT_ID 0xB00E
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Maartenwut
27#define PRODUCT Wasdat Code
28#define DESCRIPTION Custom controller for the WASD CODE TKL and 104-key keyboards
29
30/* key matrix size */
31#define MATRIX_ROWS 8
32#define MATRIX_COLS 16
33
34/*
35 * Keyboard Matrix Assignments
36 *
37 * Change this to how you wired your keyboard
38 * COLS: AVR pins used for columns, left to right
39 * ROWS: AVR pins used for rows, top to bottom
40 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
41 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
42 *
43*/
44#define MATRIX_ROW_PINS { E6, C7, C6, B6, B5, B4, D7, D6 }
45#define MATRIX_COL_PINS { }
46#define UNUSED_PINS
47
48/* COL2ROW, ROW2COL*/
49#define DIODE_DIRECTION ROW2COL
50
51// For QMK DFU
52#define QMK_ESC_OUTPUT E6
53#define QMK_ESC_INPUT F0
54#define QMK_LED B1
55
56/*
57 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
58 */
59//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
60
61#define BACKLIGHT_PIN B7
62#define BACKLIGHT_BREATHING
63#define BACKLIGHT_LEVELS 5
64
65// #define RGB_DI_PIN E2
66// #ifdef RGB_DI_PIN
67// #define RGBLED_NUM 16
68// #define RGBLIGHT_HUE_STEP 8
69// #define RGBLIGHT_SAT_STEP 8
70// #define RGBLIGHT_VAL_STEP 8
71// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
72// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
73// /*== all animations enable ==*/
74// #define RGBLIGHT_ANIMATIONS
75// /*== or choose animations ==*/
76// #define RGBLIGHT_EFFECT_BREATHING
77// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
78// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
79// #define RGBLIGHT_EFFECT_SNAKE
80// #define RGBLIGHT_EFFECT_KNIGHT
81// #define RGBLIGHT_EFFECT_CHRISTMAS
82// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
83// #define RGBLIGHT_EFFECT_RGB_TEST
84// #define RGBLIGHT_EFFECT_ALTERNATING
85// /*== customize breathing effect ==*/
86// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
87// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
88// /*==== use exp() and sin() ====*/
89// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
90// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
91// #endif
92
93/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
94#define DEBOUNCE 5
95
96/* define if matrix has ghost (lacks anti-ghosting diodes) */
97//#define MATRIX_HAS_GHOST
98
99/* number of backlight levels */
100
101/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
102#define LOCKING_SUPPORT_ENABLE
103/* Locking resynchronize hack */
104#define LOCKING_RESYNC_ENABLE
105
106/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
107 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
108 */
109// #define GRAVE_ESC_CTRL_OVERRIDE
110
111/*
112 * Force NKRO
113 *
114 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
115 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
116 * makefile for this to work.)
117 *
118 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
119 * until the next keyboard reset.
120 *
121 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
122 * fully operational during normal computer usage.
123 *
124 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
125 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
126 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
127 * power-up.
128 *
129 */
130//#define FORCE_NKRO
131
132/*
133 * Magic Key Options
134 *
135 * Magic keys are hotkey commands that allow control over firmware functions of
136 * the keyboard. They are best used in combination with the HID Listen program,
137 * found here: https://www.pjrc.com/teensy/hid_listen.html
138 *
139 * The options below allow the magic key functionality to be changed. This is
140 * useful if your keyboard/keypad is missing keys and you want magic key support.
141 *
142 */
143
144/* key combination for magic key command */
145/* defined by default; to change, uncomment and set to the combination you want */
146// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
147
148/* control how magic key switches layers */
149//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
150//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
151//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
152
153/* override magic key keymap */
154//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
155//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
156//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
157//#define MAGIC_KEY_HELP H
158//#define MAGIC_KEY_HELP_ALT SLASH
159//#define MAGIC_KEY_DEBUG D
160//#define MAGIC_KEY_DEBUG_MATRIX X
161//#define MAGIC_KEY_DEBUG_KBD K
162//#define MAGIC_KEY_DEBUG_MOUSE M
163//#define MAGIC_KEY_VERSION V
164//#define MAGIC_KEY_STATUS S
165//#define MAGIC_KEY_CONSOLE C
166//#define MAGIC_KEY_LAYER0 0
167//#define MAGIC_KEY_LAYER0_ALT GRAVE
168//#define MAGIC_KEY_LAYER1 1
169//#define MAGIC_KEY_LAYER2 2
170//#define MAGIC_KEY_LAYER3 3
171//#define MAGIC_KEY_LAYER4 4
172//#define MAGIC_KEY_LAYER5 5
173//#define MAGIC_KEY_LAYER6 6
174//#define MAGIC_KEY_LAYER7 7
175//#define MAGIC_KEY_LAYER8 8
176//#define MAGIC_KEY_LAYER9 9
177//#define MAGIC_KEY_BOOTLOADER B
178//#define MAGIC_KEY_BOOTLOADER_ALT ESC
179//#define MAGIC_KEY_LOCK CAPS
180//#define MAGIC_KEY_EEPROM E
181//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
182//#define MAGIC_KEY_NKRO N
183//#define MAGIC_KEY_SLEEP_LED Z
184
185/*
186 * Feature disable options
187 * These options are also useful to firmware size reduction.
188 */
189
190/* disable debug print */
191//#define NO_DEBUG
192
193/* disable print */
194//#define NO_PRINT
195
196/* disable action features */
197//#define NO_ACTION_LAYER
198//#define NO_ACTION_TAPPING
199//#define NO_ACTION_ONESHOT
200//#define NO_ACTION_MACRO
201//#define NO_ACTION_FUNCTION
202
203/*
204 * MIDI options
205 */
206
207/* Prevent use of disabled MIDI features in the keymap */
208//#define MIDI_ENABLE_STRICT 1
209
210/* enable basic MIDI features:
211 - MIDI notes can be sent when in Music mode is on
212*/
213//#define MIDI_BASIC
214
215/* enable advanced MIDI features:
216 - MIDI notes can be added to the keymap
217 - Octave shift and transpose
218 - Virtual sustain, portamento, and modulation wheel
219 - etc.
220*/
221//#define MIDI_ADVANCED
222
223/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
224//#define MIDI_TONE_KEYCODE_OCTAVES 1
225
226/*
227 * HD44780 LCD Display Configuration
228 */
229/*
230#define LCD_LINES 2 //< number of visible lines of the display
231#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
232
233#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
234
235#if LCD_IO_MODE
236#define LCD_PORT PORTB //< port for the LCD lines
237#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
238#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
239#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
240#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
241#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
242#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
243#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
244#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
245#define LCD_RS_PORT LCD_PORT //< port for RS line
246#define LCD_RS_PIN 3 //< pin for RS line
247#define LCD_RW_PORT LCD_PORT //< port for RW line
248#define LCD_RW_PIN 2 //< pin for RW line
249#define LCD_E_PORT LCD_PORT //< port for Enable line
250#define LCD_E_PIN 1 //< pin for Enable line
251#endif
252*/
253
254/* Bootmagic Lite key configuration */
255#define BOOTMAGIC_LITE_ROW 2
256#define BOOTMAGIC_LITE_COLUMN 3
257
258#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/maartenwut/wasdat_code/info.json b/keyboards/maartenwut/wasdat_code/info.json
new file mode 100644
index 000000000..526883f8d
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/info.json
@@ -0,0 +1,459 @@
1{
2 "keyboard_name": "Wasdat Code",
3 "url": "https://maartenwut.com/product/wasdat-code/",
4 "maintainer": "Maartenwut",
5 "width": 22.5,
6 "height": 6.5,
7 "layouts": {
8 "LAYOUT_fullsize_ansi": {
9 "layout": [
10 {"label":"Esc", "x":0, "y":0},
11 {"label":"F1", "x":2, "y":0},
12 {"label":"F2", "x":3, "y":0},
13 {"label":"F3", "x":4, "y":0},
14 {"label":"F4", "x":5, "y":0},
15 {"label":"F5", "x":6.5, "y":0},
16 {"label":"F6", "x":7.5, "y":0},
17 {"label":"F7", "x":8.5, "y":0},
18 {"label":"F8", "x":9.5, "y":0},
19 {"label":"F9", "x":11, "y":0},
20 {"label":"F10", "x":12, "y":0},
21 {"label":"F11", "x":13, "y":0},
22 {"label":"F12", "x":14, "y":0},
23
24 {"label":"PrtSc", "x":15.25, "y":0},
25 {"label":"Scroll Lock", "x":16.25, "y":0},
26 {"label":"Pause", "x":17.25, "y":0},
27
28 {"label":"~", "x":0, "y":1.5},
29 {"label":"1", "x":1, "y":1.5},
30 {"label":"2", "x":2, "y":1.5},
31 {"label":"3", "x":3, "y":1.5},
32 {"label":"4", "x":4, "y":1.5},
33 {"label":"5", "x":5, "y":1.5},
34 {"label":"6", "x":6, "y":1.5},
35 {"label":"7", "x":7, "y":1.5},
36 {"label":"8", "x":8, "y":1.5},
37 {"label":"9", "x":9, "y":1.5},
38 {"label":"0", "x":10, "y":1.5},
39 {"label":"_", "x":11, "y":1.5},
40 {"label":"+", "x":12, "y":1.5},
41 {"label":"Backspace", "x":13, "y":1.5, "w":2},
42
43 {"label":"Insert", "x":15.25, "y":1.5},
44 {"label":"Home", "x":16.25, "y":1.5},
45 {"label":"PgUp", "x":17.25, "y":1.5},
46
47 {"label":"Num Lock", "x":18.5, "y":1.5},
48 {"label":"/", "x":19.5, "y":1.5},
49 {"label":"*", "x":20.5, "y":1.5},
50 {"label":"-", "x":21.5, "y":1.5},
51
52 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
53 {"label":"Q", "x":1.5, "y":2.5},
54 {"label":"W", "x":2.5, "y":2.5},
55 {"label":"E", "x":3.5, "y":2.5},
56 {"label":"R", "x":4.5, "y":2.5},
57 {"label":"T", "x":5.5, "y":2.5},
58 {"label":"Y", "x":6.5, "y":2.5},
59 {"label":"U", "x":7.5, "y":2.5},
60 {"label":"I", "x":8.5, "y":2.5},
61 {"label":"O", "x":9.5, "y":2.5},
62 {"label":"P", "x":10.5, "y":2.5},
63 {"label":"{", "x":11.5, "y":2.5},
64 {"label":"}", "x":12.5, "y":2.5},
65 {"label":"|", "x":13.5, "y":2.5, "w":1.5},
66
67 {"label":"Delete", "x":15.25, "y":2.5},
68 {"label":"End", "x":16.25, "y":2.5},
69 {"label":"PgDn", "x":17.25, "y":2.5},
70
71 {"label":"7", "x":18.5, "y":2.5},
72 {"label":"8", "x":19.5, "y":2.5},
73 {"label":"9", "x":20.5, "y":2.5},
74 {"label":"+", "x":21.5, "y":2.5, "h":2},
75
76 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
77 {"label":"A", "x":1.75, "y":3.5},
78 {"label":"S", "x":2.75, "y":3.5},
79 {"label":"D", "x":3.75, "y":3.5},
80 {"label":"F", "x":4.75, "y":3.5},
81 {"label":"G", "x":5.75, "y":3.5},
82 {"label":"H", "x":6.75, "y":3.5},
83 {"label":"J", "x":7.75, "y":3.5},
84 {"label":"K", "x":8.75, "y":3.5},
85 {"label":"L", "x":9.75, "y":3.5},
86 {"label":":", "x":10.75, "y":3.5},
87 {"label":"\"", "x":11.75, "y":3.5},
88 {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
89
90 {"label":"4", "x":18.5, "y":3.5},
91 {"label":"5", "x":19.5, "y":3.5},
92 {"label":"6", "x":20.5, "y":3.5},
93
94 {"label":"Shift", "x":0, "y":4.5, "w":2.25},
95 {"label":"Z", "x":2.25, "y":4.5},
96 {"label":"X", "x":3.25, "y":4.5},
97 {"label":"C", "x":4.25, "y":4.5},
98 {"label":"V", "x":5.25, "y":4.5},
99 {"label":"B", "x":6.25, "y":4.5},
100 {"label":"N", "x":7.25, "y":4.5},
101 {"label":"M", "x":8.25, "y":4.5},
102 {"label":"<", "x":9.25, "y":4.5},
103 {"label":">", "x":10.25, "y":4.5},
104 {"label":"?", "x":11.25, "y":4.5},
105 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
106
107 {"label":"\u2191", "x":16.25, "y":4.5},
108
109 {"label":"1", "x":18.5, "y":4.5},
110 {"label":"2", "x":19.5, "y":4.5},
111 {"label":"3", "x":20.5, "y":4.5},
112 {"label":"Enter", "x":21.5, "y":4.5, "h":2},
113
114 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
115 {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
116 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
117 {"x":3.75, "y":5.5, "w":6.25},
118 {"label":"Alt", "x":10, "y":5.5, "w":1.25},
119 {"label":"Win", "x":11.25, "y":5.5, "w":1.25},
120 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
121 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
122
123 {"label":"\u2190", "x":15.25, "y":5.5},
124 {"label":"\u2193", "x":16.25, "y":5.5},
125 {"label":"\u2192", "x":17.25, "y":5.5},
126
127 {"label":"0", "x":18.5, "y":5.5, "w":2},
128 {"label":".", "x":20.5, "y":5.5}
129 ]
130 },
131 "LAYOUT_fullsize_iso": {
132 "layout": [
133 {"label":"Esc", "x":0, "y":0},
134 {"label":"F1", "x":2, "y":0},
135 {"label":"F2", "x":3, "y":0},
136 {"label":"F3", "x":4, "y":0},
137 {"label":"F4", "x":5, "y":0},
138 {"label":"F5", "x":6.5, "y":0},
139 {"label":"F6", "x":7.5, "y":0},
140 {"label":"F7", "x":8.5, "y":0},
141 {"label":"F8", "x":9.5, "y":0},
142 {"label":"F9", "x":11, "y":0},
143 {"label":"F10", "x":12, "y":0},
144 {"label":"F11", "x":13, "y":0},
145 {"label":"F12", "x":14, "y":0},
146
147 {"label":"PrtSc", "x":15.25, "y":0},
148 {"label":"Scroll Lock", "x":16.25, "y":0},
149 {"label":"Pause", "x":17.25, "y":0},
150
151 {"label":"\u00ac", "x":0, "y":1.5},
152 {"label":"!", "x":1, "y":1.5},
153 {"label":"\"", "x":2, "y":1.5},
154 {"label":"\u00a3", "x":3, "y":1.5},
155 {"label":"$", "x":4, "y":1.5},
156 {"label":"%", "x":5, "y":1.5},
157 {"label":"^", "x":6, "y":1.5},
158 {"label":"&", "x":7, "y":1.5},
159 {"label":"*", "x":8, "y":1.5},
160 {"label":"(", "x":9, "y":1.5},
161 {"label":")", "x":10, "y":1.5},
162 {"label":"_", "x":11, "y":1.5},
163 {"label":"+", "x":12, "y":1.5},
164 {"label":"Backspace", "x":13, "y":1.5, "w":2},
165
166 {"label":"Insert", "x":15.25, "y":1.5},
167 {"label":"Home", "x":16.25, "y":1.5},
168 {"label":"PgUp", "x":17.25, "y":1.5},
169
170 {"label":"Num Lock", "x":18.5, "y":1.5},
171 {"label":"/", "x":19.5, "y":1.5},
172 {"label":"*", "x":20.5, "y":1.5},
173 {"label":"-", "x":21.5, "y":1.5},
174
175 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
176 {"label":"Q", "x":1.5, "y":2.5},
177 {"label":"W", "x":2.5, "y":2.5},
178 {"label":"E", "x":3.5, "y":2.5},
179 {"label":"R", "x":4.5, "y":2.5},
180 {"label":"T", "x":5.5, "y":2.5},
181 {"label":"Y", "x":6.5, "y":2.5},
182 {"label":"U", "x":7.5, "y":2.5},
183 {"label":"I", "x":8.5, "y":2.5},
184 {"label":"O", "x":9.5, "y":2.5},
185 {"label":"P", "x":10.5, "y":2.5},
186 {"label":"{", "x":11.5, "y":2.5},
187 {"label":"}", "x":12.5, "y":2.5},
188
189 {"label":"Delete", "x":15.25, "y":2.5},
190 {"label":"End", "x":16.25, "y":2.5},
191 {"label":"PgDn", "x":17.25, "y":2.5},
192
193 {"label":"7", "x":18.5, "y":2.5},
194 {"label":"8", "x":19.5, "y":2.5},
195 {"label":"9", "x":20.5, "y":2.5},
196 {"label":"+", "x":21.5, "y":2.5, "h":2},
197
198 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
199 {"label":"A", "x":1.75, "y":3.5},
200 {"label":"S", "x":2.75, "y":3.5},
201 {"label":"D", "x":3.75, "y":3.5},
202 {"label":"F", "x":4.75, "y":3.5},
203 {"label":"G", "x":5.75, "y":3.5},
204 {"label":"H", "x":6.75, "y":3.5},
205 {"label":"J", "x":7.75, "y":3.5},
206 {"label":"K", "x":8.75, "y":3.5},
207 {"label":"L", "x":9.75, "y":3.5},
208 {"label":":", "x":10.75, "y":3.5},
209 {"label":"@", "x":11.75, "y":3.5},
210 {"label":"~", "x":12.75, "y":3.5},
211 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
212
213 {"label":"4", "x":18.5, "y":3.5},
214 {"label":"5", "x":19.5, "y":3.5},
215 {"label":"6", "x":20.5, "y":3.5},
216
217 {"label":"Shift", "x":0, "y":4.5, "w":1.25},
218 {"label":"|", "x":1.25, "y":4.5},
219 {"label":"Z", "x":2.25, "y":4.5},
220 {"label":"X", "x":3.25, "y":4.5},
221 {"label":"C", "x":4.25, "y":4.5},
222 {"label":"V", "x":5.25, "y":4.5},
223 {"label":"B", "x":6.25, "y":4.5},
224 {"label":"N", "x":7.25, "y":4.5},
225 {"label":"M", "x":8.25, "y":4.5},
226 {"label":"<", "x":9.25, "y":4.5},
227 {"label":">", "x":10.25, "y":4.5},
228 {"label":"?", "x":11.25, "y":4.5},
229 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
230
231 {"label":"\u2191", "x":16.25, "y":4.5},
232
233 {"label":"1", "x":18.5, "y":4.5},
234 {"label":"2", "x":19.5, "y":4.5},
235 {"label":"3", "x":20.5, "y":4.5},
236 {"label":"Enter", "x":21.5, "y":4.5, "h":2},
237
238 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
239 {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
240 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
241 {"x":3.75, "y":5.5, "w":6.25},
242 {"label":"AltGr", "x":10, "y":5.5, "w":1.25},
243 {"label":"Win", "x":11.25, "y":5.5, "w":1.25},
244 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
245 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
246
247 {"label":"\u2190", "x":15.25, "y":5.5},
248 {"label":"\u2193", "x":16.25, "y":5.5},
249 {"label":"\u2192", "x":17.25, "y":5.5},
250
251 {"label":"0", "x":18.5, "y":5.5, "w":2},
252 {"label":".", "x":20.5, "y":5.5}
253 ]
254 },
255 "LAYOUT_tkl_ansi": {
256 "layout": [
257 {"label":"Esc", "x":0, "y":0},
258 {"label":"F1", "x":2, "y":0},
259 {"label":"F2", "x":3, "y":0},
260 {"label":"F3", "x":4, "y":0},
261 {"label":"F4", "x":5, "y":0},
262 {"label":"F5", "x":6.5, "y":0},
263 {"label":"F6", "x":7.5, "y":0},
264 {"label":"F7", "x":8.5, "y":0},
265 {"label":"F8", "x":9.5, "y":0},
266 {"label":"F9", "x":11, "y":0},
267 {"label":"F10", "x":12, "y":0},
268 {"label":"F11", "x":13, "y":0},
269 {"label":"F12", "x":14, "y":0},
270
271 {"label":"PrtSc", "x":15.25, "y":0},
272 {"label":"Scroll Lock", "x":16.25, "y":0},
273 {"label":"Pause", "x":17.25, "y":0},
274
275 {"label":"~", "x":0, "y":1.5},
276 {"label":"1", "x":1, "y":1.5},
277 {"label":"2", "x":2, "y":1.5},
278 {"label":"3", "x":3, "y":1.5},
279 {"label":"4", "x":4, "y":1.5},
280 {"label":"5", "x":5, "y":1.5},
281 {"label":"6", "x":6, "y":1.5},
282 {"label":"7", "x":7, "y":1.5},
283 {"label":"8", "x":8, "y":1.5},
284 {"label":"9", "x":9, "y":1.5},
285 {"label":"0", "x":10, "y":1.5},
286 {"label":"_", "x":11, "y":1.5},
287 {"label":"+", "x":12, "y":1.5},
288 {"label":"Backspace", "x":13, "y":1.5, "w":2},
289
290 {"label":"Insert", "x":15.25, "y":1.5},
291 {"label":"Home", "x":16.25, "y":1.5},
292 {"label":"Page Up", "x":17.25, "y":1.5},
293
294 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
295 {"label":"Q", "x":1.5, "y":2.5},
296 {"label":"W", "x":2.5, "y":2.5},
297 {"label":"E", "x":3.5, "y":2.5},
298 {"label":"R", "x":4.5, "y":2.5},
299 {"label":"T", "x":5.5, "y":2.5},
300 {"label":"Y", "x":6.5, "y":2.5},
301 {"label":"U", "x":7.5, "y":2.5},
302 {"label":"I", "x":8.5, "y":2.5},
303 {"label":"O", "x":9.5, "y":2.5},
304 {"label":"P", "x":10.5, "y":2.5},
305 {"label":"{", "x":11.5, "y":2.5},
306 {"label":"}", "x":12.5, "y":2.5},
307 {"label":"|", "x":13.5, "y":2.5, "w":1.5},
308
309 {"label":"Delete", "x":15.25, "y":2.5},
310 {"label":"End", "x":16.25, "y":2.5},
311 {"label":"PgDn", "x":17.25, "y":2.5},
312
313 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
314 {"label":"A", "x":1.75, "y":3.5},
315 {"label":"S", "x":2.75, "y":3.5},
316 {"label":"D", "x":3.75, "y":3.5},
317 {"label":"F", "x":4.75, "y":3.5},
318 {"label":"G", "x":5.75, "y":3.5},
319 {"label":"H", "x":6.75, "y":3.5},
320 {"label":"J", "x":7.75, "y":3.5},
321 {"label":"K", "x":8.75, "y":3.5},
322 {"label":"L", "x":9.75, "y":3.5},
323 {"label":":", "x":10.75, "y":3.5},
324 {"label":"\"", "x":11.75, "y":3.5},
325 {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
326
327 {"label":"Shift", "x":0, "y":4.5, "w":2.25},
328 {"label":"Z", "x":2.25, "y":4.5},
329 {"label":"X", "x":3.25, "y":4.5},
330 {"label":"C", "x":4.25, "y":4.5},
331 {"label":"V", "x":5.25, "y":4.5},
332 {"label":"B", "x":6.25, "y":4.5},
333 {"label":"N", "x":7.25, "y":4.5},
334 {"label":"M", "x":8.25, "y":4.5},
335 {"label":"<", "x":9.25, "y":4.5},
336 {"label":">", "x":10.25, "y":4.5},
337 {"label":"?", "x":11.25, "y":4.5},
338 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
339
340 {"label":"\u2191", "x":16.25, "y":4.5},
341
342 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
343 {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
344 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
345 {"x":3.75, "y":5.5, "w":6.25},
346 {"label":"Alt", "x":10, "y":5.5, "w":1.25},
347 {"label":"Win", "x":11.25, "y":5.5, "w":1.25},
348 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
349 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
350
351 {"label":"\u2190", "x":15.25, "y":5.5},
352 {"label":"\u2193", "x":16.25, "y":5.5},
353 {"label":"\u2192", "x":17.25, "y":5.5}
354 ]
355 },
356 "LAYOUT_tkl_iso": {
357 "layout": [
358 {"label":"Esc", "x":0, "y":0},
359 {"label":"F1", "x":2, "y":0},
360 {"label":"F2", "x":3, "y":0},
361 {"label":"F3", "x":4, "y":0},
362 {"label":"F4", "x":5, "y":0},
363 {"label":"F5", "x":6.5, "y":0},
364 {"label":"F6", "x":7.5, "y":0},
365 {"label":"F7", "x":8.5, "y":0},
366 {"label":"F8", "x":9.5, "y":0},
367 {"label":"F9", "x":11, "y":0},
368 {"label":"F10", "x":12, "y":0},
369 {"label":"F11", "x":13, "y":0},
370 {"label":"F12", "x":14, "y":0},
371
372 {"label":"PrtSc", "x":15.25, "y":0},
373 {"label":"Scroll Lock", "x":16.25, "y":0},
374 {"label":"Pause", "x":17.25, "y":0},
375
376 {"label":"\u00ac", "x":0, "y":1.5},
377 {"label":"!", "x":1, "y":1.5},
378 {"label":"\"", "x":2, "y":1.5},
379 {"label":"\u00a3", "x":3, "y":1.5},
380 {"label":"$", "x":4, "y":1.5},
381 {"label":"%", "x":5, "y":1.5},
382 {"label":"^", "x":6, "y":1.5},
383 {"label":"&", "x":7, "y":1.5},
384 {"label":"*", "x":8, "y":1.5},
385 {"label":"(", "x":9, "y":1.5},
386 {"label":")", "x":10, "y":1.5},
387 {"label":"_", "x":11, "y":1.5},
388 {"label":"+", "x":12, "y":1.5},
389 {"label":"Backspace", "x":13, "y":1.5, "w":2},
390
391 {"label":"Insert", "x":15.25, "y":1.5},
392 {"label":"Home", "x":16.25, "y":1.5},
393 {"label":"PgUp", "x":17.25, "y":1.5},
394
395 {"label":"Tab", "x":0, "y":2.5, "w":1.5},
396 {"label":"Q", "x":1.5, "y":2.5},
397 {"label":"W", "x":2.5, "y":2.5},
398 {"label":"E", "x":3.5, "y":2.5},
399 {"label":"R", "x":4.5, "y":2.5},
400 {"label":"T", "x":5.5, "y":2.5},
401 {"label":"Y", "x":6.5, "y":2.5},
402 {"label":"U", "x":7.5, "y":2.5},
403 {"label":"I", "x":8.5, "y":2.5},
404 {"label":"O", "x":9.5, "y":2.5},
405 {"label":"P", "x":10.5, "y":2.5},
406 {"label":"{", "x":11.5, "y":2.5},
407 {"label":"}", "x":12.5, "y":2.5},
408
409 {"label":"Delete", "x":15.25, "y":2.5},
410 {"label":"End", "x":16.25, "y":2.5},
411 {"label":"PgDn", "x":17.25, "y":2.5},
412
413 {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
414 {"label":"A", "x":1.75, "y":3.5},
415 {"label":"S", "x":2.75, "y":3.5},
416 {"label":"D", "x":3.75, "y":3.5},
417 {"label":"F", "x":4.75, "y":3.5},
418 {"label":"G", "x":5.75, "y":3.5},
419 {"label":"H", "x":6.75, "y":3.5},
420 {"label":"J", "x":7.75, "y":3.5},
421 {"label":"K", "x":8.75, "y":3.5},
422 {"label":"L", "x":9.75, "y":3.5},
423 {"label":":", "x":10.75, "y":3.5},
424 {"label":"@", "x":11.75, "y":3.5},
425 {"label":"~", "x":12.75, "y":3.5},
426 {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
427
428 {"label":"Shift", "x":0, "y":4.5, "w":1.25},
429 {"label":"|", "x":1.25, "y":4.5},
430 {"label":"Z", "x":2.25, "y":4.5},
431 {"label":"X", "x":3.25, "y":4.5},
432 {"label":"C", "x":4.25, "y":4.5},
433 {"label":"V", "x":5.25, "y":4.5},
434 {"label":"B", "x":6.25, "y":4.5},
435 {"label":"N", "x":7.25, "y":4.5},
436 {"label":"M", "x":8.25, "y":4.5},
437 {"label":"<", "x":9.25, "y":4.5},
438 {"label":">", "x":10.25, "y":4.5},
439 {"label":"?", "x":11.25, "y":4.5},
440 {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
441
442 {"label":"\u2191", "x":16.25, "y":4.5},
443
444 {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
445 {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
446 {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
447 {"x":3.75, "y":5.5, "w":6.25},
448 {"label":"AltGr", "x":10, "y":5.5, "w":1.25},
449 {"label":"Win", "x":11.25, "y":5.5, "w":1.25},
450 {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
451 {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
452
453 {"label":"\u2190", "x":15.25, "y":5.5},
454 {"label":"\u2193", "x":16.25, "y":5.5},
455 {"label":"\u2192", "x":17.25, "y":5.5}
456 ]
457 }
458 }
459}
diff --git a/keyboards/maartenwut/wasdat_code/keymaps/default/keymap.c b/keyboards/maartenwut/wasdat_code/keymaps/default/keymap.c
new file mode 100644
index 000000000..beee150b6
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
1/* Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 /*
20 * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
21 * │Esc│   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Slk│Pse│
22 * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
23 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
24 * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
25 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
26 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
27 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
28 * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter │               │ 4 │ 5 │ 6 │   │
29 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤
30 * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
31 * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
32 * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
33 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
34 */
35 LAYOUT_fullsize_ansi(
36 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
37
38 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
40 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
41 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
42 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
43 ),
44 LAYOUT_fullsize_ansi(
45 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, BL_TOGG, _______, _______, KC_MUTE,
46
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, _______, _______, _______, _______,
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, _______, _______, _______, _______,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
52 )
53};
diff --git a/keyboards/maartenwut/wasdat_code/keymaps/default/readme.md b/keyboards/maartenwut/wasdat_code/keymaps/default/readme.md
new file mode 100644
index 000000000..66cf59389
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default ANSI keymap for the Wasdat
diff --git a/keyboards/maartenwut/wasdat_code/keymaps/default_iso/keymap.c b/keyboards/maartenwut/wasdat_code/keymaps/default_iso/keymap.c
new file mode 100644
index 000000000..8bdad4831
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/keymaps/default_iso/keymap.c
@@ -0,0 +1,44 @@
1/* Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 /*
20 * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
21 * │Esc│   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Slk│Pse│
22 * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
23 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
24 * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
25 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
26 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
27 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │
28 * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │               │ 4 │ 5 │ 6 │   │
29 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
30 * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
31 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
32 * │Ctrl│GUI │Alt │                        │AlGr│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
33 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
34 */
35 LAYOUT_fullsize_iso(
36 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
37
38 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
40 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
41 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
42 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
43 )
44};
diff --git a/keyboards/maartenwut/wasdat_code/keymaps/default_iso/readme.md b/keyboards/maartenwut/wasdat_code/keymaps/default_iso/readme.md
new file mode 100644
index 000000000..e36d76420
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/keymaps/default_iso/readme.md
@@ -0,0 +1 @@
# The default ISO keymap for the Wasdat
diff --git a/keyboards/maartenwut/wasdat_code/keymaps/via/keymap.c b/keyboards/maartenwut/wasdat_code/keymaps/via/keymap.c
new file mode 100644
index 000000000..c3155c1e7
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
1/* Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
21
22 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
24 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
25 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
27 ),
28 [1] = LAYOUT_all(
29 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, BL_TOGG, _______, _______, KC_MUTE,
30
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, _______, _______, _______, _______,
32 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, _______, _______, _______, _______,
33 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
34 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
36 ),
37 [2] = LAYOUT_all(
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
42 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
43 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
44 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
45 )
46};
diff --git a/keyboards/maartenwut/wasdat_code/keymaps/via/rules.mk b/keyboards/maartenwut/wasdat_code/keymaps/via/rules.mk
new file mode 100644
index 000000000..36b7ba9cb
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/maartenwut/wasdat_code/matrix.c b/keyboards/maartenwut/wasdat_code/matrix.c
new file mode 100644
index 000000000..7844db7ab
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/matrix.c
@@ -0,0 +1,369 @@
1/*
2Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include <stdint.h>
18#include <stdbool.h>
19#include "wait.h"
20#include "util.h"
21#include "matrix.h"
22#include "debounce.h"
23#include "quantum.h"
24
25#ifdef DIRECT_PINS
26static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS;
27#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
28static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
29//static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
30#endif
31
32// matrix code
33
34#ifdef DIRECT_PINS
35
36static void init_pins(void) {
37 for (int row = 0; row < MATRIX_ROWS; row++) {
38 for (int col = 0; col < MATRIX_COLS; col++) {
39 pin_t pin = direct_pins[row][col];
40 if (pin != NO_PIN) {
41 setPinInputHigh(pin);
42 }
43 }
44 }
45}
46
47static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
48 matrix_row_t last_row_value = current_matrix[current_row];
49 current_matrix[current_row] = 0;
50
51 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
52 pin_t pin = direct_pins[current_row][col_index];
53 if (pin != NO_PIN) {
54 current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
55 }
56 }
57
58 return (last_row_value != current_matrix[current_row]);
59}
60
61#elif (DIODE_DIRECTION == COL2ROW)
62
63static void select_row(uint8_t row) {
64 setPinOutput(row_pins[row]);
65 writePinLow(row_pins[row]);
66}
67
68static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); }
69
70static void unselect_rows(void) {
71 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
72 setPinInputHigh(row_pins[x]);
73 }
74}
75
76static void init_pins(void) {
77 unselect_rows();
78 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
79 setPinInputHigh(col_pins[x]);
80 }
81}
82
83static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
84 // Store last value of row prior to reading
85 matrix_row_t last_row_value = current_matrix[current_row];
86
87 // Clear data in matrix row
88 current_matrix[current_row] = 0;
89
90 // Select row and wait for row selecton to stabilize
91 select_row(current_row);
92 wait_us(30);
93
94 // For each col...
95 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
96
97 // Select the col pin to read (active low)
98 uint8_t pin_state = readPin(col_pins[col_index]);
99
100 // Populate the matrix row with the state of the col pin
101 current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
102 }
103
104 // Unselect row
105 unselect_row(current_row);
106
107 return (last_row_value != current_matrix[current_row]);
108}
109
110#elif (DIODE_DIRECTION == ROW2COL)
111
112/* Cols 0 - 15
113 * col 0: F7
114 * col 1: F5
115 * col 2: F6
116 * col 3: F1
117 * col 4: F4
118 * col 5: F0
119 * These columns use a 74HC237D 3 to 8 bit demultiplexer. D4 is the enable pin, must be set high to use it.
120 * A0 A1 A2
121 * col / pin: PD2 PD1 PD0
122 * 6: 1 1 1
123 * col 7: D3
124 * col 8: B7
125 * 9: 0 1 1
126 * 10: 1 0 1
127 * 11: 0 0 1
128 * 12: 1 1 0
129 * 13: 0 1 0
130 * 14: 1 0 0
131 * 15: 0 0 0
132 */
133static void select_col(uint8_t col) {
134 switch (col) {
135 case 0:
136 writePinLow(F7);
137 break;
138 case 1:
139 writePinLow(F5);
140 break;
141 case 2:
142 writePinLow(F6);
143 break;
144 case 3:
145 writePinLow(F1);
146 break;
147 case 4:
148 writePinLow(F4);
149 break;
150 case 5:
151 writePinLow(F0);
152 break;
153 case 6:
154 writePinHigh(D4);
155 writePinHigh(D2);
156 writePinHigh(D1);
157 writePinHigh(D0);
158 break;
159 case 7:
160 writePinLow(D5);
161 break;
162 case 8:
163 writePinLow(D3);
164 break;
165 case 9:
166 writePinHigh(D4);
167 writePinHigh(D1);
168 writePinHigh(D0);
169 break;
170 case 10:
171 writePinHigh(D4);
172 writePinHigh(D2);
173 writePinHigh(D0);
174 break;
175 case 11:
176 writePinHigh(D4);
177 writePinHigh(D0);
178 break;
179 case 12:
180 writePinHigh(D4);
181 writePinHigh(D2);
182 writePinHigh(D1);
183 break;
184 case 13:
185 writePinHigh(D4);
186 writePinHigh(D1);
187 break;
188 case 14:
189 writePinHigh(D4);
190 writePinHigh(D2);
191 break;
192 case 15:
193 writePinHigh(D4);
194 break;
195 }
196}
197
198static void unselect_col(uint8_t col) {
199 switch (col) {
200 case 0:
201 writePinHigh(F7);
202 break;
203 case 1:
204 writePinHigh(F5);
205 break;
206 case 2:
207 writePinHigh(F6);
208 break;
209 case 3:
210 writePinHigh(F1);
211 break;
212 case 4:
213 writePinHigh(F4);
214 break;
215 case 5:
216 writePinHigh(F0);
217 break;
218 case 6:
219 writePinLow(D4);
220 writePinLow(D2);
221 writePinLow(D1);
222 writePinLow(D0);
223 break;
224 case 7:
225 writePinHigh(D5);
226 break;
227 case 8:
228 writePinHigh(D3);
229 break;
230 case 9:
231 writePinLow(D4);
232 writePinLow(D2);
233 writePinLow(D1);
234 writePinLow(D0);
235 break;
236 case 10:
237 writePinLow(D4);
238 writePinLow(D2);
239 writePinLow(D1);
240 writePinLow(D0);
241 break;
242 case 11:
243 writePinLow(D4);
244 writePinLow(D2);
245 writePinLow(D1);
246 writePinLow(D0);
247 break;
248 case 12:
249 writePinLow(D4);
250 writePinLow(D2);
251 writePinLow(D1);
252 writePinLow(D0);
253 break;
254 case 13:
255 writePinLow(D4);
256 writePinLow(D2);
257 writePinLow(D1);
258 writePinLow(D0);
259 break;
260 case 14:
261 writePinLow(D4);
262 writePinLow(D2);
263 writePinLow(D1);
264 writePinLow(D0);
265 break;
266 case 15:
267 writePinLow(D4);
268 writePinLow(D2);
269 writePinLow(D1);
270 writePinLow(D0);
271 break;
272 }
273}
274
275static void unselect_cols(void) {
276 //Native
277 writePinHigh(F7);
278 writePinHigh(F5);
279 writePinHigh(F6);
280 writePinHigh(F1);
281 writePinHigh(F4);
282 writePinHigh(F0);
283 writePinHigh(D3);
284 writePinHigh(D5);
285
286 //Demultiplexer
287 writePinLow(D4);
288 writePinLow(D2);
289 writePinLow(D1);
290 writePinLow(D0);
291}
292
293static void init_pins(void) {
294 unselect_cols();
295 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
296 setPinInputHigh(row_pins[x]);
297 }
298 setPinOutput(D0);
299 setPinOutput(D1);
300 setPinOutput(D2);
301 setPinOutput(D3);
302 setPinOutput(F7);
303 setPinOutput(F5);
304 setPinOutput(F6);
305 setPinOutput(F1);
306 setPinOutput(F4);
307 setPinOutput(F0);
308 setPinOutput(D3);
309 setPinOutput(D5);
310 setPinOutput(D4);
311}
312
313static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
314 bool matrix_changed = false;
315
316 // Select col and wait for col selecton to stabilize
317 select_col(current_col);
318 wait_us(30);
319
320 // For each row...
321 for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
322 // Store last value of row prior to reading
323 matrix_row_t last_row_value = current_matrix[row_index];
324
325 // Check row pin state
326 if (readPin(row_pins[row_index]) == 0) {
327 // Pin LO, set col bit
328 current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
329 } else {
330 // Pin HI, clear col bit
331 current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
332 }
333
334 // Determine if the matrix changed state
335 if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) {
336 matrix_changed = true;
337 }
338 }
339
340 // Unselect col
341 unselect_col(current_col);
342
343 return matrix_changed;
344}
345
346#endif
347
348void matrix_init_custom(void) {
349 // initialize key pins
350 init_pins();
351}
352
353bool matrix_scan_custom(matrix_row_t current_matrix[]) {
354 bool changed = false;
355
356#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW)
357 // Set row, read cols
358 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
359 changed |= read_cols_on_row(current_matrix, current_row);
360 }
361#elif (DIODE_DIRECTION == ROW2COL)
362 // Set col, read rows
363 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
364 changed |= read_rows_on_col(current_matrix, current_col);
365 }
366#endif
367
368 return changed;
369}
diff --git a/keyboards/maartenwut/wasdat_code/readme.md b/keyboards/maartenwut/wasdat_code/readme.md
new file mode 100644
index 000000000..403fabc68
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/readme.md
@@ -0,0 +1,19 @@
1# Wasdat Code
2
3A drop-in replacement controller for the WASD CODE TKL and fullsize models.
4
5* Keyboard Maintainer: [Maartenwut](https://github.com/Maartenwut)
6* Hardware Supported: WASD CODE TKL/Fullsize ANSI & ISO with Wasdat Code controller
7* Hardware Availability: [maartenwut.com](https://maartenwut.com/product/wasdat-code/)
8
9## Flashing
10
11The WASD has no reset button, so to put the controller in flashing mode, simply unplug the USB cable and plug it back in while holding the ESC key on the keyboard.
12
13---
14
15Make example for this keyboard (after setting up your build environment):
16
17 make maartenwut/wasdat_code:default
18
19See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/maartenwut/wasdat_code/rules.mk b/keyboards/maartenwut/wasdat_code/rules.mk
new file mode 100644
index 000000000..642f8dc51
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/rules.mk
@@ -0,0 +1,37 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = qmk-dfu
13
14# Build Options
15# change yes to no to disable
16#
17BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = no # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = no # Console for debug
21COMMAND_ENABLE = no # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = yes # USB Nkey Rollover
26BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
27RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
28MIDI_ENABLE = no # MIDI support
29BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
30AUDIO_ENABLE = no # Audio output on port C6
31FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
32HD44780_ENABLE = no # Enable support for HD44780 based LCDs
33
34CUSTOM_MATRIX = lite
35SRC += matrix.c
36
37LAYOUTS = fullsize_ansi fullsize_iso tkl_ansi tkl_iso
diff --git a/keyboards/maartenwut/wasdat_code/wasdat_code.c b/keyboards/maartenwut/wasdat_code/wasdat_code.c
new file mode 100644
index 000000000..044439fb5
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/wasdat_code.c
@@ -0,0 +1,47 @@
1/* Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
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 "wasdat_code.h"
17
18// Optional override functions below.
19// You can leave any or all of these undefined.
20// These are only required if you want to perform custom actions.
21
22void matrix_init_kb(void) {
23 // put your keyboard start-up code here
24 // runs once when the firmware starts up
25
26 matrix_init_user();
27 led_init_ports();
28}
29
30void led_init_ports(void) {
31 setPinOutput(B1);
32 setPinOutput(B2);
33 setPinOutput(B3);
34 writePinHigh(B1);
35 writePinHigh(B2);
36 writePinHigh(B3);
37}
38
39bool led_update_kb(led_t led_state) {
40 if(led_update_user(led_state)) {
41 writePin(B1, !led_state.caps_lock);
42 writePin(B2, !led_state.scroll_lock);
43 writePin(B3, !led_state.num_lock);
44 }
45
46 return true;
47}
diff --git a/keyboards/maartenwut/wasdat_code/wasdat_code.h b/keyboards/maartenwut/wasdat_code/wasdat_code.h
new file mode 100644
index 000000000..5b3ed2091
--- /dev/null
+++ b/keyboards/maartenwut/wasdat_code/wasdat_code.h
@@ -0,0 +1,107 @@
1/* Copyright 2019 Maarten Dekkers <maartenwut@gmail.com>
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#pragma once
17
18#include "quantum.h"
19
20#define XXX KC_NO
21
22/* This is a shortcut to help you visually see your layout.
23 *
24 * The first section contains all of the arguments representing the physical
25 * layout of the board and position of the keys.
26 *
27 * The second converts the arguments into a two-dimensional array which
28 * represents the switch matrix.
29 */
30
31#define LAYOUT_all LAYOUT_fullsize_iso
32
33#define LAYOUT_fullsize_ansi( \
34 k05, k64, k62, k22, k02, k31, k0c, k2f, k6f, k6b, k3b, k0b, k5b, k33, k43, k41, \
35 k65, k35, k34, k32, k30, k60, k6a, k3a, k3c, k3f, k3d, k6d, k6c, k2b, k67, k6e, k66, k78, k77, k76, k56, \
36 k25, k45, k44, k42, k40, k20, k2a, k4a, k4c, k4f, k4d, k2d, k2c, k1b, k68, k3e, k36, k48, k47, k46, k4e, \
37 k24, k15, k14, k12, k10, k00, k0a, k1a, k1c, k1f, k1d, k0d, k7b, k28, k27, k26, \
38 k29, k75, k74, k72, k70, k50, k5a, k7a, k7c, k7f, k5d, k19, k0e, k18, k17, k16, k1e, \
39 k61, k21, k03, k08, k53, k11, k23, k71, k5e, k58, k57, k07, k06 \
40) \
41{ \
42 { k00, XXX, k02, k03, XXX, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, k0e, XXX }, \
43 { k10, k11, k12, XXX, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
44 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX, k2f }, \
45 { k30, k31, k32, k33, k34, k35, k36, XXX, XXX, XXX, k3a, k3b, k3c, k3d, k3e, k3f }, \
46 { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4a, XXX, k4c, k4d, k4e, k4f }, \
47 { k50, XXX, XXX, k53, XXX, XXX, k56, k57, k58, XXX, k5a, k5b, XXX, k5d, k5e, XXX }, \
48 { k60, k61, k62, XXX, k64, k65, k66, k67, k68, XXX, k6a, k6b, k6c, k6d, k6e, k6f }, \
49 { k70, k71, k72, XXX, k74, k75, k76, k77, k78, XXX, k7a, k7b, k7c, XXX, XXX, k7f } \
50}
51
52#define LAYOUT_fullsize_iso( \
53 k05, k64, k62, k22, k02, k31, k0c, k2f, k6f, k6b, k3b, k0b, k5b, k33, k43, k41, \
54 k65, k35, k34, k32, k30, k60, k6a, k3a, k3c, k3f, k3d, k6d, k6c, k2b, k67, k6e, k66, k78, k77, k76, k56, \
55 k25, k45, k44, k42, k40, k20, k2a, k4a, k4c, k4f, k4d, k2d, k2c, k68, k3e, k36, k48, k47, k46, k4e, \
56 k24, k15, k14, k12, k10, k00, k0a, k1a, k1c, k1f, k1d, k0d, k1b, k7b, k28, k27, k26, \
57 k29, k04, k75, k74, k72, k70, k50, k5a, k7a, k7c, k7f, k5d, k19, k0e, k18, k17, k16, k1e, \
58 k61, k21, k03, k08, k53, k11, k23, k71, k5e, k58, k57, k07, k06 \
59) \
60{ \
61 { k00, XXX, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, k0e, XXX }, \
62 { k10, k11, k12, XXX, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
63 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX, k2f }, \
64 { k30, k31, k32, k33, k34, k35, k36, XXX, XXX, XXX, k3a, k3b, k3c, k3d, k3e, k3f }, \
65 { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4a, XXX, k4c, k4d, k4e, k4f }, \
66 { k50, XXX, XXX, k53, XXX, XXX, k56, k57, k58, XXX, k5a, k5b, XXX, k5d, k5e, XXX }, \
67 { k60, k61, k62, XXX, k64, k65, k66, k67, k68, XXX, k6a, k6b, k6c, k6d, k6e, k6f }, \
68 { k70, k71, k72, XXX, k74, k75, k76, k77, k78, XXX, k7a, k7b, k7c, XXX, XXX, k7f } \
69}
70
71#define LAYOUT_tkl_ansi( \
72 k05, k64, k62, k22, k02, k31, k0c, k2f, k6f, k6b, k3b, k0b, k5b, k33, k43, k41, \
73 k65, k35, k34, k32, k30, k60, k6a, k3a, k3c, k3f, k3d, k6d, k6c, k2b, k67, k6e, k66, \
74 k25, k45, k44, k42, k40, k20, k2a, k4a, k4c, k4f, k4d, k2d, k2c, k1b, k68, k3e, k36, \
75 k24, k15, k14, k12, k10, k00, k0a, k1a, k1c, k1f, k1d, k0d, k7b, \
76 k29, k75, k74, k72, k70, k50, k5a, k7a, k7c, k7f, k5d, k19, k0e, \
77 k61, k21, k03, k08, k53, k11, k23, k71, k5e, k58, k57 \
78) \
79{ \
80 { k00, XXX, k02, k03, XXX, k05, XXX, XXX, k08, XXX, k0a, k0b, k0c, k0d, k0e, XXX }, \
81 { k10, k11, k12, XXX, k14, k15, XXX, XXX, XXX, k19, k1a, k1b, k1c, k1d, XXX, k1f }, \
82 { k20, k21, k22, k23, k24, k25, XXX, XXX, XXX, k29, k2a, k2b, k2c, k2d, XXX, k2f }, \
83 { k30, k31, k32, k33, k34, k35, k36, XXX, XXX, XXX, k3a, k3b, k3c, k3d, k3e, k3f }, \
84 { k40, k41, k42, k43, k44, k45, XXX, XXX, XXX, XXX, k4a, XXX, k4c, k4d, XXX, k4f }, \
85 { k50, XXX, XXX, k53, XXX, XXX, XXX, k57, k58, XXX, k5a, k5b, XXX, k5d, k5e, XXX }, \
86 { k60, k61, k62, XXX, k64, k65, k66, k67, k68, XXX, k6a, k6b, k6c, k6d, k6e, k6f }, \
87 { k70, k71, k72, XXX, k74, k75, XXX, XXX, XXX, XXX, k7a, k7b, k7c, XXX, XXX, k7f } \
88}
89
90#define LAYOUT_tkl_iso( \
91 k05, k64, k62, k22, k02, k31, k0c, k2f, k6f, k6b, k3b, k0b, k5b, k33, k43, k41, \
92 k65, k35, k34, k32, k30, k60, k6a, k3a, k3c, k3f, k3d, k6d, k6c, k2b, k67, k6e, k66, \
93 k25, k45, k44, k42, k40, k20, k2a, k4a, k4c, k4f, k4d, k2d, k2c, k68, k3e, k36, \
94 k24, k15, k14, k12, k10, k00, k0a, k1a, k1c, k1f, k1d, k0d, k1b, k7b, \
95 k29, k04, k75, k74, k72, k70, k50, k5a, k7a, k7c, k7f, k5d, k19, k0e, \
96 k61, k21, k03, k08, k53, k11, k23, k71, k5e, k58, k57 \
97) \
98{ \
99 { k00, XXX, k02, k03, k04, k05, XXX, XXX, k08, XXX, k0a, k0b, k0c, k0d, k0e, XXX }, \
100 { k10, k11, k12, XXX, k14, k15, XXX, XXX, XXX, k19, k1a, k1b, k1c, k1d, XXX, k1f }, \
101 { k20, k21, k22, k23, k24, k25, XXX, XXX, XXX, k29, k2a, k2b, k2c, k2d, XXX, k2f }, \
102 { k30, k31, k32, k33, k34, k35, k36, XXX, XXX, XXX, k3a, k3b, k3c, k3d, k3e, k3f }, \
103 { k40, k41, k42, k43, k44, k45, XXX, XXX, XXX, XXX, k4a, XXX, k4c, k4d, XXX, k4f }, \
104 { k50, XXX, XXX, k53, XXX, XXX, XXX, k57, k58, XXX, k5a, k5b, XXX, k5d, k5e, XXX }, \
105 { k60, k61, k62, XXX, k64, k65, k66, k67, k68, XXX, k6a, k6b, k6c, k6d, k6e, k6f }, \
106 { k70, k71, k72, XXX, k74, k75, XXX, XXX, XXX, XXX, k7a, k7b, k7c, XXX, XXX, k7f } \
107}
diff --git a/keyboards/montsinger/rebound/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/keymaps/rossman360/keymap.c
deleted file mode 100644
index 8391ec8e1..000000000
--- a/keyboards/montsinger/rebound/keymaps/rossman360/keymap.c
+++ /dev/null
@@ -1,55 +0,0 @@
1#include QMK_KEYBOARD_H
2#include "rossman360.h"
3
4#define PGMOD LT(_NUM, KC_PGDN)
5#define TABMOD LT(_FN1, KC_TAB)
6#define SPCMOD LT(_FN1, KC_SPACE)
7#define ENTMOD LT(_FN2, KC_ENTER)
8#define ESCMOD LT(_NUM, KC_ESC)
9#define RSMOD LT(_FN1, KC_RSHIFT)
10
11enum layer_names {
12 _BASE,
13 _DEL,
14 _FN1,
15 _FN2,
16 _NUM,
17};
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21[_BASE] = LAYOUT_ortho_4x12(
22 KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , NTAB ,
23 JUMPBACK, 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_MINS,
25 CMDBSP , ALTDEL , KC_NO , CTRLSP , TABMOD , PGMOD , ENTMOD , SPCMOD , MO(_DEL),KC_NO , KC_BSPC, KC_DEL
26 ),
27
28[_FN1] = LAYOUT_ortho_4x12(
29 _______, TAB1 , TAB2 , TAB3 , TAB4 , _______, _______, UNDO , _______, _______, _______, CTAB ,
30 KC_CAPS, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP , KC_RIGHT,KC_END , KC_NO ,
31 _______, _______, XPANDR , _______, _______, _______, _______, PMERGE , KC_DOWN, _______, _______, _______,
32 WREFRESH,_______, _______, _______, LWORD , RWORD , RVOLD , RVOLU , _______, _______, _______, _______
33 ),
34
35[_FN2] = LAYOUT_ortho_4x12(
36 _______, SPEAK1 , SPEAK2 , SPEAK3 , SPEAK4 , _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, PARADOWN, CSPEAK, _______, _______, _______, _______, _______, _______
40 ),
41
42[_DEL] = LAYOUT_ortho_4x12(
43 _______, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
44 REMCAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP ,KC_RIGHT, _______, _______,
45 _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
46 _______, _______, _______, KC_DEL , KC_BSPC, BWORD , _______, _______, _______, _______, _______, _______
47 ),
48
49[_NUM] = LAYOUT_ortho_4x12(
50 _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_MINS, KC_EQL,
51 KC_CAPS, _______, _______, _______, _______, _______, KC_MINS, KC_4 , KC_5 , KC_6 , KC_COLN, _______,
52 _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_1 , KC_2 , KC_3 , KC_BSLS, _______,
53 _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_0 , _______, _______, _______
54 )
55};
diff --git a/keyboards/montsinger/rebound/readme.md b/keyboards/montsinger/rebound/readme.md
index d634408cc..024b4a96b 100755
--- a/keyboards/montsinger/rebound/readme.md
+++ b/keyboards/montsinger/rebound/readme.md
@@ -5,11 +5,12 @@
5A conjoined-split 40% 4x12 ortholinear keyboard made and sold by Montsinger. [More info on Montsinger.net](https://montsinger.net). 5A conjoined-split 40% 4x12 ortholinear keyboard made and sold by Montsinger. [More info on Montsinger.net](https://montsinger.net).
6 6
7* Keyboard Maintainer: [Rossman360](https://github.com/rossman360) 7* Keyboard Maintainer: [Rossman360](https://github.com/rossman360)
8* Hardware Supported: Pro Micro, Elite-C 8* Hardware Supported: Rebound rev1 or rev2; Pro Micro or Elite-C
9* Hardware Availability: [Montsinger.net](https://montsinger.net) 9* Hardware Availability: [Montsinger.net](https://montsinger.net)
10 10
11Make example for this keyboard (after setting up your build environment): 11Make example for this keyboard (after setting up your build environment):
12 12
13 make montsinger/rebound:default 13 make montsinger/rebound/rev1:default # for rev1
14 make montsinger/rebound/rev2:default # for rev2
14 15
15See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs) \ No newline at end of file 16See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs) \ No newline at end of file
diff --git a/keyboards/montsinger/rebound/rebound.h b/keyboards/montsinger/rebound/rebound.h
index 0ba4c51ce..c9fc26277 100644
--- a/keyboards/montsinger/rebound/rebound.h
+++ b/keyboards/montsinger/rebound/rebound.h
@@ -14,26 +14,12 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#pragma once 17#pragma once
18 18
19#include "quantum.h" 19#include "quantum.h"
20 20
21/* This is a shortcut to help you visually see your layout. 21#if defined(KEYBOARD_montsinger_rebound_rev1)
22 * The first section contains all of the arguments representing the 22 #include "rev1.h"
23 * layout of the board and position of the keys. 23#elif defined(KEYBOARD_montsinger_rebound_rev2)
24 * 24 #include "rev2.h"
25 * The second converts the arguments into a two-dimensional array which 25#endif
26 * represents the switch matrix.
27 */
28
29#define LAYOUT_ortho_4x12( \
30 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
31 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
32 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,\
33 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B\
34 ) { \
35 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
36 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
37 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
38 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B } \
39}
diff --git a/keyboards/montsinger/rebound/config.h b/keyboards/montsinger/rebound/rev1/config.h
index 271664d96..271664d96 100644
--- a/keyboards/montsinger/rebound/config.h
+++ b/keyboards/montsinger/rebound/rev1/config.h
diff --git a/keyboards/montsinger/rebound/rev1/info.json b/keyboards/montsinger/rebound/rev1/info.json
new file mode 100644
index 000000000..5865aa66a
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev1/info.json
@@ -0,0 +1,61 @@
1{
2 "keyboard": "montsinger/rebound/rev1",
3 "url": "https://montsinger.net",
4 "maintainer": "rossman360",
5 "width": 13,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_ortho_4x12": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16 {"x":7, "y":0},
17 {"x":8, "y":0},
18 {"x":9, "y":0},
19 {"x":10, "y":0},
20 {"x":11, "y":0},
21 {"x":12, "y":0},
22 {"x":0, "y":1},
23 {"x":1, "y":1},
24 {"x":2, "y":1},
25 {"x":3, "y":1},
26 {"x":4, "y":1},
27 {"x":5, "y":1},
28 {"x":7, "y":1},
29 {"x":8, "y":1},
30 {"x":9, "y":1},
31 {"x":10, "y":1},
32 {"x":11, "y":1},
33 {"x":12, "y":1},
34 {"x":0, "y":2},
35 {"x":1, "y":2},
36 {"x":2, "y":2},
37 {"x":3, "y":2},
38 {"x":4, "y":2},
39 {"x":5, "y":2},
40 {"x":7, "y":2},
41 {"x":8, "y":2},
42 {"x":9, "y":2},
43 {"x":10, "y":2},
44 {"x":11, "y":2},
45 {"x":12, "y":2},
46 {"x":0, "y":3},
47 {"x":1, "y":3},
48 {"x":2, "y":3},
49 {"x":3, "y":3},
50 {"x":4, "y":3},
51 {"x":5, "y":3},
52 {"x":7, "y":3},
53 {"x":8, "y":3},
54 {"x":9, "y":3},
55 {"x":10, "y":3},
56 {"x":11, "y":3},
57 {"x":12, "y":3}
58 ]
59 }
60 }
61} \ No newline at end of file
diff --git a/keyboards/montsinger/rebound/keymaps/curry/keymap.c b/keyboards/montsinger/rebound/rev1/keymaps/curry/keymap.c
index 1b8f4f4ac..1b8f4f4ac 100644
--- a/keyboards/montsinger/rebound/keymaps/curry/keymap.c
+++ b/keyboards/montsinger/rebound/rev1/keymaps/curry/keymap.c
diff --git a/keyboards/montsinger/rebound/keymaps/curry/rules.mk b/keyboards/montsinger/rebound/rev1/keymaps/curry/rules.mk
index 36225f7ba..36225f7ba 100644
--- a/keyboards/montsinger/rebound/keymaps/curry/rules.mk
+++ b/keyboards/montsinger/rebound/rev1/keymaps/curry/rules.mk
diff --git a/keyboards/montsinger/rebound/keymaps/default/keymap.c b/keyboards/montsinger/rebound/rev1/keymaps/default/keymap.c
index 94d9ef91d..94d9ef91d 100644
--- a/keyboards/montsinger/rebound/keymaps/default/keymap.c
+++ b/keyboards/montsinger/rebound/rev1/keymaps/default/keymap.c
diff --git a/keyboards/montsinger/rebound/rev1/rev1.h b/keyboards/montsinger/rebound/rev1/rev1.h
new file mode 100644
index 000000000..a4e180e2e
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev1/rev1.h
@@ -0,0 +1,39 @@
1/* Copyright 2020 Ross Montsinger
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
17#pragma once
18
19#include "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 * The first section contains all of the arguments representing the
23 * layout of the board and position of the keys.
24 *
25 * The second converts the arguments into a two-dimensional array which
26 * represents the switch matrix.
27 */
28
29#define LAYOUT_ortho_4x12( \
30 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
31 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
32 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,\
33 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B\
34 ) { \
35 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
36 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
37 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
38 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B } \
39}
diff --git a/keyboards/montsinger/rebound/rev1/rules.mk b/keyboards/montsinger/rebound/rev1/rules.mk
new file mode 100644
index 000000000..9487213e8
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev1/rules.mk
@@ -0,0 +1,32 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu
13
14BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
15MOUSEKEY_ENABLE = yes # Mouse keys
16EXTRAKEY_ENABLE = yes # Audio control and System control
17CONSOLE_ENABLE = yes # Console for debug
18COMMAND_ENABLE = yes # Commands for debug and configuration
19# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
21# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
22NKRO_ENABLE = no # USB Nkey Rollover
23BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
24RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
25MIDI_ENABLE = no # MIDI support
26BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
27AUDIO_ENABLE = no # Audio output on port C6
28FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
29HD44780_ENABLE = no # Enable support for HD44780 based LCDs
30
31LAYOUTS = ortho_4x12
32LAYOUTS_HAS_RGB = no \ No newline at end of file
diff --git a/keyboards/montsinger/rebound/rev2/config.h b/keyboards/montsinger/rebound/rev2/config.h
new file mode 100644
index 000000000..39f5206f7
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev2/config.h
@@ -0,0 +1,65 @@
1/*
2Copyright 2020 Ross Montsinger
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11You should have received a copy of the GNU General Public License
12along with this program. If not, see <http://www.gnu.org/licenses/>.
13*/
14
15#pragma once
16
17#include "config_common.h"
18
19/* USB Device descriptor parameter */
20
21#define VENDOR_ID 0xFEED
22#define PRODUCT_ID 0x552F
23#define DEVICE_VER 0x0002
24#define MANUFACTURER Montsinger
25#define PRODUCT Rebound
26#define DESCRIPTION "A conjoined Let's Split"
27
28/* key matrix size */
29
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 12
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on
40diode)
41 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
42 *
43 */
44
45#define MATRIX_ROW_PINS { D1, B5, B2, B6, B0 }
46#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4, B3, B1, F7, F6, F5, F4 }
47#define UNUSED_PINS { }
48
49#define ENCODERS_PAD_A { D2 }
50#define ENCODERS_PAD_B { D3 }
51
52/* COL2ROW, ROW2COL*/
53#define DIODE_DIRECTION ROW2COL
54
55/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
56#define DEBOUNCE 5
57
58/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
59#define LOCKING_SUPPORT_ENABLE
60/* Locking resynchronize hack */
61#define LOCKING_RESYNC_ENABLE
62
63/* Bootmagic Lite key configuration */
64// #define BOOTMAGIC_LITE_ROW 0
65// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/montsinger/rebound/rev2/info.json b/keyboards/montsinger/rebound/rev2/info.json
new file mode 100644
index 000000000..3c9cdbe82
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev2/info.json
@@ -0,0 +1,128 @@
1{
2 "keyboard":"montsinger/rebound/rev2",
3 "url": "https://montsinger.net",
4 "maintainer": "rossman360",
5 "width": 13,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_all": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16
17 {"x":7, "y":0},
18 {"x":8, "y":0},
19 {"x":9, "y":0},
20 {"x":10, "y":0},
21 {"x":11, "y":0},
22 {"x":12, "y":0},
23
24 {"x":0, "y":1},
25 {"x":1, "y":1},
26 {"x":2, "y":1},
27 {"x":3, "y":1},
28 {"x":4, "y":1},
29 {"x":5, "y":1},
30
31 {"x":7, "y":1},
32 {"x":8, "y":1},
33 {"x":9, "y":1},
34 {"x":10, "y":1},
35 {"x":11, "y":1},
36 {"x":12, "y":1},
37
38 {"x":0, "y":2},
39 {"x":1, "y":2},
40 {"x":2, "y":2},
41 {"x":3, "y":2},
42 {"x":4, "y":2},
43 {"x":5, "y":2},
44
45 {"x":7, "y":2},
46 {"x":8, "y":2},
47 {"x":9, "y":2},
48 {"x":10, "y":2},
49 {"x":11, "y":2},
50 {"x":12, "y":2},
51
52 {"x":0, "y":3},
53 {"x":1, "y":3},
54 {"x":2, "y":3},
55 {"x":3, "y":3},
56 {"x":4, "y":3},
57 {"x":5, "y":3},
58 {"x":6, "y":3},
59 {"x":7, "y":3},
60 {"x":8, "y":3},
61 {"x":9, "y":3},
62 {"x":10, "y":3},
63 {"x":11, "y":3},
64 {"x":12, "y":3}
65 ]
66 },
67 "LAYOUT_ortho_4x12": {
68 "layout": [
69
70 {"x":0, "y":0},
71 {"x":1, "y":0},
72 {"x":2, "y":0},
73 {"x":3, "y":0},
74 {"x":4, "y":0},
75 {"x":5, "y":0},
76
77 {"x":7, "y":0},
78 {"x":8, "y":0},
79 {"x":9, "y":0},
80 {"x":10, "y":0},
81 {"x":11, "y":0},
82 {"x":12, "y":0},
83
84 {"x":0, "y":1},
85 {"x":1, "y":1},
86 {"x":2, "y":1},
87 {"x":3, "y":1},
88 {"x":4, "y":1},
89 {"x":5, "y":1},
90
91 {"x":7, "y":1},
92 {"x":8, "y":1},
93 {"x":9, "y":1},
94 {"x":10, "y":1},
95 {"x":11, "y":1},
96 {"x":12, "y":1},
97
98 {"x":0, "y":2},
99 {"x":1, "y":2},
100 {"x":2, "y":2},
101 {"x":3, "y":2},
102 {"x":4, "y":2},
103 {"x":5, "y":2},
104
105 {"x":7, "y":2},
106 {"x":8, "y":2},
107 {"x":9, "y":2},
108 {"x":10, "y":2},
109 {"x":11, "y":2},
110 {"x":12, "y":2},
111
112 {"x":0, "y":3},
113 {"x":1, "y":3},
114 {"x":2, "y":3},
115 {"x":3, "y":3},
116 {"x":4, "y":3},
117 {"x":5, "y":3},
118
119 {"x":7, "y":3},
120 {"x":8, "y":3},
121 {"x":9, "y":3},
122 {"x":10, "y":3},
123 {"x":11, "y":3},
124 {"x":12, "y":3}
125 ]
126 }
127 }
128} \ No newline at end of file
diff --git a/keyboards/montsinger/rebound/rev2/keymaps/default/keymap.c b/keyboards/montsinger/rebound/rev2/keymaps/default/keymap.c
new file mode 100644
index 000000000..57feb1972
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev2/keymaps/default/keymap.c
@@ -0,0 +1,161 @@
1#include QMK_KEYBOARD_H
2
3// Each layer gets a name for readability, which is then used in the keymap matrix below.
4// The underscores don't mean anything - you can have a layer called STUFF or any other name.
5// Layer names don't all need to be of the same length, obviously, and you can also skip them
6// entirely and just use numbers.
7
8enum layer_names {
9 _QWERTY,
10 _COLEMAK,
11 _DVORAK,
12 _LOWER,
13 _RAISE,
14 _ADJUST
15};
16
17enum custom_keycodes {
18 QWERTY = SAFE_RANGE,
19 COLEMAK,
20 DVORAK
21};
22
23#define LOWER MO(_LOWER)
24#define RAISE MO(_RAISE)
25#define ADJUST MO(_ADJUST)
26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28/* Qwerty
29 * ,-----------------------------------------------------------------------------------.
30 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
31 * |------+------+------+------+------+-------------+------+------+------+------+------|
32 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
33 * |------+------+------+------+------+------|------+------+------+------+------+------|
34 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
35 * |------+------+------+------+------+------+------+------+------+------+------+------|
36 * |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
37 * `-----------------------------------------------------------------------------------'
38 */
39[_QWERTY] = LAYOUT_all(
40 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
41 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
42 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
43 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
44),
45
46/* Colemak
47 * ,-----------------------------------------------------------------------------------.
48 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
49 * |------+------+------+------+------+-------------+------+------+------+------+------|
50 * | Esc | A | R | S | T | D | H | N | E | I | O | ' |
51 * |------+------+------+------+------+------|------+------+------+------+------+------|
52 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
53 * |------+------+------+------+------+------+------+------+------+------+------+------|
54 * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
55 * `-----------------------------------------------------------------------------------'
56 */
57[_COLEMAK] = LAYOUT_all(
58 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
59 KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
60 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
61 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
62),
63
64/* Dvorak
65 * ,-----------------------------------------------------------------------------------.
66 * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
67 * |------+------+------+------+------+-------------+------+------+------+------+------|
68 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
69 * |------+------+------+------+------+------|------+------+------+------+------+------|
70 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
71 * |------+------+------+------+------+------+------+------+------+------+------+------|
72 * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
73 * `-----------------------------------------------------------------------------------'
74 */
75[_DVORAK] = LAYOUT_all(
76 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
77 KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
78 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
79 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
80),
81
82/* Lower
83 * ,-----------------------------------------------------------------------------------.
84 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
85 * |------+------+------+------+------+-------------+------+------+------+------+------|
86 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
87 * |------+------+------+------+------+------|------+------+------+------+------+------|
88 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
89 * |------+------+------+------+------+------+------+------+------+------+------+------|
90 * | | | | | | | | Next | Vol- | Vol+ | Play |
91 * `-----------------------------------------------------------------------------------'
92 */
93[_LOWER] = LAYOUT_all(
94 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
95 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
96 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
97 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
98),
99
100/* Raise
101 * ,-----------------------------------------------------------------------------------.
102 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
103 * |------+------+------+------+------+-------------+------+------+------+------+------|
104 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
105 * |------+------+------+------+------+------|------+------+------+------+------+------|
106 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
107 * |------+------+------+------+------+------+------+------+------+------+------+------|
108 * | | | | | | | | Next | Vol- | Vol+ | Play |
109 * `-----------------------------------------------------------------------------------'
110 */
111[_RAISE] = LAYOUT_all(
112 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
113 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
114 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
115 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
116),
117
118/* Adjust (Lower + Raise)
119 * ,-----------------------------------------------------------------------------------.
120 * | | Reset| | | | | | | | | | Del |
121 * |------+------+------+------+------+-------------+------+------+------+------+------|
122 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
123 * |------+------+------+------+------+------|------+------+------+------+------+------|
124 * | | | | | | | | | | | | |
125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | | | | | | | | | | | |
127 * `-----------------------------------------------------------------------------------'
128 */
129[_ADJUST] = LAYOUT_all(
130 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
131 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
132 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
133 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
134)
135
136
137};
138
139layer_state_t layer_state_set_user(layer_state_t state) {
140 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
141}
142bool process_record_user(uint16_t keycode, keyrecord_t *record) {
143 switch (keycode) {
144 case QWERTY:
145 if (record->event.pressed) {
146 set_single_persistent_default_layer(_QWERTY);
147 }
148 break;
149 case COLEMAK:
150 if (record->event.pressed) {
151 set_single_persistent_default_layer(_COLEMAK);
152 }
153 break;
154 case DVORAK:
155 if (record->event.pressed) {
156 set_single_persistent_default_layer(_DVORAK);
157 }
158 break;
159 }
160 return true;
161}
diff --git a/keyboards/montsinger/rebound/rev2/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/rev2/keymaps/rossman360/keymap.c
new file mode 100644
index 000000000..23bd7e4ec
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev2/keymaps/rossman360/keymap.c
@@ -0,0 +1,57 @@
1#include QMK_KEYBOARD_H
2#include "rossman360.h"
3
4#define PGMOD LT(_NUM, KC_PGDN)
5#define TABMOD LT(_FN1, KC_TAB)
6#define SPCMOD LT(_FN1, KC_SPACE)
7#define ENTMOD LT(_FN2, KC_ENTER)
8#define ESCMOD LT(_NUM, KC_ESC)
9#define RSMOD LT(_FN1, KC_RSHIFT)
10
11enum layer_names {
12 _BASE,
13 _DEL,
14 _FN1,
15 _FN2,
16 _NUM,
17};
18
19
20
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22
23[_BASE] = LAYOUT_all(
24 KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , NTAB ,
25 JUMPBACK, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
26 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS,
27 CMDBSP , ALTDEL , KC_NO , CTRLSP , TABMOD , PGMOD , KC_Y , ENTMOD , SPCMOD , MO(_DEL),KC_NO , KC_BSPC, KC_DEL
28 ),
29
30[_FN1] = LAYOUT_all(
31 _______, TAB1 , TAB2 , TAB3 , TAB4 , _______, _______, UNDO , _______, _______, _______, CTAB ,
32 KC_CAPS, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP , KC_RIGHT,KC_END , KC_NO ,
33 _______, _______, XPANDR , _______, _______, _______, _______, PMERGE , KC_DOWN, _______, _______, _______,
34 WREFRESH,_______, _______, _______, LWORD , RWORD , KC_Y , RVOLD , RVOLU , _______, _______, _______, _______
35 ),
36
37[_FN2] = LAYOUT_all(
38 _______, SPEAK1 , SPEAK2 , SPEAK3 , SPEAK4 , _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______, PARADOWN, CSPEAK, KC_Y , _______, _______, _______, _______, _______, _______
42 ),
43
44[_DEL] = LAYOUT_all(
45 _______, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
46 REMCAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP ,KC_RIGHT, _______, _______,
47 _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
48 _______, _______, _______, KC_DEL , KC_BSPC, BWORD , KC_Y , _______, _______, _______, _______, _______, _______
49 ),
50
51[_NUM] = LAYOUT_all(
52 _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_MINS, KC_EQL,
53 KC_CAPS, _______, _______, _______, _______, _______, KC_MINS, KC_4 , KC_5 , KC_6 , KC_COLN, _______,
54 _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_1 , KC_2 , KC_3 , KC_BSLS, _______,
55 _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_Y , _______, _______, KC_0 , _______, _______, _______
56 )
57};
diff --git a/keyboards/montsinger/rebound/rev2/rev2.h b/keyboards/montsinger/rebound/rev2/rev2.h
new file mode 100644
index 000000000..16e0da23c
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev2/rev2.h
@@ -0,0 +1,53 @@
1/* Copyright 2020 Ross Montsinger
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
17#pragma once
18
19#include "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 * The first section contains all of the arguments representing the
23 * layout of the board and position of the keys.
24 *
25 * The second converts the arguments into a two-dimensional array which
26 * represents the switch matrix.
27 */
28
29#define LAYOUT_ortho_4x12( \
30 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
31 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
32 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,\
33 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B\
34 ) { \
35 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
36 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
37 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
38 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B }, \
39 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
40}
41
42#define LAYOUT_all( \
43 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
44 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
45 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,\
46 K30, K31, K32, K33, K34, K35, K40, K36, K37, K38, K39, K3A, K3B\
47 ) { \
48 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
49 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
50 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
51 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B }, \
52 { K40, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
53}
diff --git a/keyboards/montsinger/rebound/rev2/rules.mk b/keyboards/montsinger/rebound/rev2/rules.mk
new file mode 100644
index 000000000..f5505e25c
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev2/rules.mk
@@ -0,0 +1,33 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu
13
14BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
15MOUSEKEY_ENABLE = yes # Mouse keys
16EXTRAKEY_ENABLE = yes # Audio control and System control
17CONSOLE_ENABLE = yes # Console for debug
18COMMAND_ENABLE = yes # Commands for debug and configuration
19# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
21# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
22NKRO_ENABLE = no # USB Nkey Rollover
23BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
24RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
25MIDI_ENABLE = no # MIDI support
26BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
27AUDIO_ENABLE = no # Audio output on port C6
28FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
29HD44780_ENABLE = no # Enable support for HD44780 based LCDs
30ENCODER_ENABLE = yes
31
32LAYOUTS = ortho_4x12
33LAYOUTS_HAS_RGB = no \ No newline at end of file
diff --git a/keyboards/montsinger/rebound/rules.mk b/keyboards/montsinger/rebound/rules.mk
index efa313303..d277d184e 100644
--- a/keyboards/montsinger/rebound/rules.mk
+++ b/keyboards/montsinger/rebound/rules.mk
@@ -1,32 +1 @@
1# MCU name DEFAULT_FOLDER = montsinger/rebound/rev1
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu
13
14BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
15MOUSEKEY_ENABLE = yes # Mouse keys
16EXTRAKEY_ENABLE = yes # Audio control and System control
17CONSOLE_ENABLE = yes # Console for debug
18COMMAND_ENABLE = yes # Commands for debug and configuration
19# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
20SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
21# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
22NKRO_ENABLE = no # USB Nkey Rollover
23BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
24RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
25MIDI_ENABLE = no # MIDI support
26BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
27AUDIO_ENABLE = no # Audio output on port C6
28FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
29HD44780_ENABLE = no # Enable support for HD44780 based LCDs
30
31LAYOUTS = ortho_4x12
32LAYOUTS_HAS_RGB=no
diff --git a/keyboards/naked60/keymaps/333fred/config.h b/keyboards/naked60/keymaps/333fred/config.h
new file mode 100644
index 000000000..d19e77f04
--- /dev/null
+++ b/keyboards/naked60/keymaps/333fred/config.h
@@ -0,0 +1,24 @@
1/* Copyright 2018 Salicylic_acid3
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
17#pragma once
18
19
20
21/* Select hand configuration */
22
23#define TAPPING_FORCE_HOLD
24#define TAPPING_TERM 200
diff --git a/keyboards/naked60/keymaps/333fred/keymap.c b/keyboards/naked60/keymaps/333fred/keymap.c
new file mode 100644
index 000000000..3331dee9b
--- /dev/null
+++ b/keyboards/naked60/keymaps/333fred/keymap.c
@@ -0,0 +1,53 @@
1#include QMK_KEYBOARD_H
2#include "333fred.h"
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5 [BASE] = LAYOUT(
6 //,--------------------------------------------------------------------| |---------------------------------------------------------.
7 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
8 //|--------------+------------+------+--------+--------+---------------| |-------+--------+--------+-------+--------+--------------|
9 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
10 //|--------------+------------+------+--------+--------+---------------| |-------+--------+--------+-------+--------+--------------|
11 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
12 //|--------------+------------+------+--------+--------+---------------| |-------+--------+--------+-------+--------+--------------|
13 OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT),
14 //|--------------+------------+------+--------+--------+---------------+-------+-------+-------+--------+--------+-------+--------+--------------|
15 KC_F4, KC_F5, KC_LALT, KC_BSPC, TD(TD_SYM_VIM), KC_DEL, KC_ENT, KC_SPC, KC_DOWN, KC_UP, KC_EQL, KC_LGUI
16 //`----------------------------------------------------------------------------------------------------------------'
17 ),
18
19
20 [SYMB] = LAYOUT(
21 //,-----------------------------------------------------| |-----------------------------------------------------.
22 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
23 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+-------+--------+--------|
24 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_7, KC_8, KC_9, _______, KC_F12,
25 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+-------+--------+--------|
26 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_VOLU, KC_4, KC_5, KC_6, _______, _______,
27 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+-------+--------+--------|
28 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_VOLD, KC_1, KC_2, KC_3, _______, _______,
29 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------+--------|
30 _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_0, KC_ENT, _______
31 //`------------------------------------------------------------------------------------------------------------'
32 ),
33
34
35 [VIM] = LAYOUT( /* Base */
36 //,-----------------------------------------------------| |-----------------------------------------------------.
37 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
39 _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
40 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
41 _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
42 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
43 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
44 //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
46 //`------------------------------------------------------------------------------------------------------------'
47 )
48};
49
50bool process_record_user(uint16_t keycode, keyrecord_t *record) {
51 tap_dance_process_keycode(keycode);
52 return !try_handle_macro(keycode, record);
53}
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/333fred/rules.mk b/keyboards/rgbkb/zen/rev1/keymaps/333fred/rules.mk
index 1359e81c0..f858bbe3d 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/333fred/rules.mk
+++ b/keyboards/rgbkb/zen/rev1/keymaps/333fred/rules.mk
@@ -1,6 +1,4 @@
1RGBLIGHT_ENABLE = yes 1RGBLIGHT_ENABLE = yes
2NKRO_ENABLE = yes
3KEY_LOCK_ENABLE = yes 2KEY_LOCK_ENABLE = yes
4TAP_DANCE_ENABLE = yes
5CONSOLE_ENABLE = no 3CONSOLE_ENABLE = no
6EXTRAFLAGS += -flto 4EXTRAFLAGS += -flto
diff --git a/keyboards/vitamins_included/keymaps/default/keymap.c b/keyboards/vitamins_included/keymaps/default/keymap.c
index 52780d646..d6db6ffe6 100644
--- a/keyboards/vitamins_included/keymaps/default/keymap.c
+++ b/keyboards/vitamins_included/keymaps/default/keymap.c
@@ -1,16 +1,18 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2 2
3#define TG_NKRO MAGIC_TOGGLE_NKRO
3 4
4// Each layer gets a name for readability, which is then used in the keymap matrix below. 5
5// The underscores don't mean anything - you can have a layer called STUFF or any other name. 6// Layer names
6// Layer names don't all need to be of the same length, obviously, and you can also skip them 7
7// entirely and just use numbers. 8enum layer_names {
8#define _QWERTY 0 9 _QWERTY,
9#define _COLEMAK 1 10 _COLEMAK,
10#define _DVORAK 2 11 _DVORAK,
11#define _LOWER 3 12 _LOWER,
12#define _RAISE 4 13 _RAISE,
13#define _ADJUST 16 14 _ADJUST
15};
14 16
15enum custom_keycodes { 17enum custom_keycodes {
16 QWERTY = SAFE_RANGE, 18 QWERTY = SAFE_RANGE,
@@ -38,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
38 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ 40 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
39 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ 41 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
40 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ 42 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
41 KC_LCTRL,KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ 43 KC_LCTRL,KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
42), 44),
43 45
44/* Colemak 46/* Colemak
@@ -85,14 +87,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
85 * |------+------+------+------+------+------|------+------+------+------+------+------| 87 * |------+------+------+------+------+------|------+------+------+------+------+------|
86 * |RESET | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | 88 * |RESET | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
87 * |------+------+------+------+------+------+------+------+------+------+------+------| 89 * |------+------+------+------+------+------+------+------+------+------+------+------|
88 * | | | | | | | | Next | Vol- | Vol+ | Play | 90 * |TGNKRO| | | | | | | Next | Vol- | Vol+ | Play |
89 * `-----------------------------------------------------------------------------------' 91 * `-----------------------------------------------------------------------------------'
90 */ 92 */
91[_LOWER] = LAYOUT_ortho_4x12( \ 93[_LOWER] = LAYOUT_ortho_4x12( \
92 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ 94 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
93 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ 95 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
94 RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ 96 RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______, \
95 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ 97 TG_NKRO, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
96), 98),
97 99
98/* Raise 100/* Raise
@@ -101,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
101 * |------+------+------+------+------+-------------+------+------+------+------+------| 103 * |------+------+------+------+------+-------------+------+------+------+------+------|
102 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | 104 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
103 * |------+------+------+------+------+------|------+------+------+------+------+------| 105 * |------+------+------+------+------+------|------+------+------+------+------+------|
104 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |RESET | 106 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | |TGNKRO|RESET |
105 * |------+------+------+------+------+------+------+------+------+------+------+------| 107 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | | | | | | | | Next | Vol- | Vol+ | Play | 108 * | | | | | | | | Next | Vol- | Vol+ | Play |
107 * `-----------------------------------------------------------------------------------' 109 * `-----------------------------------------------------------------------------------'
@@ -109,26 +111,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
109[_RAISE] = LAYOUT_ortho_4x12( \ 111[_RAISE] = LAYOUT_ortho_4x12( \
110 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ 112 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
111 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ 113 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
112 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, RESET, \ 114 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, TG_NKRO, RESET, \
113 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ 115 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
114), 116),
115 117
116/* Adjust (Lower + Raise) 118/* Adjust (Lower + Raise)
117 * ,-----------------------------------------------------------------------------------. 119 * ,-----------------------------------------------------------------------------------.
118 * | | RESET| | | | | | | | | RESET| Del | 120 * | |Qwerty|Colemk|Dvorak| | | | | | | | |
119 * |------+------+------+------+------+-------------+------+------+------+------+------| 121 * |------+------+------+------+------+-------------+------+------+------+------+------|
120 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | 122 * | | | | | | | |Qwerty|Colemk|Dvorak| | |
121 * |------+------+------+------+------+------|------+------+------+------+------+------| 123 * |------+------+------+------+------+------|------+------+------+------+------+------|
122 * | | | | | | | | | | | | | 124 * | | | | | | | | | | | | |
123 * |------+------+------+------+------+------+------+------+------+------+------+------| 125 * |------+------+------+------+------+------+------+------+------+------+------+------|
124 * | | | | | | | | | | |RGBMOD| 126 * | | | | | |Audoff Audon | | | | |RGBMOD|
125 * `-----------------------------------------------------------------------------------' 127 * `-----------------------------------------------------------------------------------'
126 */ 128 */
127[_ADJUST] = LAYOUT_ortho_4x12( \ 129[_ADJUST] = LAYOUT_ortho_4x12( \
128 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL, \ 130 _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, \
129 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ 131 _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, \
130 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 132 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
131 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD \ 133 _______, _______, _______, _______, _______, AU_OFF, AU_ON, _______, _______, _______, _______, RGB_MOD \
132) 134)
133 135
134 136
diff --git a/keyboards/vitamins_included/rev2/config.h b/keyboards/vitamins_included/rev2/config.h
index d0f9e6400..e3d305198 100644
--- a/keyboards/vitamins_included/rev2/config.h
+++ b/keyboards/vitamins_included/rev2/config.h
@@ -56,8 +56,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
56/* ws2812 RGB LED */ 56/* ws2812 RGB LED */
57#define RGB_DI_PIN F0 57#define RGB_DI_PIN F0
58 58
59#define RGBLED_NUM 12 // Number of LEDs 59#define RGBLED_NUM 12
60#define RGBLIGHT_ANIMATIONS 60#define RGBLIGHT_ANIMATIONS
61#define RGBLED_SPLIT { 6, 6 }
61 62
62/* Audio settings */ 63/* Audio settings */
63#ifdef AUDIO_ENABLE 64#ifdef AUDIO_ENABLE
diff --git a/keyboards/vitamins_included/rules.mk b/keyboards/vitamins_included/rules.mk
index 0d615b41f..3eb3a1c30 100644
--- a/keyboards/vitamins_included/rules.mk
+++ b/keyboards/vitamins_included/rules.mk
@@ -15,7 +15,7 @@ DEBUG_ENABLE = no # Enable more debug info
15EXTRAKEY_ENABLE = yes # Audio control and System control 15EXTRAKEY_ENABLE = yes # Audio control and System control
16MIDI_ENABLE = no # MIDI controls 16MIDI_ENABLE = no # MIDI controls
17MOUSEKEY_ENABLE = no # Mouse keys 17MOUSEKEY_ENABLE = no # Mouse keys
18NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 18NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
19RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. 19RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
20UNICODE_ENABLE = no # Unicode 20UNICODE_ENABLE = no # Unicode
21# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 21# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/wete/keymaps/via/config.h b/keyboards/wete/keymaps/via/config.h
new file mode 100644
index 000000000..4dadf6a16
--- /dev/null
+++ b/keyboards/wete/keymaps/via/config.h
@@ -0,0 +1 @@
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047
diff --git a/keyboards/wete/keymaps/via/keymap.c b/keyboards/wete/keymaps/via/keymap.c
new file mode 100644
index 000000000..0f1a0bedb
--- /dev/null
+++ b/keyboards/wete/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
1/*
2Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_ansi_rhnp(
22 KC_INSERT, KC_PSCREEN, KC_PAUSE, KC_SLCK, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
23 KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
24 KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
25 KC_KP_4, KC_KP_5, KC_KP_6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, KC_PGUP,
26 KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
27 KC_KP_0, KC_KP_DOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
28 ),
29 [1] = LAYOUT_ansi_rhnp(
30 KC_NO, KC_NO, KC_NO, KC_NO, BL_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET,
31 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
32 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
33 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
34 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_INC, KC_NO,
35 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, BL_OFF, BL_DEC, BL_ON
36 ),
37 [2] = LAYOUT_ansi_rhnp(
38 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
39 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
40 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
41 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
42 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
43 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO
44 ),
45 [3] = LAYOUT_ansi_rhnp(
46 KC_NO, KC_NO, KC_NO, KC_NO, BL_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
47 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
48 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
49 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
50 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
51 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO
52 )
53};
diff --git a/keyboards/wete/keymaps/via/rules.mk b/keyboards/wete/keymaps/via/rules.mk
new file mode 100644
index 000000000..ee1e4ceeb
--- /dev/null
+++ b/keyboards/wete/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2BOOTMAGIC_ENABLE = lite
diff --git a/keyboards/wete/wete.h b/keyboards/wete/wete.h
index e9f44e185..46daf6d6f 100644
--- a/keyboards/wete/wete.h
+++ b/keyboards/wete/wete.h
@@ -16,14 +16,14 @@
16 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \ 16 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \
17 k30, k31, k32, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \ 17 k30, k31, k32, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \
18 k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \ 18 k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \
19 k50, k52, k54, k55, k56, k5a, k5d, k5e, k5h, k5i, k5j \ 19 k50, k52, k54, k55, k56, k5a, k5d, k5f, k5h, k5i, k5j \
20) { \ 20) { \
21 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \ 21 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \
22 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \ 22 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \
23 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \ 23 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \
24 { k30, k31, k32, XXX, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \ 24 { k30, k31, k32, XXX, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \
25 { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \ 25 { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \
26 { k50, XXX, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, k5e, XXX, XXX, k5h, k5i, k5j } \ 26 { k50, XXX, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, XXX, k5f, XXX, k5h, k5i, k5j } \
27} 27}
28 28
29// ANSI layout 29// ANSI layout
@@ -37,14 +37,14 @@
37 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \ 37 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \
38 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \ 38 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \
39 k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \ 39 k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \
40 k51, k52, k54, k55, k56, k5a, k5d, k5e, k5h, k5i, k5j \ 40 k51, k52, k54, k55, k56, k5a, k5d, k5f, k5h, k5i, k5j \
41) { \ 41) { \
42 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \ 42 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \
43 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \ 43 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \
44 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \ 44 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \
45 { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \ 45 { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \
46 { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \ 46 { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \
47 { XXX, k51, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, k5e, XXX, XXX, k5h, k5i, k5j } \ 47 { XXX, k51, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, XXX, k5f, XXX, k5h, k5i, k5j } \
48} 48}
49 49
50// ANSI layout 50// ANSI layout
@@ -58,14 +58,14 @@
58 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \ 58 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \
59 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \ 59 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \
60 k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \ 60 k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \
61 k50, k51, k52, k53, k54, k55, k56, k5a, k5d, k5e, k5h, k5i, k5j \ 61 k50, k51, k52, k53, k54, k55, k56, k5a, k5d, k5f, k5h, k5i, k5j \
62) { \ 62) { \
63 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \ 63 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \
64 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \ 64 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \
65 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \ 65 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \
66 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \ 66 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \
67 { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \ 67 { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \
68 { k50, k51, k52, k53, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, k5e, XXX, XXX, k5h, k5i, k5j } \ 68 { k50, k51, k52, k53, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, XXX, k5f, XXX, k5h, k5i, k5j } \
69} 69}
70 70
71 71
@@ -82,14 +82,14 @@
82 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \ 82 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \
83 k30, k31, k32, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \ 83 k30, k31, k32, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \
84 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \ 84 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \
85 k50, k52, k54, k55, k56, k5a, k5d, k5e, k5h, k5i, k5j \ 85 k50, k52, k54, k55, k56, k5a, k5d, k5f, k5h, k5i, k5j \
86) { \ 86) { \
87 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \ 87 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \
88 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \ 88 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \
89 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \ 89 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \
90 { k30, k31, k32, XXX, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \ 90 { k30, k31, k32, XXX, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \
91 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \ 91 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \
92 { k50, XXX, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, k5e, XXX, XXX, k5h, k5i, k5j } \ 92 { k50, XXX, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, XXX, k5f, XXX, k5h, k5i, k5j } \
93} 93}
94 94
95// ISO layout 95// ISO layout
@@ -104,14 +104,14 @@
104 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \ 104 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \
105 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \ 105 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \
106 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \ 106 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \
107 k51, k52, k54, k55, k56, k5a, k5d, k5e, k5h, k5i, k5j \ 107 k51, k52, k54, k55, k56, k5a, k5d, k5f, k5h, k5i, k5j \
108) { \ 108) { \
109 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \ 109 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \
110 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \ 110 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \
111 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \ 111 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \
112 { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \ 112 { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \
113 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \ 113 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \
114 { XXX, k51, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, k5e, XXX, XXX, k5h, k5i, k5j } \ 114 { XXX, k51, k52, XXX, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, XXX, k5f, XXX, k5h, k5i, k5j } \
115} 115}
116 116
117// ISO layout 117// ISO layout
@@ -126,14 +126,14 @@
126 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \ 126 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2i, k2j, \
127 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \ 127 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3i, k3j, \
128 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \ 128 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, k4h, k4i, k4j, \
129 k50, k51, k52, k53, k54, k55, k56, k5a, k5d, k5e, k5h, k5i, k5j \ 129 k50, k51, k52, k53, k54, k55, k56, k5a, k5d, k5f, k5h, k5i, k5j \
130) { \ 130) { \
131 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \ 131 { k00, k01, k02, k03, k04, k05, k06, k07, k08, XXX, k0a, k0b, k0c, k0d, XXX, k0f, k0g, k0h, k0i, k0j }, \
132 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \ 132 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, XXX, k1j }, \
133 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \ 133 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, XXX, k2i, k2j }, \
134 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \ 134 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, XXX, XXX, k3i, k3j }, \
135 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \ 135 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, XXX, k4h, k4i, k4j }, \
136 { k50, k51, k52, k53, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, k5e, XXX, XXX, k5h, k5i, k5j } \ 136 { k50, k51, k52, k53, k54, k55, k56, XXX, XXX, XXX, k5a, XXX, XXX, k5d, XXX, k5f, XXX, k5h, k5i, k5j } \
137} 137}
138 138
139//////////////////////////////// JIS //////////////////////////////// 139//////////////////////////////// JIS ////////////////////////////////
diff --git a/keyboards/wheatfield/blocked65/config.h b/keyboards/wheatfield/blocked65/config.h
index ebcbf8fc6..ea5c31611 100644
--- a/keyboards/wheatfield/blocked65/config.h
+++ b/keyboards/wheatfield/blocked65/config.h
@@ -58,4 +58,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
58 */ 58 */
59#define RGB_DI_PIN E2 59#define RGB_DI_PIN E2
60#define RGBLIGHT_ANIMATIONS 60#define RGBLIGHT_ANIMATIONS
61#define RGBLED_NUM 2 \ No newline at end of file 61#define RGBLED_NUM 14
diff --git a/keyboards/yd60mq/info.json b/keyboards/yd60mq/info.json
index 816d653bc..60a62af7a 100644
--- a/keyboards/yd60mq/info.json
+++ b/keyboards/yd60mq/info.json
@@ -144,6 +144,77 @@
144 {"x":12.5, "y":4, "w":1.25}, 144 {"x":12.5, "y":4, "w":1.25},
145 {"x":13.75, "y":4, "w":1.25} 145 {"x":13.75, "y":4, "w":1.25}
146 ] 146 ]
147 },
148 "LAYOUT_60_iso": {
149 "key_count": 62,
150 "layout": [
151 {"x":0, "y":0},
152 {"x":1, "y":0},
153 {"x":2, "y":0},
154 {"x":3, "y":0},
155 {"x":4, "y":0},
156 {"x":5, "y":0},
157 {"x":6, "y":0},
158 {"x":7, "y":0},
159 {"x":8, "y":0},
160 {"x":9, "y":0},
161 {"x":10, "y":0},
162 {"x":11, "y":0},
163 {"x":12, "y":0},
164 {"x":13, "y":0, "w":2},
165
166 {"x":0, "y":1, "w":1.5},
167 {"x":1.5, "y":1},
168 {"x":2.5, "y":1},
169 {"x":3.5, "y":1},
170 {"x":4.5, "y":1},
171 {"x":5.5, "y":1},
172 {"x":6.5, "y":1},
173 {"x":7.5, "y":1},
174 {"x":8.5, "y":1},
175 {"x":9.5, "y":1},
176 {"x":10.5, "y":1},
177 {"x":11.5, "y":1},
178 {"x":12.5, "y":1},
179
180 {"x":0, "y":2, "w":1.75},
181 {"x":1.75, "y":2},
182 {"x":2.75, "y":2},
183 {"x":3.75, "y":2},
184 {"x":4.75, "y":2},
185 {"x":5.75, "y":2},
186 {"x":6.75, "y":2},
187 {"x":7.75, "y":2},
188 {"x":8.75, "y":2},
189 {"x":9.75, "y":2},
190 {"x":10.75, "y":2},
191 {"x":11.75, "y":2},
192 {"x":12.75, "y":2},
193 {"x":13.75, "y":1, "w":1.25, "h":2},
194
195 {"x":0, "y":3, "w":1.25},
196 {"x":1.25, "y":3},
197 {"x":2.25, "y":3},
198 {"x":3.25, "y":3},
199 {"x":4.25, "y":3},
200 {"x":5.25, "y":3},
201 {"x":6.25, "y":3},
202 {"x":7.25, "y":3},
203 {"x":8.25, "y":3},
204 {"x":9.25, "y":3},
205 {"x":10.25, "y":3},
206 {"x":11.25, "y":3},
207 {"x":12.25, "y":3, "w":2.75},
208
209 {"x":0, "y":4, "w":1.25},
210 {"x":1.25, "y":4, "w":1.25},
211 {"x":2.5, "y":4, "w":1.25},
212 {"x":3.75, "y":4, "w":6.25},
213 {"x":10, "y":4, "w":1.25},
214 {"x":11.25, "y":4, "w":1.25},
215 {"x":12.5, "y":4, "w":1.25},
216 {"x":13.75, "y":4, "w":1.25}
217 ]
147 } 218 }
148 } 219 }
149} 220}
diff --git a/keyboards/yd60mq/keymaps/iso/keymap.c b/keyboards/yd60mq/keymaps/iso/keymap.c
new file mode 100644
index 000000000..9a4debed7
--- /dev/null
+++ b/keyboards/yd60mq/keymaps/iso/keymap.c
@@ -0,0 +1,28 @@
1#include QMK_KEYBOARD_H
2
3enum layer_names {
4 _BL,
5 _FL,
6};
7
8const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
9
10 //,: Base Layer
11 [0] = LAYOUT_60_iso(
12 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
13 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
14 MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
15 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP,
16 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, LT(1,KC_RGHT)
17 ),
18
19 //,: Function Layer
20 [1] = LAYOUT_60_iso(
21 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
22 XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_HOME, KC_PSCR,
23 KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, RGB_HUI, RGB_SAI, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, XXXXXXX, KC_MNXT,
24 KC_TRNS, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, RGB_HUD, RGB_SAD, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV,
25 KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_SPI, RGB_SPD, XXXXXXX, KC_TRNS
26 )
27
28}; \ No newline at end of file
diff --git a/keyboards/yd60mq/rules.mk b/keyboards/yd60mq/rules.mk
index 98b13aca4..6619c187f 100644
--- a/keyboards/yd60mq/rules.mk
+++ b/keyboards/yd60mq/rules.mk
@@ -31,6 +31,6 @@ AUDIO_ENABLE = no # Audio output on port C6
31FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches 31FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
32HD44780_ENABLE = no # Enable support for HD44780 based LCDs 32HD44780_ENABLE = no # Enable support for HD44780 based LCDs
33 33
34LAYOUTS = 60_ansi 34LAYOUTS = 60_ansi 60_iso
35 35
36DEFAULT_FOLDER = yd60mq/12led 36DEFAULT_FOLDER = yd60mq/12led
diff --git a/keyboards/yd60mq/yd60mq.h b/keyboards/yd60mq/yd60mq.h
index 0f6fde965..6b3824baa 100644
--- a/keyboards/yd60mq/yd60mq.h
+++ b/keyboards/yd60mq/yd60mq.h
@@ -30,4 +30,19 @@
30 { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \ 30 { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
31} 31}
32 32
33#define LAYOUT_60_iso( \
34 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
35 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, \
36 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K1d, \
37 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3d, \
38 K40, K41, K42, K47, K49, K4A, K4C, K4D \
39) { \
40 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
41 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, KC_NO, }, \
42 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K1d }, \
43 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, KC_NO, K3d, KC_NO }, \
44 { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
45}
46
47
33#define LAYOUT LAYOUT_all 48#define LAYOUT LAYOUT_all
diff --git a/layouts/community/ergodox/333fred/config.h b/layouts/community/ergodox/333fred/config.h
index 82255e05e..5a91ea3aa 100644
--- a/layouts/community/ergodox/333fred/config.h
+++ b/layouts/community/ergodox/333fred/config.h
@@ -1,7 +1,6 @@
1#pragma once 1#pragma once
2 2
3#include QMK_KEYBOARD_CONFIG_H 3#include QMK_KEYBOARD_CONFIG_H
4#include "333fred_config.h"
5 4
6#undef TAPPING_TERM 5#undef TAPPING_TERM
7#define TAPPING_TERM 200 6#define TAPPING_TERM 200
diff --git a/layouts/community/ergodox/333fred/rules.mk b/layouts/community/ergodox/333fred/rules.mk
index 1549bcfc8..f6c71feb4 100644
--- a/layouts/community/ergodox/333fred/rules.mk
+++ b/layouts/community/ergodox/333fred/rules.mk
@@ -1,7 +1,5 @@
1LCD_BACKLIGHT_ENABLE = yes 1LCD_BACKLIGHT_ENABLE = yes
2LCD_ENABLE = yes 2LCD_ENABLE = yes
3BACKLIGHT_ENABLE = yes 3BACKLIGHT_ENABLE = yes
4NKRO_ENABLE = yes
5KEY_LOCK_ENABLE = yes 4KEY_LOCK_ENABLE = yes
6TAP_DANCE_ENABLE = yes
7CONSOLE_ENABLE = no 5CONSOLE_ENABLE = no
diff --git a/layouts/community/ortho_5x12/333fred/config.h b/layouts/community/ortho_5x12/333fred/config.h
index 7835fa1f0..2e5dfe2e2 100644
--- a/layouts/community/ortho_5x12/333fred/config.h
+++ b/layouts/community/ortho_5x12/333fred/config.h
@@ -1,7 +1,5 @@
1#pragma once 1#pragma once
2 2
3#include "333fred_config.h"
4
5#define USE_SERIAL 3#define USE_SERIAL
6#define MASTER_LEFT 4#define MASTER_LEFT
7 5
diff --git a/layouts/community/ortho_5x12/333fred/rules.mk b/layouts/community/ortho_5x12/333fred/rules.mk
index 0cfb23466..9a3e2b97e 100644
--- a/layouts/community/ortho_5x12/333fred/rules.mk
+++ b/layouts/community/ortho_5x12/333fred/rules.mk
@@ -1,4 +1,2 @@
1KEY_LOCK_ENABLE = yes 1KEY_LOCK_ENABLE = yes
2NKRO_ENABLE = yes
3CONSOLE_ENABLE = no 2CONSOLE_ENABLE = no
4TAP_DANCE_ENABLE = yes
diff --git a/tmk_core/protocol/arm_atsam/usb/conf_usb.h b/tmk_core/protocol/arm_atsam/usb/conf_usb.h
index f236427ca..184a2e81d 100644
--- a/tmk_core/protocol/arm_atsam/usb/conf_usb.h
+++ b/tmk_core/protocol/arm_atsam/usb/conf_usb.h
@@ -116,34 +116,32 @@
116 * @{ 116 * @{
117 */ 117 */
118//! Interface callback definition 118//! Interface callback definition
119#ifdef KBD 119#define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable()
120# define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable() 120#define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable()
121# define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable() 121//#define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value)
122//#define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value)
123#endif
124 122
125#ifdef NKRO 123#ifdef NKRO_ENABLE
126# define UDI_HID_NKRO_ENABLE_EXT() main_nkro_enable() 124# define UDI_HID_NKRO_ENABLE_EXT() main_nkro_enable()
127# define UDI_HID_NKRO_DISABLE_EXT() main_nkro_disable() 125# define UDI_HID_NKRO_DISABLE_EXT() main_nkro_disable()
128//#define UDI_HID_NKRO_CHANGE_LED(value) ui_kbd_led(value) 126//#define UDI_HID_NKRO_CHANGE_LED(value) ui_kbd_led(value)
129#endif 127#endif
130 128
131#ifdef EXK 129#ifdef EXTRAKEY_ENABLE
132# define UDI_HID_EXK_ENABLE_EXT() main_exk_enable() 130# define UDI_HID_EXK_ENABLE_EXT() main_exk_enable()
133# define UDI_HID_EXK_DISABLE_EXT() main_exk_disable() 131# define UDI_HID_EXK_DISABLE_EXT() main_exk_disable()
134#endif 132#endif
135 133
136#ifdef CON 134#ifdef CONSOLE_ENABLE
137# define UDI_HID_CON_ENABLE_EXT() main_con_enable() 135# define UDI_HID_CON_ENABLE_EXT() main_con_enable()
138# define UDI_HID_CON_DISABLE_EXT() main_con_disable() 136# define UDI_HID_CON_DISABLE_EXT() main_con_disable()
139#endif 137#endif
140 138
141#ifdef MOU 139#ifdef MOUSE_ENABLE
142# define UDI_HID_MOU_ENABLE_EXT() main_mou_enable() 140# define UDI_HID_MOU_ENABLE_EXT() main_mou_enable()
143# define UDI_HID_MOU_DISABLE_EXT() main_mou_disable() 141# define UDI_HID_MOU_DISABLE_EXT() main_mou_disable()
144#endif 142#endif
145 143
146#ifdef RAW 144#ifdef RAW_ENABLE
147# define UDI_HID_RAW_ENABLE_EXT() main_raw_enable() 145# define UDI_HID_RAW_ENABLE_EXT() main_raw_enable()
148# define UDI_HID_RAW_DISABLE_EXT() main_raw_disable() 146# define UDI_HID_RAW_DISABLE_EXT() main_raw_disable()
149# define UDI_HID_RAW_RECEIVE(buffer, len) main_raw_receive(buffer, len) 147# define UDI_HID_RAW_RECEIVE(buffer, len) main_raw_receive(buffer, len)
diff --git a/tmk_core/protocol/arm_atsam/usb/main_usb.c b/tmk_core/protocol/arm_atsam/usb/main_usb.c
index 3809e1fd0..5fcb9a9c6 100644
--- a/tmk_core/protocol/arm_atsam/usb/main_usb.c
+++ b/tmk_core/protocol/arm_atsam/usb/main_usb.c
@@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
18#include "samd51j18a.h" 18#include "samd51j18a.h"
19#include "conf_usb.h" 19#include "conf_usb.h"
20#include "udd.h" 20#include "udd.h"
21#ifdef RAW 21
22#ifdef RAW_ENABLE
22# include "raw_hid.h" 23# include "raw_hid.h"
23#endif 24#endif
24 25
@@ -34,7 +35,6 @@ void main_remotewakeup_enable(void) { ui_wakeup_enable(); }
34 35
35void main_remotewakeup_disable(void) { ui_wakeup_disable(); } 36void main_remotewakeup_disable(void) { ui_wakeup_disable(); }
36 37
37#ifdef KBD
38volatile bool main_b_kbd_enable = false; 38volatile bool main_b_kbd_enable = false;
39bool main_kbd_enable(void) { 39bool main_kbd_enable(void) {
40 main_b_kbd_enable = true; 40 main_b_kbd_enable = true;
@@ -42,9 +42,8 @@ bool main_kbd_enable(void) {
42} 42}
43 43
44void main_kbd_disable(void) { main_b_kbd_enable = false; } 44void main_kbd_disable(void) { main_b_kbd_enable = false; }
45#endif
46 45
47#ifdef NKRO 46#ifdef NKRO_ENABLE
48volatile bool main_b_nkro_enable = false; 47volatile bool main_b_nkro_enable = false;
49bool main_nkro_enable(void) { 48bool main_nkro_enable(void) {
50 main_b_nkro_enable = true; 49 main_b_nkro_enable = true;
@@ -54,7 +53,7 @@ bool main_nkro_enable(void) {
54void main_nkro_disable(void) { main_b_nkro_enable = false; } 53void main_nkro_disable(void) { main_b_nkro_enable = false; }
55#endif 54#endif
56 55
57#ifdef EXK 56#ifdef EXTRAKEY_ENABLE
58volatile bool main_b_exk_enable = false; 57volatile bool main_b_exk_enable = false;
59bool main_exk_enable(void) { 58bool main_exk_enable(void) {
60 main_b_exk_enable = true; 59 main_b_exk_enable = true;
@@ -64,7 +63,7 @@ bool main_exk_enable(void) {
64void main_exk_disable(void) { main_b_exk_enable = false; } 63void main_exk_disable(void) { main_b_exk_enable = false; }
65#endif 64#endif
66 65
67#ifdef CON 66#ifdef CONSOLE_ENABLE
68volatile bool main_b_con_enable = false; 67volatile bool main_b_con_enable = false;
69bool main_con_enable(void) { 68bool main_con_enable(void) {
70 main_b_con_enable = true; 69 main_b_con_enable = true;
@@ -74,7 +73,7 @@ bool main_con_enable(void) {
74void main_con_disable(void) { main_b_con_enable = false; } 73void main_con_disable(void) { main_b_con_enable = false; }
75#endif 74#endif
76 75
77#ifdef MOU 76#ifdef MOUSE_ENABLE
78volatile bool main_b_mou_enable = false; 77volatile bool main_b_mou_enable = false;
79bool main_mou_enable(void) { 78bool main_mou_enable(void) {
80 main_b_mou_enable = true; 79 main_b_mou_enable = true;
@@ -84,7 +83,7 @@ bool main_mou_enable(void) {
84void main_mou_disable(void) { main_b_mou_enable = false; } 83void main_mou_disable(void) { main_b_mou_enable = false; }
85#endif 84#endif
86 85
87#ifdef RAW 86#ifdef RAW_ENABLE
88volatile bool main_b_raw_enable = false; 87volatile bool main_b_raw_enable = false;
89bool main_raw_enable(void) { 88bool main_raw_enable(void) {
90 main_b_raw_enable = true; 89 main_b_raw_enable = true;
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
index 8271f3b97..27db4017c 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
@@ -57,7 +57,7 @@
57#include "stdarg.h" 57#include "stdarg.h"
58#include "tmk_core/protocol/arm_atsam/clks.h" 58#include "tmk_core/protocol/arm_atsam/clks.h"
59 59
60#ifdef CDC 60#ifdef VIRTSER_ENABLE
61 61
62# ifdef UDI_CDC_LOW_RATE 62# ifdef UDI_CDC_LOW_RATE
63# ifdef USB_DEVICE_HS_SUPPORT 63# ifdef USB_DEVICE_HS_SUPPORT
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_cdc.h b/tmk_core/protocol/arm_atsam/usb/udi_cdc.h
index 9135bab54..406023980 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_cdc.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_cdc.h
@@ -47,7 +47,7 @@
47#ifndef _UDI_CDC_H_ 47#ifndef _UDI_CDC_H_
48#define _UDI_CDC_H_ 48#define _UDI_CDC_H_
49 49
50#ifdef CDC 50#ifdef VIRTSER_ENABLE
51 51
52# include "conf_usb.h" 52# include "conf_usb.h"
53# include "usb_protocol.h" 53# include "usb_protocol.h"
@@ -346,7 +346,7 @@ typedef struct {
346 char buf[CDC_INBUF_SIZE]; 346 char buf[CDC_INBUF_SIZE];
347} inbuf_t; 347} inbuf_t;
348 348
349#else // CDC 349#else // VIRTSER_ENABLE
350 350
351// keep these to accommodate calls if remaining 351// keep these to accommodate calls if remaining
352# define CDC_PRINTBUF_SIZE 1 352# define CDC_PRINTBUF_SIZE 1
@@ -362,7 +362,7 @@ typedef struct {
362 362
363extern inbuf_t inbuf; 363extern inbuf_t inbuf;
364 364
365#endif // CDC 365#endif // VIRTSER_ENABLE
366 366
367uint32_t CDC_print(char* printbuf); 367uint32_t CDC_print(char* printbuf);
368int CDC_printf(const char* _Format, ...); 368int CDC_printf(const char* _Format, ...);
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
index 80556205f..505db47b0 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
@@ -23,77 +23,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
23#include "compiler.h" 23#include "compiler.h"
24#include "usb_protocol_hid.h" 24#include "usb_protocol_hid.h"
25 25
26#define DEVICE_CLASS 0
27#define DEVICE_SUBCLASS 0
28#define DEVICE_PROTOCOL 0
29
30#define KBD
31
32//#define MOUSE_ENABLE //rules.mk
33#ifdef MOUSE_ENABLE
34# define MOU
35#endif
36
37//#define EXTRAKEY_ENABLE //rules.mk
38#ifdef EXTRAKEY_ENABLE
39# define EXK
40#endif
41
42//#define RAW_ENABLE //rules.mk
43#ifdef RAW_ENABLE
44# define RAW
45#endif
46
47//#define CONSOLE_ENABLE //rules.mk
48#ifdef CONSOLE_ENABLE
49# define CON
50#endif
51
52//#define NKRO_ENABLE //rules.mk
53#ifdef NKRO_ENABLE
54# define NKRO
55#endif
56
57//#define MIDI_ENABLE //deferred implementation
58//#ifdef MIDI_ENABLE
59//#define MIDI
60//#endif
61
62//#define VIRTSER_ENABLE //rules.mk
63#ifdef VIRTSER_ENABLE 26#ifdef VIRTSER_ENABLE
64# define CDC
65// because CDC uses IAD (interface association descriptor 27// because CDC uses IAD (interface association descriptor
66// per USB Interface Association Descriptor Device Class Code and Use Model 7/23/2003 Rev 1.0) 28// per USB Interface Association Descriptor Device Class Code and Use Model 7/23/2003 Rev 1.0)
67# undef DEVICE_CLASS
68# define DEVICE_CLASS 0xEF 29# define DEVICE_CLASS 0xEF
69# undef DEVICE_SUBCLASS
70# define DEVICE_SUBCLASS 0x02 30# define DEVICE_SUBCLASS 0x02
71# undef DEVICE_PROTOCOL
72# define DEVICE_PROTOCOL 0x01 31# define DEVICE_PROTOCOL 0x01
32#else
33# define DEVICE_CLASS 0x00
34# define DEVICE_SUBCLASS 0x00
35# define DEVICE_PROTOCOL 0x00
73#endif 36#endif
74 37
75/* number of interfaces */ 38/* number of interfaces */
76#define NEXT_INTERFACE_0 0 39#define NEXT_INTERFACE_0 0
77 40
78#ifdef KBD 41#define KEYBOARD_INTERFACE NEXT_INTERFACE_0
79# define KEYBOARD_INTERFACE NEXT_INTERFACE_0 42#define NEXT_INTERFACE_1 (KEYBOARD_INTERFACE + 1)
80# define NEXT_INTERFACE_1 (KEYBOARD_INTERFACE + 1) 43#define UDI_HID_KBD_IFACE_NUMBER KEYBOARD_INTERFACE
81# define UDI_HID_KBD_IFACE_NUMBER KEYBOARD_INTERFACE
82#else
83# define NEXT_INTERFACE_1 NEXT_INTERFACE_0
84#endif
85 44
86// It is important that the Raw HID interface is at a constant 45// It is important that the Raw HID interface is at a constant
87// interface number, to support Linux/OSX platforms and chrome.hid 46// interface number, to support Linux/OSX platforms and chrome.hid
88// If Raw HID is enabled, let it be always 1. 47// If Raw HID is enabled, let it be always 1.
89#ifdef RAW 48#ifdef RAW_ENABLE
90# define RAW_INTERFACE NEXT_INTERFACE_1 49# define RAW_INTERFACE NEXT_INTERFACE_1
91# define NEXT_INTERFACE_2 (RAW_INTERFACE + 1) 50# define NEXT_INTERFACE_2 (RAW_INTERFACE + 1)
92#else 51#else
93# define NEXT_INTERFACE_2 NEXT_INTERFACE_1 52# define NEXT_INTERFACE_2 NEXT_INTERFACE_1
94#endif 53#endif
95 54
96#ifdef MOU 55#ifdef MOUSE_ENABLE
97# define MOUSE_INTERFACE NEXT_INTERFACE_2 56# define MOUSE_INTERFACE NEXT_INTERFACE_2
98# define UDI_HID_MOU_IFACE_NUMBER MOUSE_INTERFACE 57# define UDI_HID_MOU_IFACE_NUMBER MOUSE_INTERFACE
99# define NEXT_INTERFACE_3 (MOUSE_INTERFACE + 1) 58# define NEXT_INTERFACE_3 (MOUSE_INTERFACE + 1)
@@ -101,7 +60,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
101# define NEXT_INTERFACE_3 NEXT_INTERFACE_2 60# define NEXT_INTERFACE_3 NEXT_INTERFACE_2
102#endif 61#endif
103 62
104#ifdef EXK 63#ifdef EXTRAKEY_ENABLE
105# define EXTRAKEY_INTERFACE NEXT_INTERFACE_3 64# define EXTRAKEY_INTERFACE NEXT_INTERFACE_3
106# define NEXT_INTERFACE_4 (EXTRAKEY_INTERFACE + 1) 65# define NEXT_INTERFACE_4 (EXTRAKEY_INTERFACE + 1)
107# define UDI_HID_EXK_IFACE_NUMBER EXTRAKEY_INTERFACE 66# define UDI_HID_EXK_IFACE_NUMBER EXTRAKEY_INTERFACE
@@ -109,7 +68,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
109# define NEXT_INTERFACE_4 NEXT_INTERFACE_3 68# define NEXT_INTERFACE_4 NEXT_INTERFACE_3
110#endif 69#endif
111 70
112#ifdef CON 71#ifdef CONSOLE_ENABLE
113# define CON_INTERFACE NEXT_INTERFACE_4 72# define CON_INTERFACE NEXT_INTERFACE_4
114# define NEXT_INTERFACE_5 (CON_INTERFACE + 1) 73# define NEXT_INTERFACE_5 (CON_INTERFACE + 1)
115# define UDI_HID_CON_IFACE_NUMBER CON_INTERFACE 74# define UDI_HID_CON_IFACE_NUMBER CON_INTERFACE
@@ -117,7 +76,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
117# define NEXT_INTERFACE_5 NEXT_INTERFACE_4 76# define NEXT_INTERFACE_5 NEXT_INTERFACE_4
118#endif 77#endif
119 78
120#ifdef NKRO 79#ifdef NKRO_ENABLE
121# define NKRO_INTERFACE NEXT_INTERFACE_5 80# define NKRO_INTERFACE NEXT_INTERFACE_5
122# define NEXT_INTERFACE_6 (NKRO_INTERFACE + 1) 81# define NEXT_INTERFACE_6 (NKRO_INTERFACE + 1)
123# define UDI_HID_NKRO_IFACE_NUMBER NKRO_INTERFACE 82# define UDI_HID_NKRO_IFACE_NUMBER NKRO_INTERFACE
@@ -125,7 +84,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
125# define NEXT_INTERFACE_6 NEXT_INTERFACE_5 84# define NEXT_INTERFACE_6 NEXT_INTERFACE_5
126#endif 85#endif
127 86
128#ifdef MIDI 87#ifdef MIDI_ENABLE
129# define AC_INTERFACE NEXT_INTERFACE_6 88# define AC_INTERFACE NEXT_INTERFACE_6
130# define AS_INTERFACE (AC_INTERFACE + 1) 89# define AS_INTERFACE (AC_INTERFACE + 1)
131# define NEXT_INTERFACE_7 (AS_INTERFACE + 1) 90# define NEXT_INTERFACE_7 (AS_INTERFACE + 1)
@@ -133,7 +92,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
133# define NEXT_INTERFACE_7 NEXT_INTERFACE_6 92# define NEXT_INTERFACE_7 NEXT_INTERFACE_6
134#endif 93#endif
135 94
136#ifdef CDC 95#ifdef VIRTSER_ENABLE
137# define CCI_INTERFACE NEXT_INTERFACE_7 96# define CCI_INTERFACE NEXT_INTERFACE_7
138# define CDI_INTERFACE (CCI_INTERFACE + 1) 97# define CDI_INTERFACE (CCI_INTERFACE + 1)
139# define NEXT_INTERFACE_8 (CDI_INTERFACE + 1) 98# define NEXT_INTERFACE_8 (CDI_INTERFACE + 1)
@@ -155,20 +114,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
155#define NEXT_IN_EPNUM_0 1 114#define NEXT_IN_EPNUM_0 1
156#define NEXT_OUT_EPNUM_0 1 115#define NEXT_OUT_EPNUM_0 1
157 116
158#ifdef KBD 117#define KEYBOARD_IN_EPNUM NEXT_IN_EPNUM_0
159# define KEYBOARD_IN_EPNUM NEXT_IN_EPNUM_0 118#define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM
160# define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM 119#define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1)
161# define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1) 120#define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE
162# define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE 121#define KBD_POLLING_INTERVAL 10
163# define KBD_POLLING_INTERVAL 10 122#ifndef UDI_HID_KBD_STRING_ID
164# ifndef UDI_HID_KBD_STRING_ID 123# define UDI_HID_KBD_STRING_ID 0
165# define UDI_HID_KBD_STRING_ID 0
166# endif
167#else
168# define NEXT_IN_EPNUM_1 NEXT_IN_EPNUM_0
169#endif 124#endif
170 125
171#ifdef MOU 126#ifdef MOUSE_ENABLE
172# define MOUSE_IN_EPNUM NEXT_IN_EPNUM_1 127# define MOUSE_IN_EPNUM NEXT_IN_EPNUM_1
173# define NEXT_IN_EPNUM_2 (MOUSE_IN_EPNUM + 1) 128# define NEXT_IN_EPNUM_2 (MOUSE_IN_EPNUM + 1)
174# define UDI_HID_MOU_EP_IN MOUSE_IN_EPNUM 129# define UDI_HID_MOU_EP_IN MOUSE_IN_EPNUM
@@ -181,7 +136,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
181# define NEXT_IN_EPNUM_2 NEXT_IN_EPNUM_1 136# define NEXT_IN_EPNUM_2 NEXT_IN_EPNUM_1
182#endif 137#endif
183 138
184#ifdef EXK 139#ifdef EXTRAKEY_ENABLE
185# define EXTRAKEY_IN_EPNUM NEXT_IN_EPNUM_2 140# define EXTRAKEY_IN_EPNUM NEXT_IN_EPNUM_2
186# define UDI_HID_EXK_EP_IN EXTRAKEY_IN_EPNUM 141# define UDI_HID_EXK_EP_IN EXTRAKEY_IN_EPNUM
187# define NEXT_IN_EPNUM_3 (EXTRAKEY_IN_EPNUM + 1) 142# define NEXT_IN_EPNUM_3 (EXTRAKEY_IN_EPNUM + 1)
@@ -194,7 +149,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
194# define NEXT_IN_EPNUM_3 NEXT_IN_EPNUM_2 149# define NEXT_IN_EPNUM_3 NEXT_IN_EPNUM_2
195#endif 150#endif
196 151
197#ifdef RAW 152#ifdef RAW_ENABLE
198# define RAW_IN_EPNUM NEXT_IN_EPNUM_3 153# define RAW_IN_EPNUM NEXT_IN_EPNUM_3
199# define UDI_HID_RAW_EP_IN RAW_IN_EPNUM 154# define UDI_HID_RAW_EP_IN RAW_IN_EPNUM
200# define NEXT_IN_EPNUM_4 (RAW_IN_EPNUM + 1) 155# define NEXT_IN_EPNUM_4 (RAW_IN_EPNUM + 1)
@@ -210,7 +165,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
210# define NEXT_OUT_EPNUM_1 NEXT_OUT_EPNUM_0 165# define NEXT_OUT_EPNUM_1 NEXT_OUT_EPNUM_0
211#endif 166#endif
212 167
213#ifdef CON 168#ifdef CONSOLE_ENABLE
214# define CON_IN_EPNUM NEXT_IN_EPNUM_4 169# define CON_IN_EPNUM NEXT_IN_EPNUM_4
215# define UDI_HID_CON_EP_IN CON_IN_EPNUM 170# define UDI_HID_CON_EP_IN CON_IN_EPNUM
216# define NEXT_IN_EPNUM_5 (CON_IN_EPNUM + 1) 171# define NEXT_IN_EPNUM_5 (CON_IN_EPNUM + 1)
@@ -226,7 +181,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
226# define NEXT_OUT_EPNUM_2 NEXT_OUT_EPNUM_1 181# define NEXT_OUT_EPNUM_2 NEXT_OUT_EPNUM_1
227#endif 182#endif
228 183
229#ifdef NKRO 184#ifdef NKRO_ENABLE
230# define NKRO_IN_EPNUM NEXT_IN_EPNUM_5 185# define NKRO_IN_EPNUM NEXT_IN_EPNUM_5
231# define UDI_HID_NKRO_EP_IN NKRO_IN_EPNUM 186# define UDI_HID_NKRO_EP_IN NKRO_IN_EPNUM
232# define NEXT_IN_EPNUM_6 (NKRO_IN_EPNUM + 1) 187# define NEXT_IN_EPNUM_6 (NKRO_IN_EPNUM + 1)
@@ -239,7 +194,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
239# define NEXT_IN_EPNUM_6 NEXT_IN_EPNUM_5 194# define NEXT_IN_EPNUM_6 NEXT_IN_EPNUM_5
240#endif 195#endif
241 196
242#ifdef MIDI 197#ifdef MIDI_ENABLE
243# define MIDI_STREAM_IN_EPNUM NEXT_IN_EPNUM_6 198# define MIDI_STREAM_IN_EPNUM NEXT_IN_EPNUM_6
244# define NEXT_IN_EPNUM_7 (MIDI_STREAM_IN_EPNUM + 1) 199# define NEXT_IN_EPNUM_7 (MIDI_STREAM_IN_EPNUM + 1)
245# define MIDI_STREAM_OUT_EPNUM NEXT_OUT_EPNUM_2 200# define MIDI_STREAM_OUT_EPNUM NEXT_OUT_EPNUM_2
@@ -250,7 +205,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
250# define NEXT_OUT_EPNUM_3 NEXT_OUT_EPNUM_2 205# define NEXT_OUT_EPNUM_3 NEXT_OUT_EPNUM_2
251#endif 206#endif
252 207
253#ifdef CDC 208#ifdef VIRTSER_ENABLE
254# define CDC_NOTIFICATION_EPNUM NEXT_IN_EPNUM_7 209# define CDC_NOTIFICATION_EPNUM NEXT_IN_EPNUM_7
255# define CDC_ACM_ENDPOINT CDC_NOTIFICATION_EPNUM 210# define CDC_ACM_ENDPOINT CDC_NOTIFICATION_EPNUM
256# define CDC_TX_ENDPOINT (CDC_NOTIFICATION_EPNUM + 1) 211# define CDC_TX_ENDPOINT (CDC_NOTIFICATION_EPNUM + 1)
@@ -285,8 +240,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
285// ********************************************************************** 240// **********************************************************************
286// KBD Descriptor structure and content 241// KBD Descriptor structure and content
287// ********************************************************************** 242// **********************************************************************
288#ifdef KBD
289
290COMPILER_PACK_SET(1) 243COMPILER_PACK_SET(1)
291 244
292typedef struct { 245typedef struct {
@@ -299,8 +252,40 @@ typedef struct {
299 uint8_t array[59]; 252 uint8_t array[59];
300} udi_hid_kbd_report_desc_t; 253} udi_hid_kbd_report_desc_t;
301 254
302# define UDI_HID_KBD_DESC \ 255// clang-format off
303 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_KBD_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_BOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, .iface.iInterface = UDI_HID_KBD_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_kbd_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_KBD_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_KBD_EP_SIZE), .ep.bInterval = KBD_POLLING_INTERVAL, } 256
257# define UDI_HID_KBD_DESC { \
258 .iface = { \
259 .bLength = sizeof(usb_iface_desc_t), \
260 .bDescriptorType = USB_DT_INTERFACE, \
261 .bInterfaceNumber = UDI_HID_KBD_IFACE_NUMBER, \
262 .bAlternateSetting = 0, \
263 .bNumEndpoints = 1, \
264 .bInterfaceClass = HID_CLASS, \
265 .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
266 .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, \
267 .iInterface = UDI_HID_KBD_STRING_ID, \
268 }, \
269 .hid = { \
270 .bLength = sizeof(usb_hid_descriptor_t), \
271 .bDescriptorType = USB_DT_HID, \
272 .bcdHID = LE16(USB_HID_BDC_V1_11), \
273 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
274 .bNumDescriptors = USB_HID_NUM_DESC, \
275 .bRDescriptorType = USB_DT_HID_REPORT, \
276 .wDescriptorLength = LE16(sizeof(udi_hid_kbd_report_desc_t)), \
277 }, \
278 .ep = { \
279 .bLength = sizeof(usb_ep_desc_t), \
280 .bDescriptorType = USB_DT_ENDPOINT, \
281 .bEndpointAddress = UDI_HID_KBD_EP_IN | USB_EP_DIR_IN, \
282 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
283 .wMaxPacketSize = LE16(UDI_HID_KBD_EP_SIZE), \
284 .bInterval = KBD_POLLING_INTERVAL \
285 } \
286}
287
288// clang-format on
304 289
305// set report buffer (from host) 290// set report buffer (from host)
306extern uint8_t udi_hid_kbd_report_set; 291extern uint8_t udi_hid_kbd_report_set;
@@ -311,12 +296,10 @@ extern uint8_t udi_hid_kbd_report[UDI_HID_KBD_REPORT_SIZE];
311 296
312COMPILER_PACK_RESET() 297COMPILER_PACK_RESET()
313 298
314#endif // KBD
315
316// ********************************************************************** 299// **********************************************************************
317// EXK Descriptor structure and content 300// EXK Descriptor structure and content
318// ********************************************************************** 301// **********************************************************************
319#ifdef EXK 302#ifdef EXTRAKEY_ENABLE
320 303
321COMPILER_PACK_SET(1) 304COMPILER_PACK_SET(1)
322 305
@@ -330,8 +313,40 @@ typedef struct {
330 uint8_t array[50]; 313 uint8_t array[50];
331} udi_hid_exk_report_desc_t; 314} udi_hid_exk_report_desc_t;
332 315
333# define UDI_HID_EXK_DESC \ 316// clang-format off
334 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_EXK_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_BOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_GENERIC, .iface.iInterface = UDI_HID_EXK_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_exk_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_EXK_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_EXK_EP_SIZE), .ep.bInterval = EXTRAKEY_POLLING_INTERVAL, } 317
318# define UDI_HID_EXK_DESC { \
319 .iface = { \
320 .bLength = sizeof(usb_iface_desc_t), \
321 .bDescriptorType = USB_DT_INTERFACE, \
322 .bInterfaceNumber = UDI_HID_EXK_IFACE_NUMBER, \
323 .bAlternateSetting = 0, \
324 .bNumEndpoints = 1, \
325 .bInterfaceClass = HID_CLASS, \
326 .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
327 .bInterfaceProtocol = HID_PROTOCOL_GENERIC, \
328 .iInterface = UDI_HID_EXK_STRING_ID \
329 }, \
330 .hid = { \
331 .bLength = sizeof(usb_hid_descriptor_t), \
332 .bDescriptorType = USB_DT_HID, \
333 .bcdHID = LE16(USB_HID_BDC_V1_11), \
334 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
335 .bNumDescriptors = USB_HID_NUM_DESC, \
336 .bRDescriptorType = USB_DT_HID_REPORT, \
337 .wDescriptorLength = LE16(sizeof(udi_hid_exk_report_desc_t)) \
338 }, \
339 .ep = { \
340 .bLength = sizeof(usb_ep_desc_t), \
341 .bDescriptorType = USB_DT_ENDPOINT, \
342 .bEndpointAddress = UDI_HID_EXK_EP_IN | USB_EP_DIR_IN, \
343 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
344 .wMaxPacketSize = LE16(UDI_HID_EXK_EP_SIZE), \
345 .bInterval = EXTRAKEY_POLLING_INTERVAL \
346 } \
347}
348
349// clang-format on
335 350
336// set report buffer (from host) 351// set report buffer (from host)
337extern uint8_t udi_hid_exk_report_set; 352extern uint8_t udi_hid_exk_report_set;
@@ -351,12 +366,12 @@ extern udi_hid_exk_report_t udi_hid_exk_report;
351 366
352COMPILER_PACK_RESET() 367COMPILER_PACK_RESET()
353 368
354#endif // EXK 369#endif // EXTRAKEY_ENABLE
355 370
356// ********************************************************************** 371// **********************************************************************
357// NKRO Descriptor structure and content 372// NKRO Descriptor structure and content
358// ********************************************************************** 373// **********************************************************************
359#ifdef NKRO 374#ifdef NKRO_ENABLE
360 375
361COMPILER_PACK_SET(1) 376COMPILER_PACK_SET(1)
362 377
@@ -370,8 +385,40 @@ typedef struct {
370 uint8_t array[57]; 385 uint8_t array[57];
371} udi_hid_nkro_report_desc_t; 386} udi_hid_nkro_report_desc_t;
372 387
373# define UDI_HID_NKRO_DESC \ 388// clang-format off
374 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_NKRO_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, .iface.iInterface = UDI_HID_NKRO_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_nkro_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_NKRO_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_NKRO_EP_SIZE), .ep.bInterval = NKRO_POLLING_INTERVAL, } 389
390# define UDI_HID_NKRO_DESC { \
391 .iface = { \
392 .bLength = sizeof(usb_iface_desc_t), \
393 .bDescriptorType = USB_DT_INTERFACE, \
394 .bInterfaceNumber = UDI_HID_NKRO_IFACE_NUMBER, \
395 .bAlternateSetting = 0, \
396 .bNumEndpoints = 1, \
397 .bInterfaceClass = HID_CLASS, \
398 .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
399 .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, \
400 .iInterface = UDI_HID_NKRO_STRING_ID \
401 }, \
402 .hid = { \
403 .bLength = sizeof(usb_hid_descriptor_t), \
404 .bDescriptorType = USB_DT_HID, \
405 .bcdHID = LE16(USB_HID_BDC_V1_11), \
406 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
407 .bNumDescriptors = USB_HID_NUM_DESC, \
408 .bRDescriptorType = USB_DT_HID_REPORT, \
409 .wDescriptorLength = LE16(sizeof(udi_hid_nkro_report_desc_t)) \
410 }, \
411 .ep = { \
412 .bLength = sizeof(usb_ep_desc_t), \
413 .bDescriptorType = USB_DT_ENDPOINT, \
414 .bEndpointAddress = UDI_HID_NKRO_EP_IN | USB_EP_DIR_IN, \
415 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
416 .wMaxPacketSize = LE16(UDI_HID_NKRO_EP_SIZE), \
417 .bInterval = NKRO_POLLING_INTERVAL \
418 } \
419}
420
421// clang-format on
375 422
376// set report buffer 423// set report buffer
377extern uint8_t udi_hid_nkro_report_set; 424extern uint8_t udi_hid_nkro_report_set;
@@ -382,12 +429,12 @@ extern uint8_t udi_hid_nkro_report[UDI_HID_NKRO_REPORT_SIZE];
382 429
383COMPILER_PACK_RESET() 430COMPILER_PACK_RESET()
384 431
385#endif // NKRO 432#endif // NKRO_ENABLE
386 433
387// ********************************************************************** 434// **********************************************************************
388// MOU Descriptor structure and content 435// MOU Descriptor structure and content
389// ********************************************************************** 436// **********************************************************************
390#ifdef MOU 437#ifdef MOUSE_ENABLE
391 438
392COMPILER_PACK_SET(1) 439COMPILER_PACK_SET(1)
393 440
@@ -401,10 +448,40 @@ typedef struct {
401 uint8_t array[77]; // MOU PDS 448 uint8_t array[77]; // MOU PDS
402} udi_hid_mou_report_desc_t; 449} udi_hid_mou_report_desc_t;
403 450
404# define UDI_HID_MOU_DESC \ 451// clang-format off
405 { .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = MOUSE_INTERFACE, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 1, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_BOOT, .iface.bInterfaceProtocol = HID_PROTOCOL_MOUSE, .iface.iInterface = UDI_HID_MOU_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_mou_report_desc_t)), .ep.bLength = sizeof(usb_ep_desc_t), .ep.bDescriptorType = USB_DT_ENDPOINT, .ep.bEndpointAddress = UDI_HID_MOU_EP_IN | USB_EP_DIR_IN, .ep.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep.wMaxPacketSize = LE16(UDI_HID_MOU_EP_SIZE), .ep.bInterval = MOU_POLLING_INTERVAL, } 452
406 453# define UDI_HID_MOU_DESC { \
407// no set report buffer 454 .iface = { \
455 .bLength = sizeof(usb_iface_desc_t), \
456 .bDescriptorType = USB_DT_INTERFACE, \
457 .bInterfaceNumber = MOUSE_INTERFACE, \
458 .bAlternateSetting = 0, \
459 .bNumEndpoints = 1, \
460 .bInterfaceClass = HID_CLASS, \
461 .bInterfaceSubClass = HID_SUB_CLASS_BOOT, \
462 .bInterfaceProtocol = HID_PROTOCOL_MOUSE, \
463 .iInterface = UDI_HID_MOU_STRING_ID \
464 }, \
465 .hid = { \
466 .bLength = sizeof(usb_hid_descriptor_t), \
467 .bDescriptorType = USB_DT_HID, \
468 .bcdHID = LE16(USB_HID_BDC_V1_11), \
469 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
470 .bNumDescriptors = USB_HID_NUM_DESC, \
471 .bRDescriptorType = USB_DT_HID_REPORT, \
472 .wDescriptorLength = LE16(sizeof(udi_hid_mou_report_desc_t)) \
473 }, \
474 .ep = { \
475 .bLength = sizeof(usb_ep_desc_t), \
476 .bDescriptorType = USB_DT_ENDPOINT, \
477 .bEndpointAddress = UDI_HID_MOU_EP_IN | USB_EP_DIR_IN, \
478 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
479 .wMaxPacketSize = LE16(UDI_HID_MOU_EP_SIZE), \
480 .bInterval = MOU_POLLING_INTERVAL \
481 } \
482}
483
484// clang-format on
408 485
409// report buffer 486// report buffer
410# define UDI_HID_MOU_REPORT_SIZE 5 // MOU PDS 487# define UDI_HID_MOU_REPORT_SIZE 5 // MOU PDS
@@ -412,12 +489,12 @@ extern uint8_t udi_hid_mou_report[UDI_HID_MOU_REPORT_SIZE];
412 489
413COMPILER_PACK_RESET() 490COMPILER_PACK_RESET()
414 491
415#endif // MOU 492#endif // MOUSE_ENABLE
416 493
417// ********************************************************************** 494// **********************************************************************
418// RAW Descriptor structure and content 495// RAW Descriptor structure and content
419// ********************************************************************** 496// **********************************************************************
420#ifdef RAW 497#ifdef RAW_ENABLE
421 498
422COMPILER_PACK_SET(1) 499COMPILER_PACK_SET(1)
423 500
@@ -432,11 +509,48 @@ typedef struct {
432 uint8_t array[26]; 509 uint8_t array[26];
433} udi_hid_raw_report_desc_t; 510} udi_hid_raw_report_desc_t;
434 511
435# define UDI_HID_RAW_DESC \ 512// clang-format off
436 { \ 513
437 .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = RAW_INTERFACE, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 2, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, .iface.bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, .iface.iInterface = UDI_HID_RAW_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_raw_report_desc_t)), .ep_out.bLength = sizeof(usb_ep_desc_t), .ep_out.bDescriptorType = USB_DT_ENDPOINT, .ep_out.bEndpointAddress = UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, .ep_out.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_out.wMaxPacketSize = LE16(RAW_EPSIZE), .ep_out.bInterval = RAW_POLLING_INTERVAL, \ 514# define UDI_HID_RAW_DESC { \
438 .ep_in.bLength = sizeof(usb_ep_desc_t), .ep_in.bDescriptorType = USB_DT_ENDPOINT, .ep_in.bEndpointAddress = UDI_HID_RAW_EP_IN | USB_EP_DIR_IN, .ep_in.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_in.wMaxPacketSize = LE16(RAW_EPSIZE), .ep_in.bInterval = RAW_POLLING_INTERVAL, \ 515 .iface = { \
439 } 516 .bLength = sizeof(usb_iface_desc_t), \
517 .bDescriptorType = USB_DT_INTERFACE, \
518 .bInterfaceNumber = RAW_INTERFACE, \
519 .bAlternateSetting = 0, \
520 .bNumEndpoints = 2, \
521 .bInterfaceClass = HID_CLASS, \
522 .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
523 .bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, \
524 .iInterface = UDI_HID_RAW_STRING_ID \
525 }, \
526 .hid = { \
527 .bLength = sizeof(usb_hid_descriptor_t), \
528 .bDescriptorType = USB_DT_HID, \
529 .bcdHID = LE16(USB_HID_BDC_V1_11), \
530 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
531 .bNumDescriptors = USB_HID_NUM_DESC, \
532 .bRDescriptorType = USB_DT_HID_REPORT, \
533 .wDescriptorLength = LE16(sizeof(udi_hid_raw_report_desc_t)) \
534 }, \
535 .ep_out = { \
536 .bLength = sizeof(usb_ep_desc_t), \
537 .bDescriptorType = USB_DT_ENDPOINT, \
538 .bEndpointAddress = UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, \
539 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
540 .wMaxPacketSize = LE16(RAW_EPSIZE), \
541 .bInterval = RAW_POLLING_INTERVAL \
542 }, \
543 .ep_in = { \
544 .bLength = sizeof(usb_ep_desc_t), \
545 .bDescriptorType = USB_DT_ENDPOINT, \
546 .bEndpointAddress = UDI_HID_RAW_EP_IN | USB_EP_DIR_IN, \
547 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
548 .wMaxPacketSize = LE16(RAW_EPSIZE), \
549 .bInterval = RAW_POLLING_INTERVAL \
550 } \
551}
552
553// clang-format on
440 554
441# define UDI_HID_RAW_REPORT_SIZE RAW_EPSIZE 555# define UDI_HID_RAW_REPORT_SIZE RAW_EPSIZE
442 556
@@ -447,12 +561,12 @@ extern uint8_t udi_hid_raw_report[UDI_HID_RAW_REPORT_SIZE];
447 561
448COMPILER_PACK_RESET() 562COMPILER_PACK_RESET()
449 563
450#endif // RAW 564#endif // RAW_ENABLE
451 565
452// ********************************************************************** 566// **********************************************************************
453// CON Descriptor structure and content 567// CON Descriptor structure and content
454// ********************************************************************** 568// **********************************************************************
455#ifdef CON 569#ifdef CONSOLE_ENABLE
456 570
457COMPILER_PACK_SET(1) 571COMPILER_PACK_SET(1)
458 572
@@ -467,11 +581,48 @@ typedef struct {
467 uint8_t array[34]; 581 uint8_t array[34];
468} udi_hid_con_report_desc_t; 582} udi_hid_con_report_desc_t;
469 583
470# define UDI_HID_CON_DESC \ 584// clang-format off
471 { \ 585
472 .iface.bLength = sizeof(usb_iface_desc_t), .iface.bDescriptorType = USB_DT_INTERFACE, .iface.bInterfaceNumber = UDI_HID_CON_IFACE_NUMBER, .iface.bAlternateSetting = 0, .iface.bNumEndpoints = 2, .iface.bInterfaceClass = HID_CLASS, .iface.bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, .iface.bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, .iface.iInterface = UDI_HID_CON_STRING_ID, .hid.bLength = sizeof(usb_hid_descriptor_t), .hid.bDescriptorType = USB_DT_HID, .hid.bcdHID = LE16(USB_HID_BDC_V1_11), .hid.bCountryCode = USB_HID_NO_COUNTRY_CODE, .hid.bNumDescriptors = USB_HID_NUM_DESC, .hid.bRDescriptorType = USB_DT_HID_REPORT, .hid.wDescriptorLength = LE16(sizeof(udi_hid_con_report_desc_t)), .ep_out.bLength = sizeof(usb_ep_desc_t), .ep_out.bDescriptorType = USB_DT_ENDPOINT, .ep_out.bEndpointAddress = UDI_HID_CON_EP_OUT | USB_EP_DIR_OUT, .ep_out.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_out.wMaxPacketSize = LE16(CONSOLE_EPSIZE), .ep_out.bInterval = CON_POLLING_INTERVAL, \ 586# define UDI_HID_CON_DESC { \
473 .ep_in.bLength = sizeof(usb_ep_desc_t), .ep_in.bDescriptorType = USB_DT_ENDPOINT, .ep_in.bEndpointAddress = UDI_HID_CON_EP_IN | USB_EP_DIR_IN, .ep_in.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_in.wMaxPacketSize = LE16(CONSOLE_EPSIZE), .ep_in.bInterval = CON_POLLING_INTERVAL, \ 587 .iface = { \
474 } 588 .bLength = sizeof(usb_iface_desc_t), \
589 .bDescriptorType = USB_DT_INTERFACE, \
590 .bInterfaceNumber = UDI_HID_CON_IFACE_NUMBER, \
591 .bAlternateSetting = 0, \
592 .bNumEndpoints = 2, \
593 .bInterfaceClass = HID_CLASS, \
594 .bInterfaceSubClass = HID_SUB_CLASS_NOBOOT, \
595 .bInterfaceProtocol = HID_SUB_CLASS_NOBOOT, \
596 .iInterface = UDI_HID_CON_STRING_ID \
597 }, \
598 .hid = { \
599 .bLength = sizeof(usb_hid_descriptor_t), \
600 .bDescriptorType = USB_DT_HID, \
601 .bcdHID = LE16(USB_HID_BDC_V1_11), \
602 .bCountryCode = USB_HID_NO_COUNTRY_CODE, \
603 .bNumDescriptors = USB_HID_NUM_DESC, \
604 .bRDescriptorType = USB_DT_HID_REPORT, \
605 .wDescriptorLength = LE16(sizeof(udi_hid_con_report_desc_t)) \
606 }, \
607 .ep_out = { \
608 .bLength = sizeof(usb_ep_desc_t), \
609 .bDescriptorType = USB_DT_ENDPOINT, \
610 .bEndpointAddress = UDI_HID_CON_EP_OUT | USB_EP_DIR_OUT, \
611 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
612 .wMaxPacketSize = LE16(CONSOLE_EPSIZE), \
613 .bInterval = CON_POLLING_INTERVAL \
614 }, \
615 .ep_in = { \
616 .bLength = sizeof(usb_ep_desc_t), \
617 .bDescriptorType = USB_DT_ENDPOINT, \
618 .bEndpointAddress = UDI_HID_CON_EP_IN | USB_EP_DIR_IN, \
619 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
620 .wMaxPacketSize = LE16(CONSOLE_EPSIZE), \
621 .bInterval = CON_POLLING_INTERVAL \
622 } \
623}
624
625// clang-format on
475 626
476# define UDI_HID_CON_REPORT_SIZE CONSOLE_EPSIZE 627# define UDI_HID_CON_REPORT_SIZE CONSOLE_EPSIZE
477 628
@@ -482,12 +633,12 @@ extern uint8_t udi_hid_con_report[UDI_HID_CON_REPORT_SIZE];
482 633
483COMPILER_PACK_RESET() 634COMPILER_PACK_RESET()
484 635
485#endif // CON 636#endif // CONSOLE_ENABLE
486 637
487// ********************************************************************** 638// **********************************************************************
488// CDC Descriptor structure and content 639// CDC Descriptor structure and content
489// ********************************************************************** 640// **********************************************************************
490#ifdef CDC 641#ifdef VIRTSER_ENABLE
491 642
492COMPILER_PACK_SET(1) 643COMPILER_PACK_SET(1)
493 644
@@ -534,16 +685,98 @@ typedef struct {
534 usb_ep_desc_t ep_rx; 685 usb_ep_desc_t ep_rx;
535} udi_cdc_desc_t; 686} udi_cdc_desc_t;
536 687
537# define CDC_DESCRIPTOR \ 688// clang-format off
538 { \ 689
539 .iaface.bLength = sizeof(usb_association_desc_t), .iaface.bDescriptorType = USB_DT_IAD, .iaface.bFirstInterface = CDC_STATUS_INTERFACE, .iaface.bInterfaceCount = 2, .iaface.bFunctionClass = CDC_CLASS_DEVICE, .iaface.bFunctionSubClass = CDC_SUBCLASS_ACM, .iaface.bFunctionProtocol = CDC_PROTOCOL_V25TER, .iaface.iFunction = 0, .iface_c.bLength = sizeof(usb_iface_desc_t), .iface_c.bDescriptorType = USB_DT_INTERFACE, .iface_c.bInterfaceNumber = CDC_STATUS_INTERFACE, .iface_c.bAlternateSetting = 0, .iface_c.bNumEndpoints = 1, .iface_c.bInterfaceClass = 0x02, .iface_c.bInterfaceSubClass = 0x02, .iface_c.bInterfaceProtocol = CDC_PROTOCOL_V25TER, .iface_c.iInterface = 0, .fd.bFunctionLength = sizeof(usb_cdc_hdr_desc_t), .fd.bDescriptorType = CDC_CS_INTERFACE, .fd.bDescriptorSubtype = CDC_SCS_HEADER, .fd.bcdCDC = 0x0110, .mfd.bFunctionLength = sizeof(usb_cdc_call_mgmt_desc_t), .mfd.bDescriptorType = CDC_CS_INTERFACE, .mfd.bDescriptorSubtype = CDC_SCS_CALL_MGMT, \ 690# define CDC_DESCRIPTOR { \
540 .mfd.bmCapabilities = CDC_CALL_MGMT_SUPPORTED, .mfd.bDataInterface = CDC_DATA_INTERFACE, .acmd.bFunctionLength = sizeof(usb_cdc_acm_desc_t), .acmd.bDescriptorType = CDC_CS_INTERFACE, .acmd.bDescriptorSubtype = CDC_SCS_ACM, .acmd.bmCapabilities = CDC_ACM_SUPPORT_LINE_REQUESTS, .ufd.bFunctionLength = sizeof(usb_cdc_union_desc_t), .ufd.bDescriptorType = CDC_CS_INTERFACE, .ufd.bDescriptorSubtype = CDC_SCS_UNION, .ufd.bMasterInterface = CDC_STATUS_INTERFACE, .ufd.bSlaveInterface0 = CDC_DATA_INTERFACE, .ep_c.bLength = sizeof(usb_ep_desc_t), .ep_c.bDescriptorType = USB_DT_ENDPOINT, .ep_c.bEndpointAddress = CDC_ACM_ENDPOINT | USB_EP_DIR_IN, .ep_c.bmAttributes = USB_EP_TYPE_INTERRUPT, .ep_c.wMaxPacketSize = LE16(CDC_ACM_SIZE), .ep_c.bInterval = CDC_EP_INTERVAL_STATUS, .iface_d.bLength = sizeof(usb_iface_desc_t), .iface_d.bDescriptorType = USB_DT_INTERFACE, .iface_d.bInterfaceNumber = CDC_DATA_INTERFACE, .iface_d.bAlternateSetting = 0, .iface_d.bNumEndpoints = 2, \ 691 .iaface = { \
541 .iface_d.bInterfaceClass = CDC_CLASS_DATA, .iface_d.bInterfaceSubClass = 0, .iface_d.bInterfaceProtocol = 0, .iface_d.iInterface = 0, .ep_rx.bLength = sizeof(usb_ep_desc_t), .ep_rx.bDescriptorType = USB_DT_ENDPOINT, .ep_rx.bEndpointAddress = CDC_RX_ENDPOINT | USB_EP_DIR_OUT, .ep_rx.bmAttributes = USB_EP_TYPE_BULK, .ep_rx.wMaxPacketSize = LE16(CDC_RX_SIZE), .ep_rx.bInterval = CDC_EP_INTERVAL_DATA, .ep_tx.bLength = sizeof(usb_ep_desc_t), .ep_tx.bDescriptorType = USB_DT_ENDPOINT, .ep_tx.bEndpointAddress = CDC_TX_ENDPOINT | USB_EP_DIR_IN, .ep_tx.bmAttributes = USB_EP_TYPE_BULK, .ep_tx.wMaxPacketSize = LE16(CDC_TX_SIZE), .ep_tx.bInterval = CDC_EP_INTERVAL_DATA, \ 692 .bLength = sizeof(usb_association_desc_t), \
542 } 693 .bDescriptorType = USB_DT_IAD, \
694 .bFirstInterface = CDC_STATUS_INTERFACE, \
695 .bInterfaceCount = 2, \
696 .bFunctionClass = CDC_CLASS_DEVICE, \
697 .bFunctionSubClass = CDC_SUBCLASS_ACM, \
698 .bFunctionProtocol = CDC_PROTOCOL_V25TER, \
699 .iFunction = 0 \
700 }, \
701 .iface_c = { \
702 .bLength = sizeof(usb_iface_desc_t), \
703 .bDescriptorType = USB_DT_INTERFACE, \
704 .bInterfaceNumber = CDC_STATUS_INTERFACE, \
705 .bAlternateSetting = 0, \
706 .bNumEndpoints = 1, \
707 .bInterfaceClass = 0x02, \
708 .bInterfaceSubClass = 0x02, \
709 .bInterfaceProtocol = CDC_PROTOCOL_V25TER, \
710 .iInterface = 0 \
711 }, \
712 .fd = { \
713 .bFunctionLength = sizeof(usb_cdc_hdr_desc_t), \
714 .bDescriptorType = CDC_CS_INTERFACE, \
715 .bDescriptorSubtype = CDC_SCS_HEADER, \
716 .bcdCDC = 0x0110 \
717 }, \
718 .mfd = { \
719 .bFunctionLength = sizeof(usb_cdc_call_mgmt_desc_t), \
720 .bDescriptorType = CDC_CS_INTERFACE, \
721 .bDescriptorSubtype = CDC_SCS_CALL_MGMT, \
722 .bmCapabilities = CDC_CALL_MGMT_SUPPORTED, \
723 .bDataInterface = CDC_DATA_INTERFACE \
724 }, \
725 .acmd = { \
726 .bFunctionLength = sizeof(usb_cdc_acm_desc_t), \
727 .bDescriptorType = CDC_CS_INTERFACE, \
728 .bDescriptorSubtype = CDC_SCS_ACM, \
729 .bmCapabilities = CDC_ACM_SUPPORT_LINE_REQUESTS \
730 }, \
731 .ufd = { \
732 .bFunctionLength = sizeof(usb_cdc_union_desc_t), \
733 .bDescriptorType = CDC_CS_INTERFACE, \
734 .bDescriptorSubtype = CDC_SCS_UNION, \
735 .bMasterInterface = CDC_STATUS_INTERFACE, \
736 .bSlaveInterface0 = CDC_DATA_INTERFACE \
737 }, \
738 .ep_c = { \
739 .bLength = sizeof(usb_ep_desc_t), \
740 .bDescriptorType = USB_DT_ENDPOINT, \
741 .bEndpointAddress = CDC_ACM_ENDPOINT | USB_EP_DIR_IN, \
742 .bmAttributes = USB_EP_TYPE_INTERRUPT, \
743 .wMaxPacketSize = LE16(CDC_ACM_SIZE), \
744 .bInterval = CDC_EP_INTERVAL_STATUS \
745 }, \
746 .iface_d = { \
747 .bLength = sizeof(usb_iface_desc_t), \
748 .bDescriptorType = USB_DT_INTERFACE, \
749 .bInterfaceNumber = CDC_DATA_INTERFACE, \
750 .bAlternateSetting = 0, \
751 .bNumEndpoints = 2, \
752 .bInterfaceClass = CDC_CLASS_DATA, \
753 .bInterfaceSubClass = 0, \
754 .bInterfaceProtocol = 0, \
755 .iInterface = 0 \
756 }, \
757 .ep_rx = { \
758 .bLength = sizeof(usb_ep_desc_t), \
759 .bDescriptorType = USB_DT_ENDPOINT, \
760 .bEndpointAddress = CDC_RX_ENDPOINT | USB_EP_DIR_OUT, \
761 .bmAttributes = USB_EP_TYPE_BULK, \
762 .wMaxPacketSize = LE16(CDC_RX_SIZE), \
763 .bInterval = CDC_EP_INTERVAL_DATA \
764 }, \
765 .ep_tx = { \
766 .bLength = sizeof(usb_ep_desc_t), \
767 .bDescriptorType = USB_DT_ENDPOINT, \
768 .bEndpointAddress = CDC_TX_ENDPOINT | USB_EP_DIR_IN, \
769 .bmAttributes = USB_EP_TYPE_BULK, \
770 .wMaxPacketSize = LE16(CDC_TX_SIZE), \
771 .bInterval = CDC_EP_INTERVAL_DATA \
772 } \
773}
774
775// clang-format on
543 776
544COMPILER_PACK_RESET() 777COMPILER_PACK_RESET()
545 778
546#endif // CDC 779#endif // VIRTSER_ENABLE
547 780
548// ********************************************************************** 781// **********************************************************************
549// CONFIGURATION Descriptor structure and content 782// CONFIGURATION Descriptor structure and content
@@ -552,28 +785,26 @@ COMPILER_PACK_SET(1)
552 785
553typedef struct { 786typedef struct {
554 usb_conf_desc_t conf; 787 usb_conf_desc_t conf;
555#ifdef KBD
556 udi_hid_kbd_desc_t hid_kbd; 788 udi_hid_kbd_desc_t hid_kbd;
557#endif 789#ifdef MOUSE_ENABLE
558#ifdef MOU
559 udi_hid_mou_desc_t hid_mou; 790 udi_hid_mou_desc_t hid_mou;
560#endif 791#endif
561#ifdef EXK 792#ifdef EXTRAKEY_ENABLE
562 udi_hid_exk_desc_t hid_exk; 793 udi_hid_exk_desc_t hid_exk;
563#endif 794#endif
564#ifdef RAW 795#ifdef RAW_ENABLE
565 udi_hid_raw_desc_t hid_raw; 796 udi_hid_raw_desc_t hid_raw;
566#endif 797#endif
567#ifdef CON 798#ifdef CONSOLE_ENABLE
568 udi_hid_con_desc_t hid_con; 799 udi_hid_con_desc_t hid_con;
569#endif 800#endif
570#ifdef NKRO 801#ifdef NKRO_ENABLE
571 udi_hid_nkro_desc_t hid_nkro; 802 udi_hid_nkro_desc_t hid_nkro;
572#endif 803#endif
573#ifdef MIDI 804#ifdef MIDI_ENABLE
574 udi_hid_midi_desc_t hid_midi; 805 udi_hid_midi_desc_t hid_midi;
575#endif 806#endif
576#ifdef CDC 807#ifdef VIRTSER_ENABLE
577 udi_cdc_desc_t cdc_serial; 808 udi_cdc_desc_t cdc_serial;
578#endif 809#endif
579} udc_desc_t; 810} udc_desc_t;
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
index 8142f297d..3e9fbfdbe 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
@@ -59,8 +59,6 @@
59//*************************************************************************** 59//***************************************************************************
60// KBD 60// KBD
61//*************************************************************************** 61//***************************************************************************
62#ifdef KBD
63
64bool udi_hid_kbd_enable(void); 62bool udi_hid_kbd_enable(void);
65void udi_hid_kbd_disable(void); 63void udi_hid_kbd_disable(void);
66bool udi_hid_kbd_setup(void); 64bool udi_hid_kbd_setup(void);
@@ -196,12 +194,10 @@ static void udi_hid_kbd_setreport_valid(void) {
196 // UDI_HID_KBD_CHANGE_LED(udi_hid_kbd_report_set); 194 // UDI_HID_KBD_CHANGE_LED(udi_hid_kbd_report_set);
197} 195}
198 196
199#endif // KBD
200
201//******************************************************************************************** 197//********************************************************************************************
202// NKRO Keyboard 198// NKRO Keyboard
203//******************************************************************************************** 199//********************************************************************************************
204#ifdef NKRO 200#ifdef NKRO_ENABLE
205 201
206bool udi_hid_nkro_enable(void); 202bool udi_hid_nkro_enable(void);
207void udi_hid_nkro_disable(void); 203void udi_hid_nkro_disable(void);
@@ -336,12 +332,12 @@ static void udi_hid_nkro_setreport_valid(void) {
336 // UDI_HID_NKRO_CHANGE_LED(udi_hid_nkro_report_set); 332 // UDI_HID_NKRO_CHANGE_LED(udi_hid_nkro_report_set);
337} 333}
338 334
339#endif // NKRO 335#endif // NKRO_ENABLE
340 336
341//******************************************************************************************** 337//********************************************************************************************
342// EXK (extra-keys) SYS-CTRL Keyboard 338// EXK (extra-keys) SYS-CTRL Keyboard
343//******************************************************************************************** 339//********************************************************************************************
344#ifdef EXK 340#ifdef EXTRAKEY_ENABLE
345 341
346bool udi_hid_exk_enable(void); 342bool udi_hid_exk_enable(void);
347void udi_hid_exk_disable(void); 343void udi_hid_exk_disable(void);
@@ -467,12 +463,12 @@ static void udi_hid_exk_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
467 463
468static void udi_hid_exk_setreport_valid(void) {} 464static void udi_hid_exk_setreport_valid(void) {}
469 465
470#endif // EXK 466#endif // EXTRAKEY_ENABLE
471 467
472//******************************************************************************************** 468//********************************************************************************************
473// MOU Mouse 469// MOU Mouse
474//******************************************************************************************** 470//********************************************************************************************
475#ifdef MOU 471#ifdef MOUSE_ENABLE
476 472
477bool udi_hid_mou_enable(void); 473bool udi_hid_mou_enable(void);
478void udi_hid_mou_disable(void); 474void udi_hid_mou_disable(void);
@@ -601,12 +597,12 @@ static void udi_hid_mou_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
601 } 597 }
602} 598}
603 599
604#endif // MOU 600#endif // MOUSE_ENABLE
605 601
606//******************************************************************************************** 602//********************************************************************************************
607// RAW 603// RAW
608//******************************************************************************************** 604//********************************************************************************************
609#ifdef RAW 605#ifdef RAW_ENABLE
610 606
611bool udi_hid_raw_enable(void); 607bool udi_hid_raw_enable(void);
612void udi_hid_raw_disable(void); 608void udi_hid_raw_disable(void);
@@ -746,12 +742,12 @@ static void udi_hid_raw_report_rcvd(udd_ep_status_t status, iram_size_t nb_rcvd,
746 } 742 }
747} 743}
748 744
749#endif //RAW 745#endif // RAW_ENABLE
750 746
751//******************************************************************************************** 747//********************************************************************************************
752// CON 748// CON
753//******************************************************************************************** 749//********************************************************************************************
754#ifdef CON 750#ifdef CONSOLE_ENABLE
755 751
756bool udi_hid_con_enable(void); 752bool udi_hid_con_enable(void);
757void udi_hid_con_disable(void); 753void udi_hid_con_disable(void);
@@ -866,4 +862,4 @@ static void udi_hid_con_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
866 862
867static void udi_hid_con_setreport_valid(void) {} 863static void udi_hid_con_setreport_valid(void) {}
868 864
869#endif // CON 865#endif // CONSOLE_ENABLE
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
index 6dc1fed3e..a2d228162 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
@@ -57,62 +57,60 @@ extern "C" {
57//****************************************************************************** 57//******************************************************************************
58// Keyboard interface definitions 58// Keyboard interface definitions
59//****************************************************************************** 59//******************************************************************************
60#ifdef KBD
61extern UDC_DESC_STORAGE udi_api_t udi_api_hid_kbd; 60extern UDC_DESC_STORAGE udi_api_t udi_api_hid_kbd;
62extern bool udi_hid_kbd_b_report_valid; 61extern bool udi_hid_kbd_b_report_valid;
63extern volatile bool udi_hid_kbd_b_report_trans_ongoing; 62extern volatile bool udi_hid_kbd_b_report_trans_ongoing;
64extern uint8_t udi_hid_kbd_report_set; 63extern uint8_t udi_hid_kbd_report_set;
65bool udi_hid_kbd_send_report(void); 64bool udi_hid_kbd_send_report(void);
66#endif // KBD
67 65
68//******************************************************************************************** 66//********************************************************************************************
69// NKRO Keyboard 67// NKRO Keyboard
70//******************************************************************************************** 68//********************************************************************************************
71#ifdef NKRO 69#ifdef NKRO_ENABLE
72extern UDC_DESC_STORAGE udi_api_t udi_api_hid_nkro; 70extern UDC_DESC_STORAGE udi_api_t udi_api_hid_nkro;
73extern bool udi_hid_nkro_b_report_valid; 71extern bool udi_hid_nkro_b_report_valid;
74extern volatile bool udi_hid_nkro_b_report_trans_ongoing; 72extern volatile bool udi_hid_nkro_b_report_trans_ongoing;
75bool udi_hid_nkro_send_report(void); 73bool udi_hid_nkro_send_report(void);
76#endif // NKRO 74#endif // NKRO_ENABLE
77 75
78//******************************************************************************************** 76//********************************************************************************************
79// SYS-CTRL interface 77// SYS-CTRL interface
80//******************************************************************************************** 78//********************************************************************************************
81#ifdef EXK 79#ifdef EXTRAKEY_ENABLE
82extern UDC_DESC_STORAGE udi_api_t udi_api_hid_exk; 80extern UDC_DESC_STORAGE udi_api_t udi_api_hid_exk;
83extern bool udi_hid_exk_b_report_valid; 81extern bool udi_hid_exk_b_report_valid;
84extern uint8_t udi_hid_exk_report_set; 82extern uint8_t udi_hid_exk_report_set;
85bool udi_hid_exk_send_report(void); 83bool udi_hid_exk_send_report(void);
86#endif // EXK 84#endif // EXTRAKEY_ENABLE
87 85
88//******************************************************************************************** 86//********************************************************************************************
89// CON Console 87// CON Console
90//******************************************************************************************** 88//********************************************************************************************
91#ifdef CON 89#ifdef CONSOLE_ENABLE
92extern UDC_DESC_STORAGE udi_api_t udi_api_hid_con; 90extern UDC_DESC_STORAGE udi_api_t udi_api_hid_con;
93extern bool udi_hid_con_b_report_valid; 91extern bool udi_hid_con_b_report_valid;
94extern uint8_t udi_hid_con_report_set[UDI_HID_CON_REPORT_SIZE]; 92extern uint8_t udi_hid_con_report_set[UDI_HID_CON_REPORT_SIZE];
95extern volatile bool udi_hid_con_b_report_trans_ongoing; 93extern volatile bool udi_hid_con_b_report_trans_ongoing;
96bool udi_hid_con_send_report(void); 94bool udi_hid_con_send_report(void);
97#endif // CON 95#endif // CONSOLE_ENABLE
98 96
99//******************************************************************************************** 97//********************************************************************************************
100// MOU Mouse 98// MOU Mouse
101//******************************************************************************************** 99//********************************************************************************************
102#ifdef MOU 100#ifdef MOUSE_ENABLE
103extern UDC_DESC_STORAGE udi_api_t udi_api_hid_mou; 101extern UDC_DESC_STORAGE udi_api_t udi_api_hid_mou;
104extern bool udi_hid_mou_b_report_valid; 102extern bool udi_hid_mou_b_report_valid;
105bool udi_hid_mou_send_report(void); 103bool udi_hid_mou_send_report(void);
106#endif // MOU 104#endif // MOUSE_ENABLE
107 105
108//******************************************************************************************** 106//********************************************************************************************
109// RAW Raw 107// RAW Raw
110//******************************************************************************************** 108//********************************************************************************************
111#ifdef RAW 109#ifdef RAW_ENABLE
112extern UDC_DESC_STORAGE udi_api_t udi_api_hid_raw; 110extern UDC_DESC_STORAGE udi_api_t udi_api_hid_raw;
113bool udi_hid_raw_send_report(void); 111bool udi_hid_raw_send_report(void);
114bool udi_hid_raw_receive_report(void); 112bool udi_hid_raw_receive_report(void);
115#endif // RAW 113#endif // RAW_ENABLE
116 114
117//@} 115//@}
118 116
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
index 4e7deaaa3..a3fb46a3d 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
@@ -120,49 +120,45 @@ UDC_DESC_STORAGE udc_desc_t udc_desc = {
120 .conf.iConfiguration = 0, 120 .conf.iConfiguration = 0,
121 .conf.bmAttributes = /* USB_CONFIG_ATTR_MUST_SET | */ USB_DEVICE_ATTR, 121 .conf.bmAttributes = /* USB_CONFIG_ATTR_MUST_SET | */ USB_DEVICE_ATTR,
122 .conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER), 122 .conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER),
123#ifdef KBD
124 .hid_kbd = UDI_HID_KBD_DESC, 123 .hid_kbd = UDI_HID_KBD_DESC,
125#endif 124#ifdef RAW_ENABLE
126#ifdef RAW
127 .hid_raw = UDI_HID_RAW_DESC, 125 .hid_raw = UDI_HID_RAW_DESC,
128#endif 126#endif
129#ifdef MOU 127#ifdef MOUSE_ENABLE
130 .hid_mou = UDI_HID_MOU_DESC, 128 .hid_mou = UDI_HID_MOU_DESC,
131#endif 129#endif
132#ifdef EXK 130#ifdef EXTRAKEY_ENABLE
133 .hid_exk = UDI_HID_EXK_DESC, 131 .hid_exk = UDI_HID_EXK_DESC,
134#endif 132#endif
135#ifdef CON 133#ifdef CONSOLE_ENABLE
136 .hid_con = UDI_HID_CON_DESC, 134 .hid_con = UDI_HID_CON_DESC,
137#endif 135#endif
138#ifdef NKRO 136#ifdef NKRO_ENABLE
139 .hid_nkro = UDI_HID_NKRO_DESC, 137 .hid_nkro = UDI_HID_NKRO_DESC,
140#endif 138#endif
141#ifdef CDC 139#ifdef VIRTSER_ENABLE
142 .cdc_serial = CDC_DESCRIPTOR, 140 .cdc_serial = CDC_DESCRIPTOR,
143#endif 141#endif
144}; 142};
145 143
146UDC_DESC_STORAGE udi_api_t *udi_apis[USB_DEVICE_NB_INTERFACE] = { 144UDC_DESC_STORAGE udi_api_t *udi_apis[USB_DEVICE_NB_INTERFACE] = {
147#ifdef KBD
148 &udi_api_hid_kbd, 145 &udi_api_hid_kbd,
149#endif 146#ifdef RAW_ENABLE
150#ifdef RAW
151 &udi_api_hid_raw, 147 &udi_api_hid_raw,
152#endif 148#endif
153#ifdef MOU 149#ifdef MOUSE_ENABLE
154 &udi_api_hid_mou, 150 &udi_api_hid_mou,
155#endif 151#endif
156#ifdef EXK 152#ifdef EXTRAKEY_ENABLE
157 &udi_api_hid_exk, 153 &udi_api_hid_exk,
158#endif 154#endif
159#ifdef CON 155#ifdef CONSOLE_ENABLE
160 &udi_api_hid_con, 156 &udi_api_hid_con,
161#endif 157#endif
162#ifdef NKRO 158#ifdef NKRO_ENABLE
163 &udi_api_hid_nkro, 159 &udi_api_hid_nkro,
164#endif 160#endif
165#ifdef CDC 161#ifdef VIRTSER_ENABLE
166 &udi_api_cdc_comm, &udi_api_cdc_data, 162 &udi_api_cdc_comm, &udi_api_cdc_data,
167#endif 163#endif
168}; 164};
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_main.h b/tmk_core/protocol/arm_atsam/usb/usb_main.h
index 3191b2fc1..d8461c6c9 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_main.h
+++ b/tmk_core/protocol/arm_atsam/usb/usb_main.h
@@ -63,41 +63,39 @@ void main_remotewakeup_enable(void);
63// Called by UDC when USB Host request to disable remote wakeup 63// Called by UDC when USB Host request to disable remote wakeup
64void main_remotewakeup_disable(void); 64void main_remotewakeup_disable(void);
65 65
66#ifdef KBD
67extern volatile bool main_b_kbd_enable; 66extern volatile bool main_b_kbd_enable;
68bool main_kbd_enable(void); 67bool main_kbd_enable(void);
69void main_kbd_disable(void); 68void main_kbd_disable(void);
70#endif // KBD
71 69
72#ifdef NKRO 70#ifdef NKRO_ENABLE
73extern volatile bool main_b_nkro_enable; 71extern volatile bool main_b_nkro_enable;
74bool main_nkro_enable(void); 72bool main_nkro_enable(void);
75void main_nkro_disable(void); 73void main_nkro_disable(void);
76#endif // NKRO 74#endif // NKRO_ENABLE
77 75
78#ifdef EXK 76#ifdef EXTRAKEY_ENABLE
79extern volatile bool main_b_exk_enable; 77extern volatile bool main_b_exk_enable;
80bool main_exk_enable(void); 78bool main_exk_enable(void);
81void main_exk_disable(void); 79void main_exk_disable(void);
82#endif // EXK 80#endif // EXTRAKEY_ENABLE
83 81
84#ifdef CON 82#ifdef CONSOLE_ENABLE
85extern volatile bool main_b_con_enable; 83extern volatile bool main_b_con_enable;
86bool main_con_enable(void); 84bool main_con_enable(void);
87void main_con_disable(void); 85void main_con_disable(void);
88#endif // CON 86#endif // CONSOLE_ENABLE
89 87
90#ifdef MOU 88#ifdef MOUSE_ENABLE
91extern volatile bool main_b_mou_enable; 89extern volatile bool main_b_mou_enable;
92bool main_mou_enable(void); 90bool main_mou_enable(void);
93void main_mou_disable(void); 91void main_mou_disable(void);
94#endif // MOU 92#endif // MOUSE_ENABLE
95 93
96#ifdef RAW 94#ifdef RAW_ENABLE
97extern volatile bool main_b_raw_enable; 95extern volatile bool main_b_raw_enable;
98bool main_raw_enable(void); 96bool main_raw_enable(void);
99void main_raw_disable(void); 97void main_raw_disable(void);
100void main_raw_receive(uint8_t *buffer, uint8_t len); 98void main_raw_receive(uint8_t *buffer, uint8_t len);
101#endif // RAW 99#endif // RAW_ENABLE
102 100
103#endif // _MAIN_H_ 101#endif // _MAIN_H_
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h b/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h
index aa639a6e5..f35503a3b 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h
+++ b/tmk_core/protocol/arm_atsam/usb/usb_protocol_cdc.h
@@ -48,7 +48,7 @@
48 48
49#include "compiler.h" 49#include "compiler.h"
50 50
51#ifdef CDC 51#ifdef VIRTSER_ENABLE
52 52
53# define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class 53# define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class
54# define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface 54# define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface
diff --git a/users/333fred/333fred_config.h b/users/333fred/config.h
index c099072fc..5974b7892 100644
--- a/users/333fred/333fred_config.h
+++ b/users/333fred/config.h
@@ -2,3 +2,4 @@
2 2
3#define PERMISSIVE_HOLD 3#define PERMISSIVE_HOLD
4#define NO_ACTION_MACRO 4#define NO_ACTION_MACRO
5#undef ONESHOT_TAP_TOGGLE
diff --git a/users/333fred/rules.mk b/users/333fred/rules.mk
index 0e2cc2588..191422e36 100644
--- a/users/333fred/rules.mk
+++ b/users/333fred/rules.mk
@@ -3,3 +3,7 @@ SRC += 333fred.c
3ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) 3ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
4 SRC += rgb.c 4 SRC += rgb.c
5endif 5endif
6
7TAP_DANCE_ENABLE=yes
8NKRO_ENABLE = yes
9PERMISSIVE_HOLD = yes
diff --git a/users/bcat/bcat.c b/users/bcat/bcat.c
index bea64dbaa..2b250c10f 100644
--- a/users/bcat/bcat.c
+++ b/users/bcat/bcat.c
@@ -1,6 +1,6 @@
1#include "quantum.h" 1#include "quantum.h"
2 2
3#if defined(RGBLIGHT_ENABLE) 3#if defined(RGBLIGHT_ENABLE)
4 /* Adjust RGB static hue ranges for shorter gradients than default. */ 4/* Adjust RGB static hue ranges for shorter gradients than default. */
5 const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15}; 5const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15};
6#endif 6#endif
diff --git a/users/bcat/config.h b/users/bcat/config.h
index da74cb0a0..b0d556186 100644
--- a/users/bcat/config.h
+++ b/users/bcat/config.h
@@ -26,65 +26,45 @@
26#define TAPPING_FORCE_HOLD 26#define TAPPING_FORCE_HOLD
27 27
28#if defined(RGB_MATRIX_ENABLE) 28#if defined(RGB_MATRIX_ENABLE)
29 /* Turn off per-key RGB when the host goes to sleep. */ 29/* Turn off per-key RGB when the host goes to sleep. */
30 #define RGB_DISABLE_WHEN_USB_SUSPENDED true 30# define RGB_DISABLE_WHEN_USB_SUSPENDED true
31 31
32 /* Keep per-key RGB increments consistent across keyboards. */ 32/* Keep per-key RGB increments consistent across keyboards. */
33 #undef RGB_MATRIX_HUE_STEP 33# undef RGB_MATRIX_HUE_STEP
34 #undef RGB_MATRIX_SAT_STEP 34# undef RGB_MATRIX_SAT_STEP
35 #undef RGB_MATRIX_VAL_STEP 35# undef RGB_MATRIX_VAL_STEP
36 #undef RGB_MATRIX_SPD_STEP 36# undef RGB_MATRIX_SPD_STEP
37 37
38 #define RGB_MATRIX_HUE_STEP 8 38# define RGB_MATRIX_HUE_STEP 8
39 #define RGB_MATRIX_SAT_STEP 17 39# define RGB_MATRIX_SAT_STEP 17
40 #define RGB_MATRIX_VAL_STEP 17 40# define RGB_MATRIX_VAL_STEP 17
41 #define RGB_MATRIX_SPD_STEP 17 41# define RGB_MATRIX_SPD_STEP 17
42 42
43 /* Turn on additional RGB animations. */ 43/* Turn on additional RGB animations. */
44 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS 44# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
45 #define RGB_MATRIX_KEYPRESSES 45# define RGB_MATRIX_KEYPRESSES
46#endif 46#endif
47 47
48#if defined(RGBLIGHT_ENABLE) 48#if defined(RGBLIGHT_ENABLE)
49 /* Turn off RGB underglow when the host goes to sleep. */ 49/* Turn off RGB underglow when the host goes to sleep. */
50 #define RGBLIGHT_SLEEP 50# define RGBLIGHT_SLEEP
51 51
52 /* Keep RGB underglow level increments consistent across keyboards. */ 52/* Keep RGB underglow level increments consistent across keyboards. */
53 #undef RGBLIGHT_HUE_STEP 53# undef RGBLIGHT_HUE_STEP
54 #undef RGBLIGHT_SAT_STEP 54# undef RGBLIGHT_SAT_STEP
55 #undef RGBLIGHT_VAL_STEP 55# undef RGBLIGHT_VAL_STEP
56 56
57 #define RGBLIGHT_HUE_STEP 8 57# define RGBLIGHT_HUE_STEP 8
58 #define RGBLIGHT_SAT_STEP 17 58# define RGBLIGHT_SAT_STEP 17
59 #define RGBLIGHT_VAL_STEP 17 59# define RGBLIGHT_VAL_STEP 17
60#endif 60#endif
61 61
62#if defined(BACKLIGHT_ENABLE) 62#if defined(BACKLIGHT_ENABLE)
63 /* Enable backlight breathing across the board. */ 63/* Enable backlight breathing across the board. */
64 #define BACKLIGHT_BREATHING 64# define BACKLIGHT_BREATHING
65
66 /* Keep backlight level increments consistent across keyboards. */
67 #undef BACKLIGHT_LEVELS
68
69 #define BACKLIGHT_LEVELS 7
70#endif
71
72#if defined(MOUSEKEY_ENABLE)
73 /* Make mouse operation smoother. */
74 #undef MOUSEKEY_DELAY
75 #undef MOUSEKEY_INTERVAL
76
77 #define MOUSEKEY_DELAY 0
78 #define MOUSEKEY_INTERVAL 16
79 65
80 /* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */ 66/* Keep backlight level increments consistent across keyboards. */
81 #undef MOUSEKEY_MAX_SPEED 67# undef BACKLIGHT_LEVELS
82 #undef MOUSEKEY_TIME_TO_MAX
83 #undef MOUSEKEY_WHEEL_MAX_SPEED
84 #undef MOUSEKEY_WHEEL_TIME_TO_MAX
85 68
86 #define MOUSEKEY_MAX_SPEED 7 69# define BACKLIGHT_LEVELS 7
87 #define MOUSEKEY_TIME_TO_MAX 150
88 #define MOUSEKEY_WHEEL_MAX_SPEED 3
89 #define MOUSEKEY_WHEEL_TIME_TO_MAX 150
90#endif 70#endif
diff --git a/users/bcat/readme.md b/users/bcat/readme.md
new file mode 100644
index 000000000..49fbea1ac
--- /dev/null
+++ b/users/bcat/readme.md
@@ -0,0 +1,13 @@
1# bcat's userspace
2
3This is some code and config shared by all of [my](https://github.com/bcat)
4keyboards. I have a few different keymaps spread throughout the repo; however,
5they are all derived from two "canonical" keymaps for my preferred layouts:
6
7* For typing, my canonical layout is my
8[Crkbd](https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd/keymaps/bcat)
9(split ergo, columnar-staggered) layout.
10
11* For gaming, my canonical layout is my
12[Tsangan](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_tsangan_hhkb/bcat)
13(row-staggered) layout.
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index 585e8092e..f3c6f9ab2 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -6,18 +6,30 @@ BOOTMAGIC_ENABLE = lite
6# Enable media keys on all keyboards. 6# Enable media keys on all keyboards.
7EXTRAKEY_ENABLE = yes 7EXTRAKEY_ENABLE = yes
8 8
9# Disable some unwanted features on all keyboards. 9# Enable link-time optimization to reduce binary size.
10API_SYSEX_ENABLE = no 10LINK_TIME_OPTIMIZATION_ENABLE = yes
11
12# Disable unused build options on all keyboards.
11COMMAND_ENABLE = no 13COMMAND_ENABLE = no
12CONSOLE_ENABLE = no 14CONSOLE_ENABLE = no
13FAUXCLICKY_ENABLE = no
14MIDI_ENABLE = no
15MOUSEKEY_ENABLE = no 15MOUSEKEY_ENABLE = no
16NKRO_ENABLE = no 16NKRO_ENABLE = no
17TERMINAL_ENABLE = no
18
19# Disable unused hardware options on all keyboards.
20FAUXCLICKY_ENABLE = no
21MIDI_ENABLE = no
17SLEEP_LED_ENABLE = no 22SLEEP_LED_ENABLE = no
23
24# Disable unused other options.
25API_SYSEX_ENABLE = no
26AUTO_SHIFT_ENABLE = no
27COMBO_ENABLE = no
28KEYBOARD_LOCK_ENABLE = no
29KEY_LOCK_ENABLE = no
30LEADER_ENABLE = no
31SWAP_HANDS_ENABLE = no
32TAP_DANCE_ENABLE = no
18UCIS_ENABLE = no 33UCIS_ENABLE = no
19UNICODE_ENABLE = no
20UNICODEMAP_ENABLE = no 34UNICODEMAP_ENABLE = no
21 35UNICODE_ENABLE = no
22# Enable link-time optimization to reduce binary size.
23LINK_TIME_OPTIMIZATION_ENABLE = yes
diff --git a/util/linux_install.sh b/util/linux_install.sh
index 9ef064157..d30f78655 100755
--- a/util/linux_install.sh
+++ b/util/linux_install.sh
@@ -32,6 +32,7 @@ if grep ID /etc/os-release | grep -qE "fedora"; then
32 avr-libc \ 32 avr-libc \
33 binutils-avr32-linux-gnu \ 33 binutils-avr32-linux-gnu \
34 clang \ 34 clang \
35 avrdude \
35 dfu-util \ 36 dfu-util \
36 dfu-programmer \ 37 dfu-programmer \
37 diffutils \ 38 diffutils \
@@ -67,6 +68,7 @@ elif grep ID /etc/os-release | grep -qE 'debian|ubuntu'; then
67 gcc-avr \ 68 gcc-avr \
68 git \ 69 git \
69 libnewlib-arm-none-eabi \ 70 libnewlib-arm-none-eabi \
71 avrdude \
70 libusb-dev \ 72 libusb-dev \
71 python3 \ 73 python3 \
72 python3-pip \ 74 python3-pip \
@@ -110,6 +112,7 @@ elif grep ID /etc/os-release | grep -q gentoo; then
110 app-arch/unzip \ 112 app-arch/unzip \
111 app-arch/zip \ 113 app-arch/zip \
112 app-mobilephone/dfu-util \ 114 app-mobilephone/dfu-util \
115 dev-embedded/dfu-programmer \
113 dev-embedded/avrdude \ 116 dev-embedded/avrdude \
114 net-misc/wget \ 117 net-misc/wget \
115 sys-devel/clang \ 118 sys-devel/clang \
@@ -126,6 +129,7 @@ elif grep ID /etc/os-release | grep -q sabayon; then
126 app-arch/unzip \ 129 app-arch/unzip \
127 app-arch/zip \ 130 app-arch/zip \
128 app-mobilephone/dfu-util \ 131 app-mobilephone/dfu-util \
132 dev-embedded/dfu-programmer \
129 dev-embedded/avrdude \ 133 dev-embedded/avrdude \
130 dev-lang/python \ 134 dev-lang/python \
131 net-misc/wget \ 135 net-misc/wget \
@@ -151,7 +155,8 @@ elif grep ID /etc/os-release | grep -qE "opensuse|tumbleweed"; then
151 cross-avr-binutils \ 155 cross-avr-binutils \
152 cross-arm-none-newlib-devel \ 156 cross-arm-none-newlib-devel \
153 cross-arm-binutils cross-arm-none-newlib-devel \ 157 cross-arm-binutils cross-arm-none-newlib-devel \
154 dfu-tool \ 158 avrdude \
159 dfu-util \
155 dfu-programmer \ 160 dfu-programmer \
156 gcc \ 161 gcc \
157 libusb-devel \ 162 libusb-devel \
@@ -216,6 +221,7 @@ elif grep ID /etc/os-release | grep -q void; then
216 avr-gcc \ 221 avr-gcc \
217 avr-libc \ 222 avr-libc \
218 $CROSS_ARM \ 223 $CROSS_ARM \
224 avrdude \
219 dfu-programmer \ 225 dfu-programmer \
220 dfu-util \ 226 dfu-util \
221 gcc \ 227 gcc \