From bfb2f8e0a8f809374fdec102eb02c3bce46a14ee Mon Sep 17 00:00:00 2001
From: brickbots
Date: Sun, 22 Mar 2020 06:06:16 -0700
Subject: [PATCH 01/47] Add Word Per Minute calculation feature (#8054)
* Add Word Per Minute calculation feature
* Fix copyright info
* Remove header from quantum.c, setup overloadable keycode inclusion for WPM, update docs
* Simplify logic for keycode filtering
* Adding link from summary to wpm_feature info
* Update docs/feature_wpm.md
Typo in function prototype example in docs
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Add WPM transport via i2c
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
---
common_features.mk | 5 +++
docs/_summary.md | 1 +
docs/feature_wpm.md | 25 ++++++++++++
quantum/quantum.c | 10 +++++
quantum/quantum.h | 4 ++
quantum/split_common/transport.c | 27 +++++++++++++
quantum/wpm.c | 67 ++++++++++++++++++++++++++++++++
quantum/wpm.h | 30 ++++++++++++++
8 files changed, 169 insertions(+)
create mode 100644 docs/feature_wpm.md
create mode 100644 quantum/wpm.c
create mode 100644 quantum/wpm.h
diff --git a/common_features.mk b/common_features.mk
index 269ca2b137..50b1127dc6 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -322,6 +322,11 @@ ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
+ifeq ($(strip $(WPM_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/wpm.c
+ OPT_DEFS += -DWPM_ENABLE
+endif
+
ifeq ($(strip $(ENCODER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/encoder.c
OPT_DEFS += -DENCODER_ENABLE
diff --git a/docs/_summary.md b/docs/_summary.md
index d6186bbf99..4a6e6996eb 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -80,6 +80,7 @@
* [Terminal](feature_terminal.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
+ * [WPM Calculation](feature_wpm.md)
* Hardware Features
* Displays
diff --git a/docs/feature_wpm.md b/docs/feature_wpm.md
new file mode 100644
index 0000000000..12dd080579
--- /dev/null
+++ b/docs/feature_wpm.md
@@ -0,0 +1,25 @@
+# Word Per Minute (WPM) Calculcation
+
+The WPM feature uses time between keystrokes to compute a rolling average words
+per minute rate and makes this available for various uses.
+
+Enable the WPM system by adding this to your `rules.mk`:
+
+ WPM_ENABLE = yes
+
+For split keyboards using soft serial, the computed WPM
+score will be available on the master AND slave half.
+
+## Public Functions
+
+`uint8_t get_current_wpm(void);`
+This function returns the current WPM as an unsigned integer.
+
+
+## Customized keys for WPM calc
+
+By default, the WPM score only includes letters, numbers, space and some
+punctuation. If you want to change the set of characters considered as part of
+the WPM calculation, you can implement `wpm_keycode_user(uint16_t keycode)`
+and return true for any characters you would like included in the calculation,
+or false to not count that particular keycode.
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 749a08eea9..49767819df 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -192,6 +192,12 @@ bool process_record_quantum(keyrecord_t *record) {
}
#endif
+#ifdef WPM_ENABLE
+ if (record->event.pressed) {
+ update_wpm(keycode);
+ }
+#endif
+
#ifdef TAP_DANCE_ENABLE
preprocess_tap_dance(keycode, record);
#endif
@@ -645,6 +651,10 @@ void matrix_scan_quantum() {
encoder_read();
#endif
+#ifdef WPM_ENABLE
+ decay_wpm();
+#endif
+
#ifdef HAPTIC_ENABLE
haptic_task();
#endif
diff --git a/quantum/quantum.h b/quantum/quantum.h
index d03ba5942a..191407fabb 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -178,6 +178,10 @@ extern layer_state_t layer_state;
# include "via.h"
#endif
+#ifdef WPM_ENABLE
+# include "wpm.h"
+#endif
+
// Function substitutions to ease GPIO manipulation
#if defined(__AVR__)
typedef uint8_t pin_t;
diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c
index ab421adc4a..3234a3ef55 100644
--- a/quantum/split_common/transport.c
+++ b/quantum/split_common/transport.c
@@ -35,6 +35,9 @@ typedef struct _I2C_slave_buffer_t {
# ifdef ENCODER_ENABLE
uint8_t encoder_state[NUMBER_OF_ENCODERS];
# endif
+# ifdef WPM_ENABLE
+ uint8_t current_wpm;
+# endif
} I2C_slave_buffer_t;
static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
@@ -43,6 +46,7 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re
# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync)
# define I2C_KEYMAP_START offsetof(I2C_slave_buffer_t, smatrix)
# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state)
+# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm)
# define TIMEOUT 100
@@ -79,6 +83,14 @@ bool transport_master(matrix_row_t matrix[]) {
encoder_update_raw(i2c_buffer->encoder_state);
# endif
+# ifdef WPM_ENABLE
+ uint8_t current_wpm = get_current_wpm();
+ if(current_wpm != i2c_buffer->current_wpm) {
+ if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) {
+ i2c_buffer->current_wpm = current_wpm;
+ }
+ }
+# endif
return true;
}
@@ -102,6 +114,10 @@ void transport_slave(matrix_row_t matrix[]) {
# ifdef ENCODER_ENABLE
encoder_state_raw(i2c_buffer->encoder_state);
# endif
+
+# ifdef WPM_ENABLE
+ set_current_wpm(i2c_buffer->current_wpm);
+# endif
}
void transport_master_init(void) { i2c_init(); }
@@ -126,6 +142,9 @@ typedef struct _Serial_m2s_buffer_t {
# ifdef BACKLIGHT_ENABLE
uint8_t backlight_level;
# endif
+# ifdef WPM_ENABLE
+ uint8_t current_wpm;
+# endif
} Serial_m2s_buffer_t;
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
@@ -228,6 +247,10 @@ bool transport_master(matrix_row_t matrix[]) {
encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state);
# endif
+# ifdef WPM_ENABLE
+ // Write wpm to slave
+ serial_m2s_buffer.current_wpm = get_current_wpm();
+# endif
return true;
}
@@ -244,6 +267,10 @@ void transport_slave(matrix_row_t matrix[]) {
# ifdef ENCODER_ENABLE
encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state);
# endif
+
+# ifdef WPM_ENABLE
+ set_current_wpm(serial_m2s_buffer.current_wpm);
+# endif
}
#endif
diff --git a/quantum/wpm.c b/quantum/wpm.c
new file mode 100644
index 0000000000..d4c971f313
--- /dev/null
+++ b/quantum/wpm.c
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2020 Richard Sutherland (rich@brickbots.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "wpm.h"
+
+//WPM Stuff
+static uint8_t current_wpm = 0;
+static uint8_t latest_wpm = 0;
+static uint16_t wpm_timer = 0;
+
+//This smoothing is 40 keystrokes
+static const float wpm_smoothing = 0.0487;
+
+void set_current_wpm(uint8_t new_wpm) { current_wpm = new_wpm; }
+
+uint8_t get_current_wpm(void) { return current_wpm; }
+
+bool wpm_keycode(uint16_t keycode) { return wpm_keycode_kb(keycode); }
+
+__attribute__((weak)) bool wpm_keycode_kb(uint16_t keycode) { return wpm_keycode_user(keycode); }
+
+__attribute__((weak)) bool wpm_keycode_user(uint16_t keycode) {
+
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
+ keycode = keycode & 0xFF;
+ } else if (keycode > 0xFF) {
+ keycode = 0;
+ }
+ if((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
+ return true;
+ }
+
+ return false;
+}
+
+
+void update_wpm(uint16_t keycode) {
+ if(wpm_keycode(keycode)) {
+ if(wpm_timer > 0) {
+ latest_wpm = 60000 / timer_elapsed(wpm_timer) / 5;
+ current_wpm = (latest_wpm - current_wpm) * wpm_smoothing + current_wpm;
+ }
+ wpm_timer = timer_read();
+ }
+}
+
+void decay_wpm(void) {
+ if (timer_elapsed(wpm_timer) > 1000) {
+ current_wpm = (0 - current_wpm) * wpm_smoothing +
+ current_wpm;
+ wpm_timer = timer_read();
+ }
+}
diff --git a/quantum/wpm.h b/quantum/wpm.h
new file mode 100644
index 0000000000..fa0b6d1288
--- /dev/null
+++ b/quantum/wpm.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Richard Sutherland (rich@brickbots.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+bool wpm_keycode(uint16_t keycode);
+bool wpm_keycode_kb(uint16_t keycode);
+bool wpm_keycode_user(uint16_t keycode);
+
+void set_current_wpm(uint8_t);
+uint8_t get_current_wpm(void);
+void update_wpm(uint16_t);
+
+void decay_wpm(void);
From e5d34fd084a7bdde0867749470b27c50e8144eb8 Mon Sep 17 00:00:00 2001
From: Jeremy Bernhardt
Date: Sun, 22 Mar 2020 07:17:26 -0600
Subject: [PATCH 02/47] Variable combo (#8120)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* keymap(gergo): colemak
* added flipped numbers
* add STENO_DISABLE_VIRTSER
* add STENO_DISABLE_VIRTSER
* Added GergoPlex and Faunchpad
* push retab
* push retab
* added variable option for combos
* removed accidental commit
* removed accidental commit
* More accidental deletions! (╯°□°)╯︵ ┻━┻
Co-authored-by: Damien Rajon <145502+pyrho@users.noreply.github.com>
---
quantum/process_keycode/process_combo.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c
index f40ca74525..25a6060639 100644
--- a/quantum/process_keycode/process_combo.c
+++ b/quantum/process_keycode/process_combo.c
@@ -17,9 +17,12 @@
#include "print.h"
#include "process_combo.h"
-__attribute__((weak)) combo_t key_combos[COMBO_COUNT] = {
-
-};
+#ifndef COMBO_VARIABLE_LEN
+__attribute__((weak)) combo_t key_combos[COMBO_COUNT] = {};
+#else
+extern combo_t key_combos[];
+extern int COMBO_LEN;
+#endif
__attribute__((weak)) void process_combo_event(uint8_t combo_index, bool pressed) {}
@@ -141,8 +144,11 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) {
if (!is_combo_enabled()) {
return true;
}
-
+#ifndef COMBO_VARIABLE_LEN
for (current_combo_index = 0; current_combo_index < COMBO_COUNT; ++current_combo_index) {
+#else
+ for (current_combo_index = 0; current_combo_index < COMBO_LEN; ++current_combo_index) {
+#endif
combo_t *combo = &key_combos[current_combo_index];
is_combo_key |= process_single_combo(combo, keycode, record);
no_combo_keys_pressed = no_combo_keys_pressed && NO_COMBO_KEYS_ARE_DOWN;
From 5117dff6a26aec4eca04fb9787b4f428884739bc Mon Sep 17 00:00:00 2001
From: Drashna Jaelre
Date: Sun, 22 Mar 2020 06:29:05 -0700
Subject: [PATCH 03/47] Add Post Processing to process_record (#4892)
* Improve process_record system
Code based on @colinta's
* Rename and better handle functions
* Fix incorrect function call to process_record_user
* Add documentation for post_process_record
* Add both get_event_keycode and get_record_keycode functions
And add some comments about these functions
* Update code format
* Cleanup merge artifacts
---
docs/feature_macros.md | 40 +++++++++++++++++++++++++++++++++++++++
docs/understanding_qmk.md | 9 +++++++++
quantum/quantum.c | 20 +++++++++++++++++---
quantum/quantum.h | 2 ++
tmk_core/common/action.c | 8 +++++++-
tmk_core/common/action.h | 2 ++
6 files changed, 77 insertions(+), 4 deletions(-)
diff --git a/docs/feature_macros.md b/docs/feature_macros.md
index 99dd564bf8..1bd2d74e7d 100644
--- a/docs/feature_macros.md
+++ b/docs/feature_macros.md
@@ -88,6 +88,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
```
+### Advanced Macros
+
+In addition to the `process_record_user()` function, is the `post_process_record_user()` function. This runs after `process_record` and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance.
+
+In this example, we modify most normal keypresses so that `F22` is pressed before the keystroke is normally sent, and release it __only after__ it's been released.
+
+```c
+static uint8_t f22_tracker;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_A ... KC_F21: //notice how it skips over F22
+ case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys
+ if (record->event.pressed) {
+ register_code(KC_F22); //this means to send F22 down
+ f22_tracker++;
+ register_code(keycode);
+ return false;
+ }
+ break;
+ }
+ return true;
+}
+
+void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_A ... KC_F21: //notice how it skips over F22
+ case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys
+ if (!record->event.pressed) {
+ f22_tracker--;
+ if (!f22_tracker) {
+ unregister_code(KC_F22); //this means to send F22 up
+ }
+ }
+ break;
+ }
+}
+```
+
+
### TAP, DOWN and UP
You may want to use keys in your macros that you can't write down, such as `Ctrl` or `Home`.
diff --git a/docs/understanding_qmk.md b/docs/understanding_qmk.md
index 81cedfcf53..9396424258 100644
--- a/docs/understanding_qmk.md
+++ b/docs/understanding_qmk.md
@@ -162,6 +162,15 @@ The `process_record()` function itself is deceptively simple, but hidden within
At any step during this chain of events a function (such as `process_record_kb()`) can `return false` to halt all further processing.
+After this is called, `post_process_record()` is called, which can be used to handle additional cleanup that needs to be run after the keycode is normally handled.
+
+* [`void post_process_record(keyrecord_t *record)`]()
+ * [`void post_process_record_quantum(keyrecord_t *record)`]()
+ * [Map this record to a keycode]()
+ * [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
+ * [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
+ * [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
+
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍
@@ -106,7 +106,7 @@ enum my_keycodes {
};
```
-### ドキュメントのプレビュー
+### ドキュメントのプレビュー :id=previewing-the-documentation
開発環境をセットアップした場合は、プルリクエストを開く前に以下のコマンドを `qmk_firmware/` フォルダから実行することで、あなたの変更をプレビューすることができます:
@@ -122,7 +122,7 @@ enum my_keycodes {
ほとんどの初めての QMK 貢献者は、個人のキーマップから始めます。キーマップの標準はかなりカジュアルなものにしようとしています(キーマップは結局のところ作成者の性格を反映しています)が、他の人があなたのキーマップを簡単に見つけて学ぶことができるように、これらのガイドラインに従うようにお願いします。
-* [the template](documentation_templates.md) を使って `readme.md` を書きます。
+* [テンプレート](documentation_templates.md) を使って `readme.md` を書きます。
* 全てのキーマップの PR は squash されるため、コミットがどのように squash されるかを気にする場合は、自分で行う必要があります。
* キーマップの PR に機能をまとめないでください。最初に機能をサブミットし、次にキーマップのための2つ目の PR をサブミットします。
* `Makefile` をキーマップフォルダに含めないでください(もう使われていません)。
@@ -134,7 +134,7 @@ enum my_keycodes {
また以下のガイドラインに従うことをお願いします:
-* [the template](ja/documentation_templates.md) を使って `readme.md` を書きます。
+* [テンプレート](ja/documentation_templates.md) を使って `readme.md` を書きます。
* コミットの数を適切に保ってください。そうでなければあなたの PR を squash します。
* コア機能を新しいキーボードにまとめないでください。最初に機能をサブミットし、次にキーボード用に別の PR をサブミットしてください。
* `.c`/`.h` ファイルにすぐ上の親フォルダに従って名前を付けます。例えば、`/keyboards///.[ch]`
From 2d5b492550c30903958cabb4ea9dec50ea5c64ec Mon Sep 17 00:00:00 2001
From: shela
Date: Sun, 22 Mar 2020 17:43:45 +0900
Subject: [PATCH 14/47] Update Japanese translation of keymap.md
---
docs/ja/keymap.md | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/docs/ja/keymap.md b/docs/ja/keymap.md
index 29eb1adc08..48b2a5cd57 100644
--- a/docs/ja/keymap.md
+++ b/docs/ja/keymap.md
@@ -1,14 +1,14 @@
# キーマップの概要
QMK のキーマップは C のソースファイルの中で定義されます。そのデータ構造は配列の配列です。外側はレイヤーを要素とする配列で、レイヤーはキーを要素とする配列。ほとんどのキーボードは `LAYOUT()` マクロを定義して、この配列の配列を作成しやすくしています。
-## キーマップとレイヤー
+## キーマップとレイヤー :id=keymap-and-layers
QMKでは、**`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`**は、**アクションコード**を保持している **16 bit** データの中でキーマップ情報の複数の**レイヤー**を保持します。最大で**32個のレイヤー**を定義することができます。
普通のキー定義の場合、**アクションコード**の上位8ビットは全て0で、下位8ビットは**キーコード**としてキーによって生成された USB HID usage コードを保持します。
@@ -32,7 +32,8 @@ QMKでは、**`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`**は
TMK の歴史的経緯から、キーマップに保存されたアクションコードは、一部のドキュメントではキーコードと呼ばれる場合があります。
-### キーマップレイヤーステータス
+### キーマップレイヤーステータス :id=keymap-layer-status
+
キーマップレイヤーの状態は、2つの32ビットパラメータによって決定されます。
* **`default_layer_state`** は、常に有効で参照される基本キーマップレイヤー (0-31) を示します (デフォルトレイヤー)。
From e05e67187105d4aeaa020f93acaccc4721027843 Mon Sep 17 00:00:00 2001
From: shela
Date: Sun, 22 Mar 2020 16:54:19 +0900
Subject: [PATCH 15/47] Update Japanese translation of flashing.md
---
docs/ja/flashing.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/ja/flashing.md b/docs/ja/flashing.md
index 1118fb5e2f..62baa907d1 100644
--- a/docs/ja/flashing.md
+++ b/docs/ja/flashing.md
@@ -1,13 +1,13 @@
# 書き込みの手順とブートローダ情報
キーボードが使用するブートローダにはかなり多くの種類があり、ほぼ全てが異なる書き込みの方法を使います。幸いなことに、[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) のようなプロジェクトは、あまり深く考える必要無しに様々なタイプと互換性を持つことを目指していますが、この文章では様々なタイプのブートローダとそれらを書き込むために利用可能な方法について説明します。
-`rules.mk` の `BOOTLOADER` 変数で選択されたブートローダがある場合、QMK は .hex ファイルがデバイスに書き込むのに適切なサイズかどうかを自動的に計算し、合計サイズをバイト単位で(最大値とともに)出力します。この処理を手動で実行するには、`check-size` を付けてコンパイルします。例えば、`make planck/rev4:default:check-size`。
+`rules.mk` の `BOOTLOADER` 変数で選択されたブートローダがある場合、QMK は .hex ファイルがデバイスに書き込むのに適切なサイズかどうかを自動的に計算し、合計サイズをバイト単位で(最大値とともに)出力します。
## DFU
@@ -105,7 +105,7 @@ BOOTLOADER = caterina
make ::avrdude
-#### Caterina コマンド
+### Caterina コマンド
ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
From 3b05f25221ec9274b6bcc9d2a68085e13c8fcca7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ho=C3=A0ng=20V=C6=B0=C6=A1ng?=
Date: Tue, 24 Mar 2020 14:13:45 +0700
Subject: [PATCH 16/47] [Keymap] shadowprogr's personal keymap (#8497)
* Add personal keymap
* Add keymap readme.md
* Update keymap
---
.../rev1/keymaps/shadowprogr/config.h | 36 ++++
.../rev1/keymaps/shadowprogr/keymap.c | 199 ++++++++++++++++++
.../rev1/keymaps/shadowprogr/readme.md | 89 ++++++++
.../rev1/keymaps/shadowprogr/rules.mk | 3 +
4 files changed, 327 insertions(+)
create mode 100644 keyboards/ergodash/rev1/keymaps/shadowprogr/config.h
create mode 100644 keyboards/ergodash/rev1/keymaps/shadowprogr/keymap.c
create mode 100644 keyboards/ergodash/rev1/keymaps/shadowprogr/readme.md
create mode 100644 keyboards/ergodash/rev1/keymaps/shadowprogr/rules.mk
diff --git a/keyboards/ergodash/rev1/keymaps/shadowprogr/config.h b/keyboards/ergodash/rev1/keymaps/shadowprogr/config.h
new file mode 100644
index 0000000000..4dcefdbcc6
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/shadowprogr/config.h
@@ -0,0 +1,36 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 250
\ No newline at end of file
diff --git a/keyboards/ergodash/rev1/keymaps/shadowprogr/keymap.c b/keyboards/ergodash/rev1/keymaps/shadowprogr/keymap.c
new file mode 100644
index 0000000000..9c450bca97
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/shadowprogr/keymap.c
@@ -0,0 +1,199 @@
+#include QMK_KEYBOARD_H
+
+
+enum layers {
+ _WINDOWS,
+ _LINUX,
+ _NUMPAD,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ WINDOWS = SAFE_RANGE,
+ LINUX,
+ NUMPAD,
+ LOWER,
+ RAISE,
+ ADJUST
+};
+
+#define CTL_ENT MT(MOD_RCTL, KC_PENT)
+#define NUMPAD MO(_NUMPAD)
+#define SHELL LCA(KC_T)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Windows Qwerty
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| F5 | RAlt | RGui |Ctl/Ent|
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ */
+ [_WINDOWS] = LAYOUT( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MINS, KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, NUMPAD, KC_SPC, LOWER, KC_ENT, KC_ENT, RAISE, KC_BSPC, KC_F5, KC_RALT, KC_RGUI, CTL_ENT \
+ ),
+
+ /* Linux Qwerty
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| Shell | RAlt | RGui |Ctl/Ent|
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ */
+ [_LINUX] = LAYOUT( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MINS, KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, NUMPAD, KC_SPC, LOWER, KC_ENT, KC_ENT, RAISE, KC_BSPC, SHELL, KC_RALT, KC_RGUI, CTL_ENT \
+ ),
+
+ /* Numpad
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ * |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|NumLock| / | * | - |XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 7 | 8 | 9 | |XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ + +-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 4 | 5 | 6 | |XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 1 | 2 | 3 | |XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ Enter +-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX|Numpad |||||||||XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX||||||||| 0 | . | | Enter |
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ */
+ [_NUMPAD] = LAYOUT( \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_BSPC, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, NUMPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_0, KC_PDOT, KC_PENT, KC_PENT \
+ ),
+
+ /* Lower
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ * | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | ( | { | [ | | | | ] | } | ) | | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | | |PageUp | | | | | | | | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | |VolDown| VolUp | | |PageDwn| | | | | | | | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ */
+ [_LOWER] = LAYOUT( \
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
+ _______, _______, _______, KC_LPRN, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, KC_RPRN, _______, _______, _______, \
+ _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_CAPS, KC_VOLD, KC_VOLU, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, \
+ _______, _______, _______, _______, _______, LOWER, _______, _______, RAISE, _______, _______, _______, _______, _______ \
+ ),
+
+ /* Raise
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ * | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | ( | { | [ | | | | ] | } | ) | | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | | | | End | | | Left | Down | Up | Right | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ */
+ [_RAISE] = LAYOUT( \
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
+ _______, _______, _______, KC_LPRN, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, KC_RPRN, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, KC_END, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, KC_CAPS, \
+ _______, _______, _______, _______, _______, LOWER, _______, _______, RAISE, _______, _______, _______, _______, _______ \
+ ),
+
+ /* Adjust
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ * |XXXXXXX|Windows| Linux |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX| Cycle |On/Off |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|On/Off | Cycle |XXXXXXX|XXXXXXX|XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * | Reset |XXXXXXX|XXXXXXX|Breathe| Inc |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue inc|Sat inc| Inc |XXXXXXX|XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| Dec |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue dec|Sat dec| Dec |XXXXXXX|XXXXXXX|
+ * |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+ * |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX| Lower |XXXXXXX|||||||||XXXXXXX| Raise |XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
+ * .---------------------------------------------------------------------------------------------------------------------------------------.
+ */
+ [_ADJUST] = LAYOUT( \
+ XXXXXXX, WINDOWS, LINUX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, BL_STEP, BL_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, \
+ RESET, XXXXXXX, XXXXXXX, BL_BRTG, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WINDOWS:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_WINDOWS);
+ }
+ return false;
+ break;
+ case LINUX:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_LINUX);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/ergodash/rev1/keymaps/shadowprogr/readme.md b/keyboards/ergodash/rev1/keymaps/shadowprogr/readme.md
new file mode 100644
index 0000000000..7ab665a8d4
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/shadowprogr/readme.md
@@ -0,0 +1,89 @@
+# ShadowProgr's layout for ErgoDash
+
+There are 2 different QWERTY base layers for use with Windows and Linux OSes. Beside those 2 there are also a numpad layer and 3 modifier layers (lower, raise and adjust).
+
+## Layouts
+### Windows
+```
+.---------------------------------------------------------------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| F5 | RAlt | RGui |Ctl/Ent|
+.---------------------------------------------------------------------------------------------------------------------------------------.
+```
+### Linux
+```
+.---------------------------------------------------------------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| Shell | RAlt | RGui |Ctl/Ent|
+.---------------------------------------------------------------------------------------------------------------------------------------.
+```
+### Numpad
+```
+.---------------------------------------------------------------------------------------------------------------------------------------.
+|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|NumLock| / | * | - |XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 7 | 8 | 9 | |XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ + +-------|
+|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 4 | 5 | 6 | |XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 1 | 2 | 3 | |XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ Enter +-------|
+|XXXXXXX|XXXXXXX|XXXXXXX|Numpad |||||||||XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX||||||||| 0 | . | | Enter |
+.---------------------------------------------------------------------------------------------------------------------------------------.
+```
+### Lower
+```
+.---------------------------------------------------------------------------------------------------------------------------------------.
+| F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | ( | { | [ | | | | ] | } | ) | | | |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | | |PageUp | | | | | | | | | |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| |VolDown| VolUp | | |PageDwn| | | | | | | | | |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
+.---------------------------------------------------------------------------------------------------------------------------------------.
+```
+### Raise
+```
+.---------------------------------------------------------------------------------------------------------------------------------------.
+| F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | ( | { | [ | | | | ] | } | ) | | | |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | | | | End | | | Left | Down | Up | Right | | |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | | | | | | | | | | | | |
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
+.---------------------------------------------------------------------------------------------------------------------------------------.
+```
+### Adjust
+```
+.---------------------------------------------------------------------------------------------------------------------------------------.
+|XXXXXXX|Windows| Linux |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+|XXXXXXX|XXXXXXX|XXXXXXX| Cycle |On/Off |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|On/Off | Cycle |XXXXXXX|XXXXXXX|XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+| Reset |XXXXXXX|XXXXXXX|Breathe| Inc |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue inc|Sat inc| Inc |XXXXXXX|XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| Dec |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue dec|Sat dec| Dec |XXXXXXX|XXXXXXX|
+|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
+|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX| Lower |XXXXXXX|||||||||XXXXXXX| Raise |XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
+.---------------------------------------------------------------------------------------------------------------------------------------.
+```
\ No newline at end of file
diff --git a/keyboards/ergodash/rev1/keymaps/shadowprogr/rules.mk b/keyboards/ergodash/rev1/keymaps/shadowprogr/rules.mk
new file mode 100644
index 0000000000..30d8419904
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/shadowprogr/rules.mk
@@ -0,0 +1,3 @@
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+AUDIO_ENABLE = no
\ No newline at end of file
From 3c2d5599b961fc02043002d8f7e0aa8e72b69b12 Mon Sep 17 00:00:00 2001
From: shela
Date: Tue, 24 Mar 2020 17:05:08 +0900
Subject: [PATCH 17/47] [Docs] Update Japanese translation of README.md (#8507)
* Update Japanese translation of README.md
* Apply suggestions from code review
* Apply suggestions from code review
* Update translation
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
---
docs/ja/README.md | 39 +++++++++++++++++++++++++--------------
1 file changed, 25 insertions(+), 14 deletions(-)
diff --git a/docs/ja/README.md b/docs/ja/README.md
index 8959a9dd95..c02a14b487 100644
--- a/docs/ja/README.md
+++ b/docs/ja/README.md
@@ -1,8 +1,8 @@
# Quantum Mechanical Keyboard Firmware
[![現在のバージョン](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
@@ -12,26 +12,37 @@
[![GitHub 貢献者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![GitHub フォーク](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-## QMK ファームウェアとは何か?
+## QMK ファームウェアとは何でしょうか?
-QMK (*Quantum Mechanical Keyboard*)は QMK ファームウェア、QMK ツールボックス、qmk.fm およびそれらのドキュメントを保守するオープンソースコミュニティです。QMK ファームウェアは[tmk\_keyboard](http://github.com/tmk/tmk_keyboard) を元にしたキーボードファームウェアで、Atmel AVR コントローラ、より具体的には [OLKB 製品](http://olkb.com)、[ErgoDox EZ](http://www.ergodox-ez.com) キーボードおよび [Clueboard 製品](http://clueboard.co/) のための幾つかの便利な機能を持ちます。また、ChibiOS を使って ARM チップに移植されています。これを使ってあなたの作った手配線のキーボードあるいはカスタムキーボード PCB で作ったキーボードを動かすことができます。
+QMK (*Quantum Mechanical Keyboard*)は、コンピュータ入力デバイスの開発を中心としたオープンソースコミュニティです。コミュニティには、キーボード、マウス、MIDI デバイスなど、全ての種類の入力デバイスが含まれます。協力者の中心グループは、[QMK ファームウェア](https://github.com/qmk/qmk_firmware)、[QMK Configurator](https://config.qmk.fm)、[QMK ツールボックス](https://github.com/qmk/qmk_toolbox)、[qmk.fm](https://qmk.fm)、そして、このドキュメントを、あなたのようなコミュニティメンバーの助けを借りて保守しています。
-## 入手方法
+## 始めましょう
-QMK のキーマップ、キーボード、機能に貢献をする予定がある場合、最も簡単なのは、[Github を介してリポジトリをフォークし](https://github.com/qmk/qmk_firmware#fork-destination-box)、リポジトリをあなたの開発環境にクローンして変更を加え、それらをプッシュし、[プルリクエスト](https://github.com/qmk/qmk_firmware/pulls)を開くことです。
+QMK は初めてですか?始めるには2つの方法があります:
-それ以外の場合は、`git clone https://github.com/qmk/qmk_firmware` を介して直接クローンすることができます。zip または tar ファイルをダウンロードしないでください。コンパイルするためのサブモジュールをダウンロードするために git リポジトリが必要です。
+* 基本: [QMK Configurator](https://config.qmk.fm)
+ * ドロップダウンからあなたのキーボードを選択し、キーボードをプログラムします。
+ * 見ることができる [紹介ビデオ](https://www.youtube.com/watch?v=-imgglzDMdY) があります。
+ * 読むことができる概要 [ドキュメント](ja/newbs_building_firmware_configurator.md) があります。
+* 発展: [ソースを使用します](ja/newbs.md)
+ * より強力ですが、使うのはより困難です。
-## コンパイル方法
+## 自分用にアレンジします
-コンパイルをする前に、AVR または ARM 開発のための[環境をインストール](ja/getting_started_build_tools.md)する必要があります。それが完了したら、`make` コマンドを使用して、以下の表記でキーボードとキーマップをビルドします。
+QMK には、探求すべき多くの[機能](ja/features.md)と、深く知るためのリファレンスドキュメントがたくさんあります。ほとんどの機能は[キーマップ](ja/keymap.md)を変更し、[キーコード](ja/keycodes.md)を変更することで活用されます。
- make planck/rev4:default
+## 手助けが必要ですか?
-これは、`planck` の `rev4` リビジョンを `default` キーマップでビルドします。全てのキーボードにリビジョン(サブプロジェクトまたはフォルダとも呼ばれます)があるわけではありません。その場合は省略されます:
+[サポートページ](ja/support.md) をチェックして、QMK の使い方について手助けを得る方法を確認してください。
- make preonic:default
+## 貢献する
-## カスタマイズ方法
+QMK コミュニティに貢献する方法はたくさんあります。始める最も簡単な方法は、それを使って友人に QMK という単語を広めることです。
-QMK には、探求すべき多くの[機能](ja/features.md)と、深堀りするための[リファレンス ドキュメント](http://docs.qmk.fm)がたくさんあります。ほとんどの機能は[キーマップ](ja/keymap.md)を変更し、[キーコード](ja/keycodes.md)を変更することで活用されます。
+* フォーラムやチャットルームで人々を支援します:
+ * [/r/olkb](https://www.reddit.com/r/olkb/)
+ * [Discord サーバ](https://discord.gg/Uq7gcHh)
+* 下にある「Edit This Page」をクリックしてドキュメントに貢献します
+* [ドキュメントをあなたの言語に翻訳します](ja/translating.md)
+* [バグを報告します](https://github.com/qmk/qmk_firmware/issues/new/choose)
+* [プルリクエストを開きます](ja/contributing.md)
From 571a589cfa658af8b0ed42687c17954b2f13b266 Mon Sep 17 00:00:00 2001
From: shela
Date: Wed, 25 Mar 2020 03:51:45 +0900
Subject: [PATCH 18/47] [Docs] Update Japanese translation of _summary.md
(#8508)
* Update Japanese translation of _summary.md
* Update translation
* Update translation
---
docs/ja/_summary.md | 270 +++++++++++++++++++++++++-------------------
1 file changed, 151 insertions(+), 119 deletions(-)
diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md
index 6f4c14f4c7..10279471ad 100644
--- a/docs/ja/_summary.md
+++ b/docs/ja/_summary.md
@@ -1,130 +1,162 @@
-* [完全な初心者のガイド](ja/newbs.md)
- * [はじめに](ja/newbs_getting_started.md)
- * [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
- * [ファームウェアのフラッシュ](ja/newbs_flashing.md)
- * [テストとデバッグ](ja/newbs_testing_debugging.md)
- * [QMK における Git 運用作法](ja/newbs_git_best_practices.md)
- * [あなたのフォークの master ブランチ](ja/newbs_git_using_your_master_branch.md)
- * [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
- * [同期のとれていない git ブランチの再同期](ja/newbs_git_resynchronize_a_branch.md)
- * [学習リソース](ja/newbs_learn_more_resources.md)
+* チュートリアル
+ * [入門](ja/newbs.md)
+ * [セットアップ](ja/newbs_getting_started.md)
+ * [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
+ * [ファームウェアのフラッシュ](ja/newbs_flashing.md)
+ * [テストとデバッグ](ja/newbs_testing_debugging.md)
+ * [手助けを得る/サポート](ja/support.md)
+ * [他のリソース](ja/newbs_learn_more_resources.md)
-* [QMKの基本](ja/README.md)
- * [QMK の導入](ja/getting_started_introduction.md)
- * [QMK CLI](ja/cli.md)
- * [QMK CLI 設定](ja/cli_configuration.md)
- * [QMK への貢献](ja/contributing.md)
- * [Github の使い方](ja/getting_started_github.md)
- * [ヘルプ](ja/getting_started_getting_help.md)
+* FAQ
+ * [一般的な FAQ](ja/faq_general.md)
+ * [QMK のビルド/コンパイル](ja/faq_build.md)
+ * [QMK のデバッグ/トラブルシューティング](ja/faq_debug.md)
+ * [キーマップ FAQ](ja/faq_keymap.md)
+ * [用語](ja/reference_glossary.md)
-* [破壊的な変更](ja/breaking_changes.md)
- * [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
- * [2019年8月30日](ja/ChangeLog/20190830.md)
+* Configurator
+ * [概要](ja/newbs_building_firmware_configurator.md)
+ * [ステップ・バイ・ステップ](ja/configurator_step_by_step.md)
+ * [トラブルシューティング](ja/configurator_troubleshooting.md)
+ * QMK API
+ * [概要](ja/api_overview.md)
+ * [API ドキュメント](ja/api_docs.md)
+ * [キーボードサポート](ja/reference_configurator_support.md)
-* [FAQ](ja/faq.md)
- * [一般的な FAQ](ja/faq_general.md)
- * [QMK のビルド/コンパイル](ja/faq_build.md)
- * [QMK のデバッグ/トラブルシューティング](ja/faq_debug.md)
- * [キーマップ](ja/faq_keymap.md)
- * [Zadig を使ったドライバのインストール](ja/driver_installation_zadig.md)
+* CLI
+ * [概要](ja/cli.md)
+ * [設定](ja/cli_configuration.md)
+ * [コマンド](ja/cli_commands.md)
-* 詳細なガイド
- * [ビルドツールのインストール](ja/getting_started_build_tools.md)
- * [Vagrant のガイド](ja/getting_started_vagrant.md)
- * [ビルド/コンパイルの説明](ja/getting_started_make_guide.md)
- * [ファームウェアのフラッシュ](ja/flashing.md)
- * [機能のカスタマイズ](ja/custom_quantum_functions.md)
- * [キーマップの概要](ja/keymap.md)
+* QMK を使う
+ * ガイド
+ * [機能のカスタマイズ](ja/custom_quantum_functions.md)
+ * [Zadig を使ったドライバのインストール](ja/driver_installation_zadig.md)
+ * [キーマップの概要](ja/keymap.md)
+ * [Vagrant のガイド](ja/getting_started_vagrant.md)
+ * 書き込み
+ * [書き込み](ja/flashing.md)
+ * [ATmega32A の書き込み (ps2avrgb)](ja/flashing_bootloadhid.md)
+ * IDE
+ * [Eclipse で QMK を使用](ja/other_eclipse.md)
+ * [VSCode で QMK を使用](ja/other_vscode.md)
+ * Git のベストプラクティス
+ * [入門](ja/newbs_git_best_practices.md)
+ * [フォーク](ja/newbs_git_using_your_master_branch.md)
+ * [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
+ * [ブランチの修正](ja/newbs_git_resynchronize_a_branch.md)
+ * キーボードを作る
+ * [Hand Wiring ガイド](ja/hand_wire.md)
+ * [ISP 書き込みガイド](ja/isp_flashing_guide.md)
-* [ハードウェア](ja/hardware.md)
- * [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
- * [AVR プロセッサ](ja/hardware_avr.md)
- * [ドライバ](ja/hardware_drivers.md)
+ * 単純なキーコード
+ * [完全なリスト](ja/keycodes.md)
+ * [基本的なキーコード](ja/keycodes_basic.md)
+ * [修飾キー](ja/feature_advanced_keycodes.md)
+ * [Quantum キーコード](ja/quantum_keycodes.md)
-* リファレンス
- * [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
- * [設定オプション](ja/config_options.md)
- * [キーコード](ja/keycodes.md)
- * [コーディング規約 - C](ja/coding_conventions_c.md)
- * [コーディング規約 - Python](ja/coding_conventions_python.md)
- * [ドキュメント ベストプラクティス](ja/documentation_best_practices.md)
- * [ドキュメント テンプレート](ja/documentation_templates.md)
- * [用語](ja/reference_glossary.md)
- * [ユニットテスト](ja/unit_testing.md)
- * [便利な関数](ja/ref_functions.md)
- * [Configurator サポート](ja/reference_configurator_support.md)
- * [info.json 形式](ja/reference_info_json.md)
- * [Python CLI 開発](ja/cli_development.md)
+ * 高度なキーコード
+ * [コマンド](ja/feature_command.md)
+ * [動的マクロ](ja/feature_dynamic_macros.md)
+ * [グレイブ エスケープ](ja/feature_grave_esc.md)
+ * [リーダーキー](ja/feature_leader_key.md)
+ * [モッドタップ](ja/mod_tap.md)
+ * [マクロ](ja/feature_macros.md)
+ * [マウスキー](ja/feature_mouse_keys.md)
+ * [Space Cadet Shift](ja/feature_space_cadet.md)
+ * [US ANSI シフトキー](ja/keycodes_us_ansi_shifted.md)
-* [機能](ja/features.md)
- * [基本的なキーコード](ja/keycodes_basic.md)
- * [US ANSI シフトキー](ja/keycodes_us_ansi_shifted.md)
- * [Quantum キーコード](ja/quantum_keycodes.md)
- * [Advanced キーコード](ja/feature_advanced_keycodes.md)
- * [オーディオ](ja/feature_audio.md)
- * [自動シフト](ja/feature_auto_shift.md)
- * [バックライト](ja/feature_backlight.md)
- * [ブルートゥース](ja/feature_bluetooth.md)
- * [ブートマジック](ja/feature_bootmagic.md)
- * [コンボ](ja/feature_combo.md)
- * [コマンド](ja/feature_command.md)
- * [デバウンス API](ja/feature_debounce_type.md)
- * [DIP スイッチ](ja/feature_dip_switch.md)
- * [動的マクロ](ja/feature_dynamic_macros.md)
- * [エンコーダ](ja/feature_encoders.md)
- * [グレイブ エスケープ](ja/feature_grave_esc.md)
- * [触覚フィードバック](ja/feature_haptic_feedback.md)
- * [HD44780 LCD コントローラ](ja/feature_hd44780.md)
- * [キーロック](ja/feature_key_lock.md)
- * [レイアウト](ja/feature_layouts.md)
- * [リーダー キー](ja/feature_leader_key.md)
- * [LED マトリックス](ja/feature_led_matrix.md)
- * [マクロ](ja/feature_macros.md)
- * [マウスキー](ja/feature_mouse_keys.md)
- * [OLED ドライバ](ja/feature_oled_driver.md)
- * [One Shot Keys](ja/one_shot_keys.md)
- * [ポインティング デバイス](ja/feature_pointing_device.md)
- * [PS/2 マウス](ja/feature_ps2_mouse.md)
- * [RGB ライト](ja/feature_rgblight.md)
- * [RGB マトリックス](ja/feature_rgb_matrix.md)
- * [Space Cadet](ja/feature_space_cadet.md)
- * [分割キーボード](ja/feature_split_keyboard.md)
- * [Stenography](ja/feature_stenography.md)
- * [Swap Hands](ja/feature_swap_hands.md)
- * [タップ ダンス](ja/feature_tap_dance.md)
- * [ターミナル](ja/feature_terminal.md)
- * [感熱式プリンタ](ja/feature_thermal_printer.md)
- * [ユニコード](ja/feature_unicode.md)
- * [ユーザスペース](ja/feature_userspace.md)
- * [Velocikey](ja/feature_velocikey.md)
+ * ソフトウェア機能
+ * [自動シフト](ja/feature_auto_shift.md)
+ * [コンボ](ja/feature_combo.md)
+ * [デバウンス API](ja/feature_debounce_type.md)
+ * [キーロック](ja/feature_key_lock.md)
+ * [レイヤー](ja/feature_layers.md)
+ * [One Shot Keys](ja/one_shot_keys.md)
+ * [ポインティング デバイス](ja/feature_pointing_device.md)
+ * [Swap Hands](ja/feature_swap_hands.md)
+ * [タップダンス](ja/feature_tap_dance.md)
+ * [タップホールド設定](ja/tap_hold.md)
+ * [ターミナル](ja/feature_terminal.md)
+ * [ユニコード](ja/feature_unicode.md)
+ * [ユーザスペース](ja/feature_userspace.md)
+ * [WPM 計算](ja/feature_wpm.md)
-* メーカーおよびモッダーのために
- * [Hand Wiring ガイド](ja/hand_wire.md)
- * [ISP 書き込みガイド](ja/isp_flashing_guide.md)
- * [ARM デバッグ ガイド](ja/arm_debugging.md)
- * [ADC ドライバ](ja/adc_driver.md)
- * [I2C ドライバ](ja/i2c_driver.md)
- * [WS2812 ドライバ](ja/ws2812_driver.md)
- * [EEPROM ドライバ](ja/eeprom_driver.md)
- * [GPIO コントロール](ja/internals_gpio_control.md)
- * [カスタムマトリックス](ja/custom_matrix.md)
- * [Proton C 規約](ja/proton_c_conversion.md)
+ * ハードウェア機能
+ * 表示
+ * [HD44780 LCD コントローラ](ja/feature_hd44780.md)
+ * [OLED ドライバ](ja/feature_oled_driver.md)
+ * 電飾
+ * [バックライト](ja/feature_backlight.md)
+ * [LED マトリックス](ja/feature_led_matrix.md)
+ * [RGB ライト](ja/feature_rgblight.md)
+ * [RGB マトリックス](ja/feature_rgb_matrix.md)
+ * [オーディオ](ja/feature_audio.md)
+ * [Bluetooth](ja/feature_bluetooth.md)
+ * [ブートマジック](ja/feature_bootmagic.md)
+ * [カスタムマトリックス](ja/custom_matrix.md)
+ * [DIP スイッチ](ja/feature_dip_switch.md)
+ * [エンコーダ](ja/feature_encoders.md)
+ * [触覚フィードバック](ja/feature_haptic_feedback.md)
+ * [Proton C 規約](ja/proton_c_conversion.md)
+ * [PS/2 マウス](ja/feature_ps2_mouse.md)
+ * [分割キーボード](ja/feature_split_keyboard.md)
+ * [Stenography](ja/feature_stenography.md)
+ * [感熱式プリンタ](ja/feature_thermal_printer.md)
+ * [Velocikey](ja/feature_velocikey.md)
-* より深く知るために
- * [キーボードがどのように動作するか](ja/how_keyboards_work.md)
- * [QMK の理解](ja/understanding_qmk.md)
+* QMK の開発
+ * 破壊的な変更
+ * [概要](ja/breaking_changes.md)
+ * [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
+ * 履歴
+ * [2020年2月29日](ja/ChangeLog/20200229.md)
+ * [2019年8月30日](ja/ChangeLog/20190830.md)
-* 他の話題
- * [Eclipse で QMK を使用](ja/other_eclipse.md)
- * [VSCode で QMK を使用](ja/other_vscode.md)
- * [サポート](ja/getting_started_getting_help.md)
- * [翻訳を追加する方法](ja/translating.md)
+ * C 開発
+ * [ARM デバッグ ガイド](ja/arm_debugging.md)
+ * [AVR プロセッサ](ja/hardware_avr.md)
+ * [コーディング規約](ja/coding_conventions_c.md)
+ * [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
+ * [ドライバ](ja/hardware_drivers.md)
+ * [ADC ドライバ](ja/adc_driver.md)
+ * [I2C ドライバ](ja/i2c_driver.md)
+ * [WS2812 ドライバ](ja/ws2812_driver.md)
+ * [EEPROM ドライバ](ja/eeprom_driver.md)
+ * [GPIO コントロール](ja/internals_gpio_control.md)
+ * [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
-* QMK の内部詳細(作成中)
- * [定義](ja/internals_defines.md)
- * [Input Callback Reg](ja/internals_input_callback_reg.md)
- * [Midi ドライバ](ja/internals_midi_device.md)
- * [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
- * [Midi ユーティリティ](ja/internals_midi_util.md)
- * [Send Functions](ja/internals_send_functions.md)
- * [Sysex Tools](ja/internals_sysex_tools.md)
+ * Python 開発
+ * [コーディング規約](ja/coding_conventions_python.md)
+ * [QMK CLI 開発](ja/cli_development.md)
+
+ * Configurator 開発
+ * QMK API
+ * [開発環境](ja/api_development_environment.md)
+ * [アーキテクチャの概要](ja/api_development_overview.md)
+
+ * QMK Reference
+ * [QMK への貢献](ja/contributing.md)
+ * [QMK ドキュメントの翻訳](ja/translating.md)
+ * [設定オプション](ja/config_options.md)
+ * [Make ドキュメント](ja/getting_started_make_guide.md)
+ * [ドキュメント ベストプラクティス](ja/documentation_best_practices.md)
+ * [ドキュメント テンプレート](ja/documentation_templates.md)
+ * [コミュニティレイアウト](ja/feature_layouts.md)
+ * [ユニットテスト](ja/unit_testing.md)
+ * [便利な関数](ja/ref_functions.md)
+ * [info.json 形式](ja/reference_info_json.md)
+
+ * より深く知るために
+ * [キーボードがどのように動作するか](ja/how_keyboards_work.md)
+ * [マトリックスがどのように動作するか](ja/how_a_matrix_works.md)
+ * [QMK を理解する](ja/understanding_qmk.md)
+
+ * QMK の内部詳細(作成中)
+ * [定義](ja/internals_defines.md)
+ * [Input Callback Reg](ja/internals_input_callback_reg.md)
+ * [Midi デバイス](ja/internals_midi_device.md)
+ * [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
+ * [Midi ユーティリティ](ja/internals_midi_util.md)
+ * [Send Functions](ja/internals_send_functions.md)
+ * [Sysex Tools](ja/internals_sysex_tools.md)
From 963bba1fc3c1109696ec033e88f39caa3f2ed943 Mon Sep 17 00:00:00 2001
From: shela
Date: Wed, 25 Mar 2020 03:59:31 +0900
Subject: [PATCH 19/47] [Docs] Update Japanese translation of
custom_quantum_functions.md (#8520)
---
docs/ja/custom_quantum_functions.md | 41 +++++++++++++++++++++++------
1 file changed, 33 insertions(+), 8 deletions(-)
diff --git a/docs/ja/custom_quantum_functions.md b/docs/ja/custom_quantum_functions.md
index f49df8f65b..7e4fbd897e 100644
--- a/docs/ja/custom_quantum_functions.md
+++ b/docs/ja/custom_quantum_functions.md
@@ -1,8 +1,8 @@
# キーボードの挙動をカスタマイズする方法
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
@@ -39,7 +39,7 @@ enum my_keycodes {
};
```
-## 任意のキーコードの挙動のプログラミング
+## 任意のキーコードの挙動のプログラミング :id=programming-the-behavior-of-any-keycode
既存のキーの挙動を上書きしたい場合、あるいは新しいキーについて挙動を定義する場合、`process_record_kb()` および `process_record_user()` 関数を使うべきです。これらは実際のキーイベントが処理される前のキー処理中に QMK によって呼び出されます。これらの関数が `true` を返す場合、QMK はキーコードを通常通りに処理します。これは、キーを置き換えるのではなく、キーの機能を拡張するのに便利です。これらの関数が `false` を返す場合、QMK は通常のキー処理をスキップし、必要なキーのアップまたはダウンイベントを送信するのかはユーザ次第です。
@@ -316,7 +316,7 @@ void suspend_wakeup_init_user(void) {
* キーボード/リビジョン : `void suspend_power_down_kb(void)` および `void suspend_wakeup_init_user(void)`
* キーマップ: `void suspend_power_down_kb(void)` および `void suspend_wakeup_init_user(void)`
-# レイヤー切り替えコード
+# レイヤー切り替えコード :id=layer-change-code
これはレイヤーが切り替えられるたびにコードを実行します。レイヤー表示あるいはカスタムレイヤー処理に役立ちます。
@@ -491,14 +491,24 @@ void eeconfig_init_user(void) { // EEPROM がリセットされます!
# カスタムタッピング期間
-デフォルトでは、タッピング期間はグローバルに設定されていて、キーでは設定することができません。ほとんどのユーザにとって、これは全然問題ありません。しかし、場合によっては、`LT` キーとは異なるタイムアウトによって、デュアルファンクションキーが大幅に改善されます。なぜなら、一部のキーは他のキーよりも押し続けやすいためです。それぞれにカスタムキーコードを使う代わりに、キーごとに設定可能な `TAPPING_TERM` を使用できます。
+デフォルトでは、タッピング期間と(`IGNORE_MOD_TAP_INTERRUPT` のような)関連オプションはグローバルに設定されていて、キーでは設定することができません。ほとんどのユーザにとって、これは全然問題ありません。しかし、場合によっては、`LT` キーとは異なるタイムアウトによって、デュアルファンクションキーが大幅に改善されます。なぜなら、一部のキーは他のキーよりも押し続けやすいためです。それぞれにカスタムキーコードを使う代わりに、キーごとに設定可能なタイムアウトの挙動を設定できます。
-この機能を有効にするには、最初に `config.h` に `#define TAPPING_TERM_PER_KEY` を追加する必要があります。
+キーごとのタイムアウトの挙動を制御するための2つの設定可能なオプションがあります:
+
+- `TAPPING_TERM_PER_KEY`
+- `IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
+
+必要な機能ごとに、`config.h` に `#define` 行を追加する必要があります。
+
+```
+#define TAPPING_TERM_PER_KEY
+#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+```
## `get_tapping_term` の実装例
-キーコードに基づいて `TAPPING TERM` を変更するには、次のようなものを `keymap.c` ファイルに追加します:
+キーコードに基づいて `TAPPING_TERM` を変更するには、次のようなものを `keymap.c` ファイルに追加します:
```c
uint16_t get_tapping_term(uint16_t keycode) {
@@ -513,6 +523,21 @@ uint16_t get_tapping_term(uint16_t keycode) {
}
```
-### `get_tapping_term` 関数のドキュメント
+## `get_ignore_mod_tap_interrupt` の実装例
+
+キーコードに基づいて `IGNORE_MOD_TAP_INTERRUPT` の値を変更するには、次のようなものを `keymap.c` ファイルに追加します:
+
+```c
+bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
+ switch (keycode) {
+ case SFT_T(KC_SPC):
+ return true;
+ default:
+ return false;
+ }
+}
+```
+
+## `get_tapping_term` / `get_ignore_mod_tap_interrupt` 関数のドキュメント
ここにある他の多くの関数とは異なり、quantum あるいはキーボードレベルの関数を持つ必要はありません (または理由さえありません)。ここではユーザレベルの関数だけが有用なため、そのようにマークする必要はありません。
From 3587e20e7016792846d351925706da04e9442420 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8F=E3=81=BE=E3=81=8A=E5=B7=A5=E6=88=BF?=
<52371962+kumaokobo@users.noreply.github.com>
Date: Wed, 25 Mar 2020 05:02:41 +0900
Subject: [PATCH 20/47] [Keyboard] Add kudox game rev2 (#8529)
* Add Kudox Game rev2.
* Add the keymap of Kudox Game a layer for regulating RGB.
* Modified rgblight_init when RGBLIGHT_ENABLE=no.
* Remove invalid codes.
* Modified *init* function right intention of framework.
---
keyboards/kudox_game/info.json | 4 +-
keyboards/kudox_game/keymaps/default/keymap.c | 33 ++++++-
keyboards/kudox_game/kudox_game.h | 3 +
keyboards/kudox_game/readme.md | 6 +-
keyboards/kudox_game/rev2/config.h | 91 +++++++++++++++++++
keyboards/kudox_game/rev2/rev2.c | 1 +
keyboards/kudox_game/rev2/rev2.h | 20 ++++
keyboards/kudox_game/rev2/rules.mk | 1 +
keyboards/kudox_game/rules.mk | 2 +-
9 files changed, 152 insertions(+), 9 deletions(-)
create mode 100644 keyboards/kudox_game/rev2/config.h
create mode 100644 keyboards/kudox_game/rev2/rev2.c
create mode 100644 keyboards/kudox_game/rev2/rev2.h
create mode 100644 keyboards/kudox_game/rev2/rules.mk
diff --git a/keyboards/kudox_game/info.json b/keyboards/kudox_game/info.json
index 42932601a9..0862dade53 100644
--- a/keyboards/kudox_game/info.json
+++ b/keyboards/kudox_game/info.json
@@ -18,8 +18,8 @@
{"label":"E", "x":3.75, "y":1},
{"label":"R", "x":4.75, "y":1},
{"label":"T", "x":5.75, "y":1},
- {"label":"GUI", "x":0, "y":2},
- {"label":"Alt", "x":1, "y":2},
+ {"label":"Ctrl-C", "x":0, "y":2},
+ {"label":"Ctrl-V", "x":1, "y":2},
{"label":"A", "x":2, "y":2},
{"label":"S", "x":3, "y":2},
{"label":"D", "x":4, "y":2},
diff --git a/keyboards/kudox_game/keymaps/default/keymap.c b/keyboards/kudox_game/keymaps/default/keymap.c
index cf6b1dfc50..d7efeaed01 100644
--- a/keyboards/kudox_game/keymaps/default/keymap.c
+++ b/keyboards/kudox_game/keymaps/default/keymap.c
@@ -6,20 +6,26 @@
// entirely and just use numbers.
#define _QWERTY 0
#define _SYMB 1
+#define _LIGHT 2
// Shortcut to make keymap more readable
#define SYM_L MO(_SYMB)
#define KC_ALEN LALT_T(KC_ENT)
+#define ES_LIGH LT(_LIGHT, KC_ESC)
+
+#define CT_COPY LCTL(KC_C)
+#define CT_PASTE LCTL(KC_V)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
+ ES_LIGH ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
//└────────┼────────┼────────┼────────┼────────┼────────┤
KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
//┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
- KC_LGUI ,KC_ALEN ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
+ CT_COPY ,CT_PASTE,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
//├────────┼────────┘ └────────┴────────┼────────┼────────┐
@@ -35,10 +41,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
_______ ,_______ ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_LBRC ,KC_RBRC ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
- _______ ,KC_BSPC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,
+ _______ ,KC_BSPC ,KC_DEL ,KC_LPRN ,KC_RPRN ,
//├────────┼────────┘ └────────┴────────┼────────┼────────┐
_______ ,_______ ,_______
//└────────┘ └────────┴────────┘
+ ),
+
+ [_LIGHT] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,
+ //└────────┼────────┼────────┼────────┼────────┼────────┤
+ RGB_M_P ,RGB_M_SW,RGB_M_X ,RGB_M_B ,RGB_VAD ,
+ //┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
+ _______ ,_______ ,RGB_M_SN,RGB_M_G ,RGB_M_R ,RGB_M_K ,RGB_M_T ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
+ _______ ,RGB_M_T ,XXXXXXX ,RGB_VAI ,RGB_VAD ,
+ //├────────┼────────┘ └────────┴────────┼────────┼────────┐
+ _______ ,RGB_MOD ,RGB_TOG
+ //└────────┘ └────────┴────────┘
)
};
+
+// Runs just one time when the keyboard initializes.
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox_game/kudox_game.h b/keyboards/kudox_game/kudox_game.h
index 1da820fc27..c76f086c87 100644
--- a/keyboards/kudox_game/kudox_game.h
+++ b/keyboards/kudox_game/kudox_game.h
@@ -19,5 +19,8 @@
#ifdef KEYBOARD_kudox_game_rev1
#include "rev1.h"
#endif
+#ifdef KEYBOARD_kudox_game_rev2
+ #include "rev2.h"
+#endif
#include "quantum.h"
diff --git a/keyboards/kudox_game/readme.md b/keyboards/kudox_game/readme.md
index 5ad867790b..31565a5996 100644
--- a/keyboards/kudox_game/readme.md
+++ b/keyboards/kudox_game/readme.md
@@ -9,18 +9,18 @@
- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
-- Hardware Supported: Kudox Game PCB rev1.0 w/ Pro Micro
+- Hardware Supported: Kudox Game PCB rev1.0 rev2.0 w/ Pro Micro
Make example for this keyboard (after setting up your build environment):
```sh
-make kudox_game/rev1:default
+make kudox_game/rev2:default
```
Example of flashing this keyboard:
```sh
-make kudox_game/rev1:default:avrdude
+make kudox_game/rev2:default:avrdude
```
See 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/kudox_game/rev2/config.h b/keyboards/kudox_game/rev2/config.h
new file mode 100644
index 0000000000..500f93280d
--- /dev/null
+++ b/keyboards/kudox_game/rev2/config.h
@@ -0,0 +1,91 @@
+/*
+Copyright 2019 Kumao Kobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x9696
+#define DEVICE_VER 0x0200
+#define MANUFACTURER Kumao Kobo
+#define PRODUCT The Kudox Game Keyboard
+#define DESCRIPTION Custom keyboard for playing game
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 7 // Number of LEDs
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
diff --git a/keyboards/kudox_game/rev2/rev2.c b/keyboards/kudox_game/rev2/rev2.c
new file mode 100644
index 0000000000..32356f8a4a
--- /dev/null
+++ b/keyboards/kudox_game/rev2/rev2.c
@@ -0,0 +1 @@
+#include "kudox_game.h"
diff --git a/keyboards/kudox_game/rev2/rev2.h b/keyboards/kudox_game/rev2/rev2.h
new file mode 100644
index 0000000000..e630a51658
--- /dev/null
+++ b/keyboards/kudox_game/rev2/rev2.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "../kudox_game.h"
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, \
+ k11, k12, k13, k14, k15, \
+ k20, k21, k22, k23, k24, k25, k26, \
+ k30, k31, k34, k35, k36, \
+ k40, k45, k46 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, KC_NO }, \
+ { KC_NO, k11, k12, k13, k14, k15, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26 }, \
+ { k30, k31, KC_NO, KC_NO, k34, k35, k36 }, \
+ { k40, KC_NO, KC_NO, KC_NO, KC_NO, k45, k46 } \
+}
diff --git a/keyboards/kudox_game/rev2/rules.mk b/keyboards/kudox_game/rev2/rules.mk
new file mode 100644
index 0000000000..1e3cebb145
--- /dev/null
+++ b/keyboards/kudox_game/rev2/rules.mk
@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/kudox_game/rules.mk b/keyboards/kudox_game/rules.mk
index d3fa26ee6a..63280b38d7 100644
--- a/keyboards/kudox_game/rules.mk
+++ b/keyboards/kudox_game/rules.mk
@@ -31,4 +31,4 @@ AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-DEFAULT_FOLDER = kudox_game/rev1
+DEFAULT_FOLDER = kudox_game/rev2
From 5075a1d9e4bdc4af6563f3805f567913e36f7159 Mon Sep 17 00:00:00 2001
From: Drashna Jaelre
Date: Tue, 24 Mar 2020 18:54:38 -0700
Subject: [PATCH 21/47] [Docs] Update RGB Matrix docs with function refs
(#8367)
* [Docs] Update RGB Matrix docs with function refs
* Fix up code samples
* suggestions by noroadsleft
* Fix small typo
Co-authored-by: James Young
---
docs/feature_rgb_matrix.md | 82 +++++++++++++++++++++++++++++++++++---
1 file changed, 76 insertions(+), 6 deletions(-)
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 7bc2193472..2cec55ee77 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -396,18 +396,88 @@ The EEPROM for it is currently shared with the RGBLIGHT system (it's generally a
Where `28` is an unused index from `eeconfig.h`.
-## Suspended state :id=suspended-state
+## Functions :id=functions
-To use the suspend feature, add this to your `.c`:
+### Direct Operation :id=direct-operation
+|Function |Description |
+|--------------------------------------------|-------------|
+|`rgb_matrix_set_color_all(r, g, b)` |Set all of the LEDs to the given RGB value, where `r`/`g`/`b` are between 0 and 255 (not written to EEPROM) |
+|`rgb_matrix_set_color(index, r, g, b)` |Set a single LED to the given RGB value, where `r`/`g`/`b` are between 0 and 255, and `index` is between 0 and `DRIVER_LED_TOTAL` (not written to EEPROM) |
+
+### Disable/Enable Effects :id=disable-enable-effects
+|Function |Description |
+|--------------------------------------------|-------------|
+|`rgb_matrix_toggle()` |Toggle effect range LEDs between on and off |
+|`rgb_matrix_toggle_noeeprom()` |Toggle effect range LEDs between on and off (not written to EEPROM) |
+|`rgb_matrix_enable()` |Turn effect range LEDs on, based on their previous state |
+|`rgb_matrix_enable_noeeprom()` |Turn effect range LEDs on, based on their previous state (not written to EEPROM) |
+|`rgb_matrix_disable()` |Turn effect range LEDs off |
+|`rgb_matrix_disable_noeeprom()` |Turn effect range LEDs off (not written to EEPROM) |
+
+### Change Effect Mode :id=change-effect-mode
+|Function |Description |
+|--------------------------------------------|-------------|
+|`rgb_matrix_mode(mode)` |Set the mode, if RGB animations are enabled |
+|`rgb_matrix_mode_noeeprom(mode)` |Set the mode, if RGB animations are enabled (not written to EEPROM) |
+|`rgb_matrix_step()` |Change the mode to the next RGB animation in the list of enabled RGB animations |
+|`rgb_matrix_step_reverse()` |Change the mode to the previous RGB animation in the list of enabled RGB animations |
+|`rgb_matrix_increase_speed()` |Increases the speed of the animations |
+|`rgb_matrix_decrease_speed()` |Decreases the speed of the animations |
+
+### Change Color :id=change-color
+|Function |Description |
+|--------------------------------------------|-------------|
+|`rgb_matrix_increase_hue()` |Increase the hue for effect range LEDs. This wraps around at maximum hue |
+|`rgb_matrix_decrease_hue()` |Decrease the hue for effect range LEDs. This wraps around at minimum hue |
+|`rgb_matrix_increase_sat()` |Increase the saturation for effect range LEDs. This wraps around at maximum saturation |
+|`rgb_matrix_decrease_sat()` |Decrease the saturation for effect range LEDs. This wraps around at minimum saturation |
+|`rgb_matrix_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value |
+|`rgb_matrix_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value |
+|`rgb_matrix_sethsv(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 |
+|`rgb_matrix_sethsv_noeeprom(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 (not written to EEPROM) |
+
+### Query Current Status :id=query-current-status
+|Function |Description |
+|-----------------------|-----------------|
+|`rgb_matrix_get_mode()` |Get current mode |
+|`rgb_matrix_get_hue()` |Get current hue |
+|`rgb_matrix_get_sat()` |Get current sat |
+|`rgb_matrix_get_val()` |Get current val |
+
+## Callbacks :id=callbacks
+
+### Indicators :id=indicators
+
+If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `rgb_matrix_indicators_kb` or `rgb_matrix_indicators_user` function for that:
+```c
+void rgb_matrix_indicators_kb(void) {
+ rgb_matrix_set_color(index, red, green, blue);
+}
+```
+
+### Suspended state :id=suspended-state
+To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
+
+Additionally add this to your `.c`:
```c
-void suspend_power_down_kb(void)
-{
+void suspend_power_down_kb(void) {
+ rgb_matrix_set_suspend_state(true);
+ suspend_power_down_user();
+}
+
+void suspend_wakeup_init_kb(void) {
+ rgb_matrix_set_suspend_state(false);
+ suspend_wakeup_init_user();
+}
+```
+or add this to your `keymap.c`:
+```c
+void suspend_power_down_user(void) {
rgb_matrix_set_suspend_state(true);
}
-void suspend_wakeup_init_kb(void)
-{
+void suspend_wakeup_init_user(void) {
rgb_matrix_set_suspend_state(false);
}
```
From 6ceaae30f519b63b4b56e0277dd459cccf2d0729 Mon Sep 17 00:00:00 2001
From: Joel Challis
Date: Wed, 25 Mar 2020 03:39:53 +0000
Subject: [PATCH 22/47] Run clang-format manually to fix recently changed files
(#8552)
---
quantum/process_keycode/process_combo.c | 6 ++--
quantum/rgb_matrix.c | 1 -
quantum/split_common/transport.c | 4 +--
quantum/wpm.c | 39 ++++++++++++-------------
quantum/wpm.h | 4 +--
tmk_core/protocol/vusb/vusb.c | 28 +++++++++---------
6 files changed, 39 insertions(+), 43 deletions(-)
diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c
index 25a6060639..c4e299958a 100644
--- a/quantum/process_keycode/process_combo.c
+++ b/quantum/process_keycode/process_combo.c
@@ -20,8 +20,8 @@
#ifndef COMBO_VARIABLE_LEN
__attribute__((weak)) combo_t key_combos[COMBO_COUNT] = {};
#else
-extern combo_t key_combos[];
-extern int COMBO_LEN;
+extern combo_t key_combos[];
+extern int COMBO_LEN;
#endif
__attribute__((weak)) void process_combo_event(uint8_t combo_index, bool pressed) {}
@@ -146,7 +146,7 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) {
}
#ifndef COMBO_VARIABLE_LEN
for (current_combo_index = 0; current_combo_index < COMBO_COUNT; ++current_combo_index) {
-#else
+#else
for (current_combo_index = 0; current_combo_index < COMBO_LEN; ++current_combo_index) {
#endif
combo_t *combo = &key_combos[current_combo_index];
diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c
index 1a9cf82e5f..3fae9d7378 100644
--- a/quantum/rgb_matrix.c
+++ b/quantum/rgb_matrix.c
@@ -111,7 +111,6 @@ const point_t k_rgb_matrix_center = RGB_MATRIX_CENTER;
# define RGB_MATRIX_STARTUP_SPD UINT8_MAX / 2
#endif
-
bool g_suspend_state = false;
rgb_config_t rgb_matrix_config;
diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c
index 3234a3ef55..467ff81a97 100644
--- a/quantum/split_common/transport.c
+++ b/quantum/split_common/transport.c
@@ -85,7 +85,7 @@ bool transport_master(matrix_row_t matrix[]) {
# ifdef WPM_ENABLE
uint8_t current_wpm = get_current_wpm();
- if(current_wpm != i2c_buffer->current_wpm) {
+ if (current_wpm != i2c_buffer->current_wpm) {
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) {
i2c_buffer->current_wpm = current_wpm;
}
@@ -269,7 +269,7 @@ void transport_slave(matrix_row_t matrix[]) {
# endif
# ifdef WPM_ENABLE
- set_current_wpm(serial_m2s_buffer.current_wpm);
+ set_current_wpm(serial_m2s_buffer.current_wpm);
# endif
}
diff --git a/quantum/wpm.c b/quantum/wpm.c
index d4c971f313..da30bd252c 100644
--- a/quantum/wpm.c
+++ b/quantum/wpm.c
@@ -17,12 +17,12 @@
#include "wpm.h"
-//WPM Stuff
-static uint8_t current_wpm = 0;
-static uint8_t latest_wpm = 0;
-static uint16_t wpm_timer = 0;
+// WPM Stuff
+static uint8_t current_wpm = 0;
+static uint8_t latest_wpm = 0;
+static uint16_t wpm_timer = 0;
-//This smoothing is 40 keystrokes
+// This smoothing is 40 keystrokes
static const float wpm_smoothing = 0.0487;
void set_current_wpm(uint8_t new_wpm) { current_wpm = new_wpm; }
@@ -34,34 +34,31 @@ bool wpm_keycode(uint16_t keycode) { return wpm_keycode_kb(keycode); }
__attribute__((weak)) bool wpm_keycode_kb(uint16_t keycode) { return wpm_keycode_user(keycode); }
__attribute__((weak)) bool wpm_keycode_user(uint16_t keycode) {
-
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
keycode = keycode & 0xFF;
} else if (keycode > 0xFF) {
- keycode = 0;
+ keycode = 0;
}
- if((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
- return true;
+ if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
+ return true;
}
return false;
}
-
void update_wpm(uint16_t keycode) {
- if(wpm_keycode(keycode)) {
- if(wpm_timer > 0) {
- latest_wpm = 60000 / timer_elapsed(wpm_timer) / 5;
- current_wpm = (latest_wpm - current_wpm) * wpm_smoothing + current_wpm;
- }
- wpm_timer = timer_read();
+ if (wpm_keycode(keycode)) {
+ if (wpm_timer > 0) {
+ latest_wpm = 60000 / timer_elapsed(wpm_timer) / 5;
+ current_wpm = (latest_wpm - current_wpm) * wpm_smoothing + current_wpm;
+ }
+ wpm_timer = timer_read();
}
}
void decay_wpm(void) {
- if (timer_elapsed(wpm_timer) > 1000) {
- current_wpm = (0 - current_wpm) * wpm_smoothing +
- current_wpm;
- wpm_timer = timer_read();
- }
+ if (timer_elapsed(wpm_timer) > 1000) {
+ current_wpm = (0 - current_wpm) * wpm_smoothing + current_wpm;
+ wpm_timer = timer_read();
+ }
}
diff --git a/quantum/wpm.h b/quantum/wpm.h
index fa0b6d1288..15ab4ffcd1 100644
--- a/quantum/wpm.h
+++ b/quantum/wpm.h
@@ -23,8 +23,8 @@ bool wpm_keycode(uint16_t keycode);
bool wpm_keycode_kb(uint16_t keycode);
bool wpm_keycode_user(uint16_t keycode);
-void set_current_wpm(uint8_t);
+void set_current_wpm(uint8_t);
uint8_t get_current_wpm(void);
-void update_wpm(uint16_t);
+void update_wpm(uint16_t);
void decay_wpm(void);
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index abf723952e..79e8cf71b8 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -354,19 +354,19 @@ const PROGMEM char usbDescriptorConfiguration[] = {
/* USB configuration descriptor */
9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */
USBDESCR_CONFIG, /* descriptor type */
-# if defined (MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
- 59, // 9 + (9 + 9 + 7) + (9 + 9 + 7)
-#else
- 34, // 9 + (9 + 9 + 7)
+# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
+ 59, // 9 + (9 + 9 + 7) + (9 + 9 + 7)
+# else
+ 34, // 9 + (9 + 9 + 7)
# endif
0,
- // 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 + 9, 0,
- /* total length of data returned (including inlined descriptors) */
+// 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 + 9, 0,
+/* total length of data returned (including inlined descriptors) */
# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
2, /* number of interfaces in this configuration */
# else
1,
-#endif
+# endif
1, /* index of this configuration */
0, /* configuration name string index */
# if USB_CFG_IS_SELF_POWERED
@@ -419,13 +419,13 @@ const PROGMEM char usbDescriptorConfiguration[] = {
0, /* PROTOCOL: none */
0, /* string index for interface */
/* HID descriptor */
- 9, /* sizeof(usbDescrHID): length of descriptor in bytes */
- USBDESCR_HID, /* descriptor type: HID */
- 0x01, 0x01, /* BCD representation of HID version */
- 0x00, /* target country code */
- 0x01, /* number of HID Report (or other HID class) Descriptor infos to follow */
- 0x22, /* descriptor type: report */
- sizeof(mouse_extra_hid_report), 0, /* total length of report descriptor */
+ 9, /* sizeof(usbDescrHID): length of descriptor in bytes */
+ USBDESCR_HID, /* descriptor type: HID */
+ 0x01, 0x01, /* BCD representation of HID version */
+ 0x00, /* target country code */
+ 0x01, /* number of HID Report (or other HID class) Descriptor infos to follow */
+ 0x22, /* descriptor type: report */
+ sizeof(mouse_extra_hid_report), 0, /* total length of report descriptor */
# if USB_CFG_HAVE_INTRIN_ENDPOINT3 /* endpoint descriptor for endpoint 3 */
/* Endpoint descriptor */
7, /* sizeof(usbDescrEndpoint) */
From de58b0765954ed8fc9bb800f389808fb7eee6eda Mon Sep 17 00:00:00 2001
From: 2Moons-JP <57225836+2Moons-JP@users.noreply.github.com>
Date: Wed, 25 Mar 2020 18:25:10 +0900
Subject: [PATCH 23/47] Slice Keyboard (#8464)
* Adding Slice Keyboard
* Update keyboards/basekeys/slice/rev1/config.h
Co-Authored-By: Erovia
* Update config.h
* Update keyboards/basekeys/slice/slice.h
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/slice.h
Co-Authored-By: Joel Challis
* Update and rename rev1.c to rev1_rgb.c
* Rename rev1.h to rev1_rgb.h
* Update keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/slice_font.c
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/slice_font.c
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/_font.c
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/_font.c
Co-Authored-By: Joel Challis
* slice_font location
* Update config.h
* Delete slice_font.c
* Update config.h
* Update keyboards/basekeys/slice/rev1/config.h
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/rev1_rgb/rules.mk
Co-Authored-By: Ryan
* Update keyboards/basekeys/slice/rev1_rgb/rules.mk
Co-Authored-By: Ryan
* Update keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
Co-Authored-By: Ryan
* Update keyboards/basekeys/slice/rev1/rules.mk
Co-Authored-By: Ryan
* Update keyboards/basekeys/slice/rev1/rules.mk
Co-Authored-By: Ryan
* Update keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
Co-Authored-By: Ryan
* Update keyboards/basekeys/slice/keymaps/default/keymap.c
Co-Authored-By: Ryan
* Update keymap.c
* oled rotation, config handedness
* OLED and LED functionality removed
* Update keyboards/basekeys/slice/keymaps/default/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/basekeys/slice/keymaps/default/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/basekeys/slice/keymaps/default/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keymap.c
* Update keymap.c
* oled rotation, config handedness
* rev1 added EE_HANDS
* oled function name
* oled function name
* oled function name
* Update keyboards/basekeys/slice/rev1_rgb/rules.mk
Co-Authored-By: Joel Challis
* keymap changes
* Delete _font.c
* keymap changes, VID/PID
* Update keyboards/basekeys/slice/rev1/config.h
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/rev1/config.h
Co-Authored-By: Joel Challis
* Update keyboards/basekeys/slice/rev1_rgb/config.h
Co-Authored-By: Joel Challis
* split_util.h used
Co-authored-by: Erovia
Co-authored-by: Joel Challis
Co-authored-by: Ryan
Co-authored-by: Drashna Jaelre
---
keyboards/basekeys/slice/config.h | 21 ++
.../basekeys/slice/keymaps/default/config.h | 22 ++
.../basekeys/slice/keymaps/default/keymap.c | 131 ++++++++++
.../keymaps/default_split_left_space/config.h | 22 ++
.../keymaps/default_split_left_space/keymap.c | 131 ++++++++++
keyboards/basekeys/slice/readme.md | 17 ++
keyboards/basekeys/slice/rev1/config.h | 52 ++++
keyboards/basekeys/slice/rev1/info.json | 21 ++
.../slice/rev1/keymaps/2moons/config.h | 23 ++
.../slice/rev1/keymaps/2moons/keymap.c | 180 ++++++++++++++
.../slice/rev1/keymaps/2moons/rules.mk | 1 +
.../slice/rev1/keymaps/default_all/config.h | 22 ++
.../slice/rev1/keymaps/default_all/keymap.c | 62 +++++
.../keymaps/default_split_backspace/config.h | 22 ++
.../keymaps/default_split_backspace/keymap.c | 61 +++++
keyboards/basekeys/slice/rev1/rev1.c | 1 +
keyboards/basekeys/slice/rev1/rev1.h | 105 ++++++++
keyboards/basekeys/slice/rev1/rules.mk | 29 +++
keyboards/basekeys/slice/rev1_rgb/config.h | 67 +++++
keyboards/basekeys/slice/rev1_rgb/info.json | 15 ++
.../rev1_rgb/keymaps/2moons_rgb/config.h | 23 ++
.../rev1_rgb/keymaps/2moons_rgb/keymap.c | 221 +++++++++++++++++
.../rev1_rgb/keymaps/2moons_rgb/rules.mk | 2 +
keyboards/basekeys/slice/rev1_rgb/rev1_rgb.c | 1 +
keyboards/basekeys/slice/rev1_rgb/rev1_rgb.h | 65 +++++
keyboards/basekeys/slice/rev1_rgb/rules.mk | 31 +++
keyboards/basekeys/slice/slice.c | 1 +
keyboards/basekeys/slice/slice.h | 10 +
keyboards/basekeys/slice/slice_font.c | 232 ++++++++++++++++++
29 files changed, 1591 insertions(+)
create mode 100644 keyboards/basekeys/slice/config.h
create mode 100644 keyboards/basekeys/slice/keymaps/default/config.h
create mode 100644 keyboards/basekeys/slice/keymaps/default/keymap.c
create mode 100644 keyboards/basekeys/slice/keymaps/default_split_left_space/config.h
create mode 100644 keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
create mode 100644 keyboards/basekeys/slice/readme.md
create mode 100644 keyboards/basekeys/slice/rev1/config.h
create mode 100644 keyboards/basekeys/slice/rev1/info.json
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/2moons/config.h
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/2moons/rules.mk
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/default_all/config.h
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/default_all/keymap.c
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/config.h
create mode 100644 keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/keymap.c
create mode 100644 keyboards/basekeys/slice/rev1/rev1.c
create mode 100644 keyboards/basekeys/slice/rev1/rev1.h
create mode 100644 keyboards/basekeys/slice/rev1/rules.mk
create mode 100644 keyboards/basekeys/slice/rev1_rgb/config.h
create mode 100644 keyboards/basekeys/slice/rev1_rgb/info.json
create mode 100644 keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/config.h
create mode 100644 keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
create mode 100644 keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/rules.mk
create mode 100644 keyboards/basekeys/slice/rev1_rgb/rev1_rgb.c
create mode 100644 keyboards/basekeys/slice/rev1_rgb/rev1_rgb.h
create mode 100644 keyboards/basekeys/slice/rev1_rgb/rules.mk
create mode 100644 keyboards/basekeys/slice/slice.c
create mode 100644 keyboards/basekeys/slice/slice.h
create mode 100644 keyboards/basekeys/slice/slice_font.c
diff --git a/keyboards/basekeys/slice/config.h b/keyboards/basekeys/slice/config.h
new file mode 100644
index 0000000000..cfb6bf4ffc
--- /dev/null
+++ b/keyboards/basekeys/slice/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/basekeys/slice/keymaps/default/config.h b/keyboards/basekeys/slice/keymaps/default/config.h
new file mode 100644
index 0000000000..d3acebb7e3
--- /dev/null
+++ b/keyboards/basekeys/slice/keymaps/default/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 2Moons
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/basekeys/slice/keymaps/default/keymap.c b/keyboards/basekeys/slice/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d6e5cefaee
--- /dev/null
+++ b/keyboards/basekeys/slice/keymaps/default/keymap.c
@@ -0,0 +1,131 @@
+#include QMK_KEYBOARD_H
+#include "split_util.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_FN] = LAYOUT(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, TG(_ADJUST), 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_BSPACE,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ XXXXXXX,TG(_ADJUST),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`-----------------------------------------------------------------| |---------------------------------------------------------------------------'
+ )
+
+};
+
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ switch (keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+#ifdef OLED_DRIVER_ENABLE
+
+const char *read_logo(void) {
+ static char logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ return logo;
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _FN:
+ oled_write_P(PSTR("Function\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+ } else {
+ oled_write(read_logo(), false);
+ }
+}
+#endif
diff --git a/keyboards/basekeys/slice/keymaps/default_split_left_space/config.h b/keyboards/basekeys/slice/keymaps/default_split_left_space/config.h
new file mode 100644
index 0000000000..d3acebb7e3
--- /dev/null
+++ b/keyboards/basekeys/slice/keymaps/default_split_left_space/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 2Moons
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c b/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
new file mode 100644
index 0000000000..40d55bdc63
--- /dev/null
+++ b/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
@@ -0,0 +1,131 @@
+#include QMK_KEYBOARD_H
+#include "split_util.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_left_space(
+ //,------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_TOG, KC_LCTL,KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_FN] = LAYOUT_split_left_space(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, TG(_ADJUST), 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_PSCR, KC_SLCK, KC_PAUSE, KC_UP, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_split_left_space( /* Base */
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ XXXXXXX, TG(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ )
+
+};
+
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ switch (keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+#ifdef OLED_DRIVER_ENABLE
+
+const char *read_logo(void) {
+ static char logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ return logo;
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _FN:
+ oled_write_P(PSTR("Function\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+ } else {
+ oled_write(read_logo(), false);
+ }
+}
+#endif
diff --git a/keyboards/basekeys/slice/readme.md b/keyboards/basekeys/slice/readme.md
new file mode 100644
index 0000000000..65939d64dc
--- /dev/null
+++ b/keyboards/basekeys/slice/readme.md
@@ -0,0 +1,17 @@
+# Slice
+
+![slice](https://i.imgur.com/l2aVaGx.jpg)
+
+This is 71 keys Custom keyboard.
+
+* Keyboard Maintainer: [2Moons](https://github.com/2Moons-JP)
+* Hardware Supported: Slice PCB, Pro Micro
+* Hardware Availability: [Website](https://www.basekeys.com/shop/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make basekeys/slice/rev1:default
+
+See 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).
+
+[Build guide](https://www.basekeys.com/category/build-guides/)
diff --git a/keyboards/basekeys/slice/rev1/config.h b/keyboards/basekeys/slice/rev1/config.h
new file mode 100644
index 0000000000..a02154d82b
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xEC17
+#define DEVICE_VER 0x0002
+#define MANUFACTURER 2Moons
+#define PRODUCT Slice
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 18
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
+/* Select hand configuration */
+//#define EE_HANDS
+#define MASTER_LEFT
+//#define MASTER_RIGHT
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/basekeys/slice/rev1/info.json b/keyboards/basekeys/slice/rev1/info.json
new file mode 100644
index 0000000000..705b8c386d
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/info.json
@@ -0,0 +1,21 @@
+{
+ "keyboard_name": "slice",
+ "url": "https://www.basekeys.com",
+ "maintainer": "2Moons",
+ "width": 17.72,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
+ },
+ "LAYOUT_split_backspace": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"BS", "x":15.32, "y":0}, {"label":"BS", "x":16.32, "y":0}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
+ },
+ "LAYOUT_split_left_space": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4}, {"x":6.75, "y":4}, {"x":7.75, "y":4}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
+ },
+ "LAYOUT_all": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"BS", "x":15.32, "y":0}, {"label":"BS", "x":16.32, "y":0}, {"label":"BS", "x":17.32, "y":0}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3}, {"label":"Shift", "x":15.97, "y":3}, {"label":"Shift", "x":16.97, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4}, {"x":6.75, "y":4}, {"x":7.75, "y":4}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/basekeys/slice/rev1/keymaps/2moons/config.h b/keyboards/basekeys/slice/rev1/keymaps/2moons/config.h
new file mode 100644
index 0000000000..62ee1d1a90
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/2moons/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2020 2Moons
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+//#define MASTER_RIGHT
diff --git a/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c b/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c
new file mode 100644
index 0000000000..5a9b14606d
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c
@@ -0,0 +1,180 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _FN,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |----------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE, KC_BSPACE, KC_BSPACE,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`----------------------------------------------------------------| |--------------------------------------------'
+ ),
+
+ [_FLOCK] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |----------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE, KC_BSPACE, KC_BSPACE,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`----------------------------------------------------------------| |--------------------------------------------'
+ ),
+
+ [_FN] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |----------------------------------------------------------------.
+ KC_ESC, TG(_ADJUST), 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_INS, KC_BSPACE, KC_DEL,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, _______, _______, _______,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`----------------------------------------------------------------| |--------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |----------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE, KC_BSPACE, KC_BSPACE,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`----------------------------------------------------------------| |--------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |----------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE, KC_BSPACE, KC_BSPACE,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`----------------------------------------------------------------| |--------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_all( /* Base */
+ //,------------------------------------------------------------------------| |----------------------------------------------------------------.
+ XXXXXXX, TG(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`----------------------------------------------------------------| |--------------------------------------------'
+ )
+};
+
+
+//A description for expressing the layer position in LED mode.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+#ifdef RGBLIGHT_ENABLE
+ switch (get_highest_layer(state)) {
+ case _FLOCK:
+ rgblight_sethsv_at(HSV_YELLOW, 0);
+ break;
+ case _FN:
+ rgblight_sethsv_at(HSV_GREEN, 0);
+ break;
+ case _LOWER:
+ rgblight_sethsv_at(HSV_BLUE, 0);
+ break;
+ case _RAISE:
+ rgblight_sethsv_at(HSV_RED, 0);
+ break;
+ case _ADJUST:
+ rgblight_sethsv_at(HSV_PURPLE, 0);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_sethsv_at( 0, 0, 0, 0);
+ break;
+ }
+ rgblight_set_effect_range( 1, 4);
+#endif
+return state;
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ switch (keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
diff --git a/keyboards/basekeys/slice/rev1/keymaps/2moons/rules.mk b/keyboards/basekeys/slice/rev1/keymaps/2moons/rules.mk
new file mode 100644
index 0000000000..e5ddcae8d9
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/2moons/rules.mk
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/basekeys/slice/rev1/keymaps/default_all/config.h b/keyboards/basekeys/slice/rev1/keymaps/default_all/config.h
new file mode 100644
index 0000000000..d3acebb7e3
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/default_all/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 2Moons
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/basekeys/slice/rev1/keymaps/default_all/keymap.c b/keyboards/basekeys/slice/rev1/keymaps/default_all/keymap.c
new file mode 100644
index 0000000000..198c449b7f
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/default_all/keymap.c
@@ -0,0 +1,62 @@
+#include QMK_KEYBOARD_H
+
+extern uint8_t is_master;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |--------------------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE, KC_BSPACE, KC_BSPACE,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`------------------------------------------------------------------------| |--------------------------------------------------------------------------------------'
+ ),
+
+ [_FN] = LAYOUT_all(
+ //,------------------------------------------------------------------------| |--------------------------------------------------------------------------------------.
+ KC_ESC,TG(_ADJUST), 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_INS, KC_BSPACE, KC_DEL,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, _______, _______, _______,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______, _______,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------| |--------------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_all( /* Base */
+ //,------------------------------------------------------------------------| |--------------------------------------------------------------------------------------.
+ XXXXXXX,TG(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`------------------------------------------------------------------------| |--------------------------------------------------------------------------------------'
+ )
+};
+
diff --git a/keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/config.h b/keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/config.h
new file mode 100644
index 0000000000..d3acebb7e3
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 2Moons
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/keymap.c b/keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/keymap.c
new file mode 100644
index 0000000000..b1423378ef
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/keymaps/default_split_backspace/keymap.c
@@ -0,0 +1,61 @@
+#include QMK_KEYBOARD_H
+
+extern uint8_t is_master;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_backspace(
+ //,------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE, KC_BSPACE,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_FN] = LAYOUT_split_backspace(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC,TG(_ADJUST), 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_INS, KC_DEL,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_split_backspace( /* Base */
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ XXXXXXX, TG(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/basekeys/slice/rev1/rev1.c b/keyboards/basekeys/slice/rev1/rev1.c
new file mode 100644
index 0000000000..520a869e57
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/rev1.c
@@ -0,0 +1 @@
+#include "rev1.h"
diff --git a/keyboards/basekeys/slice/rev1/rev1.h b/keyboards/basekeys/slice/rev1/rev1.h
new file mode 100644
index 0000000000..ae417d99c7
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/rev1.h
@@ -0,0 +1,105 @@
+#pragma once
+
+#include "slice.h"
+
+#include "quantum.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// When only use Slice Rev1.
+//////////////////////////////////////////////////////////////////////////////
+/*
+ * ,------------------------------------------------ --------------------------------------------------.
+ * | L00 | L01 | L02 | L03 | L04 | L05 | L06 | L07 | | R00 | R01 | R02 | R03 | R04 | R05 | R06R07R08 |
+ * |------------------------------------------------ ------------------------------------------------------+
+ * | L10 | L11 | L12 | L13 | L14 | L15 | L16 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R37 |
+ * |---------------------------------------------- ------------------------------------------------------+
+ * | L20 | L21 | L22 | L23 | L24 | L25 | L26 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 |
+ * |------------------------------------------------- --------------------------------------------------------+
+ * | L30 | L31 | L32 | L33 | L34 | L35 | L36 | | R30 | R31 | R32 | R33 | R34 | R34 | R35 | R36R37R38 |
+ * |------------------------------------------------- --------------------------------------------------------'
+ * | L40 | L41 | L42 | L43 | L44L45L46 | | R40 | R41 | | R42 | R43 | R44 |
+ * |------------------------------------------------- -------------------------------------------------------'
+ */
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R07, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R38,\
+ L40, L41, L42, L43, L45, R40, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, KC_NO, L45, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, KC_NO, R07, KC_NO }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, KC_NO, R38 }, \
+ { R40, R41, R42, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
+
+#define LAYOUT_all( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, R08, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R37, R38,\
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07, R08 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, R38 }, \
+ { R40, R41, R42, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
+
+#define LAYOUT_split_backspace( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R08, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R38,\
+ L40, L41, L42, L43, L45, R40, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, KC_NO, L45, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, KC_NO, R08 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, KC_NO, R38 }, \
+ { R40, R41, R42, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
+
+
+#define LAYOUT_split_left_space( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R07, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R38,\
+ L40, L41, L42, L43, L44, L46, R40, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, L44, KC_NO, L46, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, KC_NO, R07, KC_NO }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, KC_NO, R38 }, \
+ { R40, R41, R42, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
+
+
diff --git a/keyboards/basekeys/slice/rev1/rules.mk b/keyboards/basekeys/slice/rev1/rules.mk
new file mode 100644
index 0000000000..16d1ed71e0
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1/rules.mk
@@ -0,0 +1,29 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# this is split keyboard.
+SPLIT_KEYBOARD = yes
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/basekeys/slice/rev1_rgb/config.h b/keyboards/basekeys/slice/rev1_rgb/config.h
new file mode 100644
index 0000000000..6d423d9b5e
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/config.h
@@ -0,0 +1,67 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xEC15
+#define DEVICE_VER 0x0002
+#define MANUFACTURER 2Moons
+#define PRODUCT Slice RGB
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 18
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
+/* Select hand configuration */
+//#define EE_HANDS
+#define MASTER_LEFT
+//#define MASTER_RIGHT
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* RGB LED */
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 69 // Number of LEDs. backlight x69
+#define RGBLED_SPLIT { 34, 35 }
+#define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_ANIMATIONS
+#endif
+
+#define OLED_FONT_H "keyboards/basekeys/slice/slice_font.c"
diff --git a/keyboards/basekeys/slice/rev1_rgb/info.json b/keyboards/basekeys/slice/rev1_rgb/info.json
new file mode 100644
index 0000000000..47128eb765
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "slice",
+ "url": "https://www.basekeys.com",
+ "maintainer": "2Moons",
+ "width": 17.72,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
+ },
+ "LAYOUT_split_left_space": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4}, {"x":6.75, "y":4}, {"x":7.75, "y":4}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/config.h b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/config.h
new file mode 100644
index 0000000000..62ee1d1a90
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2020 2Moons
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+//#define MASTER_RIGHT
diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
new file mode 100644
index 0000000000..d9e5808a6f
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
@@ -0,0 +1,221 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+#include "split_util.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _FN,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ //|------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_FLOCK] = LAYOUT(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, TG(_ADJUST), 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_PAUSE, KC_UP, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_FN] = LAYOUT(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, TG(_ADJUST), 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_BSPACE,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, KC_UP, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`-------------------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT(
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ KC_ESC, KC_GRAVE, 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_BSPACE,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_FORWARD, 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,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_GRADIENT, 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,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_MODE_XMAS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ RGB_TOG, KC_LCTL, KC_LALT, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(_FN)
+ //`-----------------------------------------------------------------| |---------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
+ XXXXXXX,TG(_ADJUST),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
+ //|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`-----------------------------------------------------------------| |---------------------------------------------------------------------------'
+ )
+};
+
+
+//A description for expressing the layer position in LED mode.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+#ifdef RGBLIGHT_ENABLE
+ switch (get_highest_layer(state)) {
+ case _FLOCK:
+ rgblight_sethsv_at(HSV_YELLOW, 0);
+ break;
+ case _FN:
+ rgblight_sethsv_at(HSV_GREEN, 0);
+ break;
+ case _LOWER:
+ rgblight_sethsv_at(HSV_BLUE, 0);
+ break;
+ case _RAISE:
+ rgblight_sethsv_at(HSV_RED, 0);
+ break;
+ case _ADJUST:
+ rgblight_sethsv_at(HSV_PURPLE, 0);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_sethsv_at( 0, 0, 0, 0);
+ break;
+ }
+ rgblight_set_effect_range( 1, 4);
+#endif
+return state;
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ switch (keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+#ifdef OLED_DRIVER_ENABLE
+
+const char *read_logo(void) {
+ static char logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ return logo;
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _FN:
+ oled_write_P(PSTR("Function\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+ } else {
+ oled_write(read_logo(), false);
+ }
+}
+#endif
diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/rules.mk b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/rules.mk
new file mode 100644
index 0000000000..f4767f01f0
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/rules.mk
@@ -0,0 +1,2 @@
+TAP_DANCE_ENABLE = yes
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/basekeys/slice/rev1_rgb/rev1_rgb.c b/keyboards/basekeys/slice/rev1_rgb/rev1_rgb.c
new file mode 100644
index 0000000000..3cdec58c50
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/rev1_rgb.c
@@ -0,0 +1 @@
+#include "rev1_rgb.h"
diff --git a/keyboards/basekeys/slice/rev1_rgb/rev1_rgb.h b/keyboards/basekeys/slice/rev1_rgb/rev1_rgb.h
new file mode 100644
index 0000000000..809c278db7
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/rev1_rgb.h
@@ -0,0 +1,65 @@
+#pragma once
+
+#include "slice.h"
+
+#include "quantum.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// When only use Slice Rev1.
+//////////////////////////////////////////////////////////////////////////////
+/*
+ * ,------------------------------------------------ --------------------------------------------------.
+ * | L00 | L01 | L02 | L03 | L04 | L05 | L06 | L07 | | R00 | R01 | R02 | R03 | R04 | R05 | R06 |
+ * |------------------------------------------------ ------------------------------------------------------+
+ * | L10 | L11 | L12 | L13 | L14 | L15 | L16 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R37 |
+ * |---------------------------------------------- ------------------------------------------------------+
+ * | L20 | L21 | L22 | L23 | L24 | L25 | L26 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 |
+ * |------------------------------------------------- --------------------------------------------------------+
+ * | L30 | L31 | L32 | L33 | L34 | L35 | L36 | | R30 | R31 | R32 | R33 | R34 | R34 | R35 | R36 | R37 |
+ * |------------------------------------------------- --------------------------------------------------------'
+ * | L40 | L41 | L42 | L43 | L44L45L46 | | R40 | R41 | | R42 | R43 | R44 |
+ * |------------------------------------------------- -------------------------------------------------------'
+ */
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R37,\
+ L40, L41, L42, L43, L45, R40, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, KC_NO, L45, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, KC_NO, KC_NO }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, KC_NO }, \
+ { R40, R41, R42, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
+
+#define LAYOUT_split_left_space( \
+ L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R37,\
+ L40, L41, L42, L43, L44, L46, R40, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, L44, KC_NO, L46, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, KC_NO, KC_NO }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, KC_NO }, \
+ { R40, R41, R42, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
+
+
+
diff --git a/keyboards/basekeys/slice/rev1_rgb/rules.mk b/keyboards/basekeys/slice/rev1_rgb/rules.mk
new file mode 100644
index 0000000000..116492c6ef
--- /dev/null
+++ b/keyboards/basekeys/slice/rev1_rgb/rules.mk
@@ -0,0 +1,31 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# this is split keyboard.
+SPLIT_KEYBOARD = yes
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+OLED_DRIVER_ENABLE = yes # Disable OLED driver.
+UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/basekeys/slice/slice.c b/keyboards/basekeys/slice/slice.c
new file mode 100644
index 0000000000..6aaf721790
--- /dev/null
+++ b/keyboards/basekeys/slice/slice.c
@@ -0,0 +1 @@
+#include "slice.h"
diff --git a/keyboards/basekeys/slice/slice.h b/keyboards/basekeys/slice/slice.h
new file mode 100644
index 0000000000..7d4f7ee513
--- /dev/null
+++ b/keyboards/basekeys/slice/slice.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "quantum.h"
+#ifdef KEYBOARD_basekeys_slice_rev1
+ #include "rev1.h"
+#endif
+
+#ifdef KEYBOARD_basekeys_slice_rev1_rgb
+ #include "rev1_rgb.h"
+#endif
diff --git a/keyboards/basekeys/slice/slice_font.c b/keyboards/basekeys/slice/slice_font.c
new file mode 100644
index 0000000000..f969f85c7a
--- /dev/null
+++ b/keyboards/basekeys/slice/slice_font.c
@@ -0,0 +1,232 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#include "progmem.h"
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFF,
+ 0x3F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
+ 0x1F, 0x1F, 0x0F, 0x03, 0x00, 0x10,
+ 0x3F, 0x3F, 0x3F, 0x3F, 0x3C, 0x00,
+ 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0x1F, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x1F, 0x03, 0x00, 0x00, 0x00, 0x80,
+ 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x00,
+ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+ 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+ 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+ 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+ 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+ 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0,
+ 0xC7, 0xC7, 0xCF, 0x8F, 0x0F, 0x0F,
+ 0x0F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
+ 0x8F, 0x8F, 0xCF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3E, 0x00, 0x00, 0x00, 0xE0,
+ 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x0F,
+ 0x03, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x0F, 0x03, 0x00,
+ 0x00, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF,
+ 0x7F, 0x1F, 0x0F, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x01, 0x00, 0xC0,
+ 0xE0, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
+ 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
+ 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
+ 0xE3, 0x23, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+ 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+ 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+ 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+ 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x01, 0x00, 0x04,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x03, 0x03,
+ 0x00, 0x00, 0x00, 0x04, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x01, 0x00, 0x04,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x03, 0x00, 0x80,
+ 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x0F, 0x01, 0x00, 0x00, 0x00, 0x7C,
+ 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
+ 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
+ 0xF0, 0xF0, 0xF0, 0xF0, 0x30, 0x10,
+ 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF1,
+ 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
+ 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
+ 0xF1, 0xF1, 0xF1, 0x71, 0x11, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
From 016d417253aa2d905de36108c4badbc3732ad391 Mon Sep 17 00:00:00 2001
From: elmo-space
Date: Wed, 25 Mar 2020 22:51:05 +0100
Subject: [PATCH 24/47] add ansi with blocker layout and keymap for KBD67 rev2
PCB (#8538)
* add new layout for 65% with blocker and add matching keymap
the rev2 pcb gets used in the kbd67 which has a blocker between the left arrow key and the right ctrl key. this layout is missing so far even though it's probably the most used one for this board.
* add split backspace layout with blocker
* change keycode for backslash
* update rules.mk and add missing layouts in info.json
* Update keyboards/kbdfans/kbd67/rev2/rules.mk
Co-Authored-By: Joel Challis
Co-authored-by: Joel Challis
---
keyboards/kbdfans/kbd67/rev2/info.json | 149 ++++++++++++++++++
.../kbd67/rev2/keymaps/ansi_blocker/keymap.c | 33 ++++
.../kbd67/rev2/keymaps/ansi_blocker/readme.md | 1 +
.../keymaps/ansi_blocker_splitbs/keymap.c | 32 ++++
.../keymaps/ansi_blocker_splitbs/readme.md | 1 +
keyboards/kbdfans/kbd67/rev2/rev2.h | 30 ++++
keyboards/kbdfans/kbd67/rev2/rules.mk | 2 +-
7 files changed, 247 insertions(+), 1 deletion(-)
create mode 100644 keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/keymap.c
create mode 100644 keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/readme.md
create mode 100644 keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/keymap.c
create mode 100644 keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/readme.md
diff --git a/keyboards/kbdfans/kbd67/rev2/info.json b/keyboards/kbdfans/kbd67/rev2/info.json
index 8cf2d39151..f9d9922eed 100644
--- a/keyboards/kbdfans/kbd67/rev2/info.json
+++ b/keyboards/kbdfans/kbd67/rev2/info.json
@@ -161,6 +161,155 @@
{"x":15, "y":4}
]
},
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}]
+ },
+ "LAYOUT_65_ansi_blocker_splitbs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}]
+ },
"LAYOUT_65_iso": {
"layout": [
{"x":0, "y":0},
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/keymap.c
new file mode 100644
index 0000000000..73fd4583a1
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 'elmo-space'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_65_ansi_blocker(
+ 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, KC_HOME, \
+ 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_PGUP, \
+ 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_PGDN, \
+ 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_END, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_65_ansi_blocker(
+ 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_INS, \
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END),
+
+};
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/readme.md b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/readme.md
new file mode 100644
index 0000000000..de149da1b6
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker/readme.md
@@ -0,0 +1 @@
+# Ansi with blocker keymap for kbd67
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/keymap.c
new file mode 100644
index 0000000000..38a90560dc
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2020 'elmo-space'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_65_ansi_blocker_splitbs(
+ 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_GRV, KC_BSLS, KC_DEL, \
+ 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_BSPC, MO(1), \
+ 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_PGUP, \
+ 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, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_65_ansi_blocker_splitbs(
+ 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_TRNS, KC_DEL, KC_INS, \
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END),
+};
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/readme.md b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/readme.md
new file mode 100644
index 0000000000..de149da1b6
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/ansi_blocker_splitbs/readme.md
@@ -0,0 +1 @@
+# Ansi with blocker keymap for kbd67
diff --git a/keyboards/kbdfans/kbd67/rev2/rev2.h b/keyboards/kbdfans/kbd67/rev2/rev2.h
index 4f68e810aa..d4944109ea 100644
--- a/keyboards/kbdfans/kbd67/rev2/rev2.h
+++ b/keyboards/kbdfans/kbd67/rev2/rev2.h
@@ -55,6 +55,36 @@
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \
}
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \
+ { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
+ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker_splitbs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
+ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
+}
+
#define LAYOUT_65_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
diff --git a/keyboards/kbdfans/kbd67/rev2/rules.mk b/keyboards/kbdfans/kbd67/rev2/rules.mk
index d97db91e30..8ff62ba428 100644
--- a/keyboards/kbdfans/kbd67/rev2/rules.mk
+++ b/keyboards/kbdfans/kbd67/rev2/rules.mk
@@ -32,4 +32,4 @@ AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
-LAYOUTS = 65_ansi 65_iso
+LAYOUTS = 65_ansi 65_iso 65_ansi_blocker
From 9fb988b6e8102e9b0bd16d3342392f49af0c559e Mon Sep 17 00:00:00 2001
From: tominabox1
Date: Wed, 25 Mar 2020 20:53:40 -0500
Subject: [PATCH 25/47] Add _33 Keyboard folder (#8543)
* Add _33 Keyboard folder
* Correcting naming convetions and other code convetions
* Removed extra spaces
* fixed layout callbacks to new lower-case versions
* Remove tapping_term, fix RGB pin define. Added blank readme-to be updated.
* initial addition of the readme.md
* Update readme.md for hardware/pcb availability info
* Adding keymap readme
* Info.json added
* Incorporate Drashna's recommended changes
---
keyboards/underscore33/config.h | 42 ++++++++++++++++++
keyboards/underscore33/info.json | 16 +++++++
.../underscore33/keymaps/default/keymap.c | 44 +++++++++++++++++++
.../underscore33/keymaps/default/readme.md | 5 +++
keyboards/underscore33/readme.md | 15 +++++++
keyboards/underscore33/rules.mk | 25 +++++++++++
keyboards/underscore33/underscore33.c | 1 +
keyboards/underscore33/underscore33.h | 31 +++++++++++++
8 files changed, 179 insertions(+)
create mode 100644 keyboards/underscore33/config.h
create mode 100644 keyboards/underscore33/info.json
create mode 100644 keyboards/underscore33/keymaps/default/keymap.c
create mode 100644 keyboards/underscore33/keymaps/default/readme.md
create mode 100644 keyboards/underscore33/readme.md
create mode 100644 keyboards/underscore33/rules.mk
create mode 100644 keyboards/underscore33/underscore33.c
create mode 100644 keyboards/underscore33/underscore33.h
diff --git a/keyboards/underscore33/config.h b/keyboards/underscore33/config.h
new file mode 100644
index 0000000000..5733f30d00
--- /dev/null
+++ b/keyboards/underscore33/config.h
@@ -0,0 +1,42 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6A50
+#define DEVICE_VER 0x0001
+#define MANUFACTURER tominabox1
+#define PRODUCT underscore33
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F5, F6, C6, D0 }
+#define MATRIX_COL_PINS { B4, B5, D5, F7, B1, F4, B3, D7, B0, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* #define RGB_DI_PIN B6
+ #define RGBLED_NUM 1 */
diff --git a/keyboards/underscore33/info.json b/keyboards/underscore33/info.json
new file mode 100644
index 0000000000..4e97a63802
--- /dev/null
+++ b/keyboards/underscore33/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "underscore33",
+ "url": "",
+ "maintainer": "tominabox1",
+ "width": 10,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_33_big_space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":6.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
+ },
+
+ "LAYOUT_33_split_space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":2.25}, {"label":"", "x":4.15, "y":3, "w":1.75}, {"label":"", "x":5.9, "y":3, "w":2.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
+ }
+ }
+}
diff --git a/keyboards/underscore33/keymaps/default/keymap.c b/keyboards/underscore33/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8fab8623a2
--- /dev/null
+++ b/keyboards/underscore33/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+enum layers{
+ _BASE,
+ _NUM_SYM,
+ _NAV
+};
+
+enum custom_keycodes{
+ RGBRST = SAFE_RANGE,
+};
+
+#define KC_NUM_SPC LT(_NUM_SYM, KC_SPC)
+#define KC_GA LGUI_T(KC_A)
+#define KC_AS LALT_T(KC_S)
+#define KC_CD LCTL_T(KC_D)
+#define KC_SF LSFT_T(KC_F)
+#define KC_SJ RSFT_T(KC_J)
+#define KC_CK RCTL_T(KC_K)
+#define KC_AL RALT_T(KC_L)
+#define KC_GSCLN RGUI_T(KC_SCLN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_33_split_space(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_GA, KC_AS, KC_CD, KC_SF, KC_G, KC_H, KC_SJ, KC_CK, KC_AL, KC_GSCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LALT, KC_NUM_SPC, MO(_NAV), KC_RGUI
+ ),
+
+ [_NUM_SYM] = LAYOUT_33_split_space(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS,
+ KC_BSLS, KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_RPRN, KC_RBRC, KC_RCBR, KC_DOT, KC_GRV,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_NAV] = LAYOUT_33_split_space(
+ RESET, RGBRST, AG_NORM, AG_SWAP, DEBUG, KC_GRV, KC_PGDN, KC_UP, KC_PGUP, KC_SCLN,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/underscore33/keymaps/default/readme.md b/keyboards/underscore33/keymaps/default/readme.md
new file mode 100644
index 0000000000..7ef72915ed
--- /dev/null
+++ b/keyboards/underscore33/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+![_33 layout Image](https://i.imgur.com/1vxmk0F.png)
+
+# Default _33 Layout
+
+This is the recommended default layout. It is not a fully functional layout without backspace, tab, esc and so on. It is recommended to use combos to access the additional modifiers when using the large spacebar layout option, however combos are not enabled in the default firmware.
diff --git a/keyboards/underscore33/readme.md b/keyboards/underscore33/readme.md
new file mode 100644
index 0000000000..153329d84e
--- /dev/null
+++ b/keyboards/underscore33/readme.md
@@ -0,0 +1,15 @@
+# underscore33 (stylized as "_33")
+
+![_33](https://i.imgur.com/0Wuf8aT.png)
+
+A little bitty 30% (10x4) ortholinear keyboard designed by tominabox1. The board supports an RGB LED strip with DI on port B6. There is an error on the initial 25 PCBs that incorrectly indicates PF0 for the RGB. The appropriate port is commented out in config.h for proper LED support.
+
+* Keyboard Maintainer: [TJ Campie](https://github.com/tominabox1)
+* Hardware Supported: _33 PCB and Plate limited buy (Open source available ca. Apirl 2020)
+* Hardware Availability: [3D printed open sourced](https://github.com/tominabox1/_33-Keyboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make underscore33:default
+
+See 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/underscore33/rules.mk b/keyboards/underscore33/rules.mk
new file mode 100644
index 0000000000..a5c12fdadb
--- /dev/null
+++ b/keyboards/underscore33/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+TAP_DANCE_ENABLE = no
diff --git a/keyboards/underscore33/underscore33.c b/keyboards/underscore33/underscore33.c
new file mode 100644
index 0000000000..9d690be9ab
--- /dev/null
+++ b/keyboards/underscore33/underscore33.c
@@ -0,0 +1 @@
+#include "underscore33.h"
diff --git a/keyboards/underscore33/underscore33.h b/keyboards/underscore33/underscore33.h
new file mode 100644
index 0000000000..5c774cfa85
--- /dev/null
+++ b/keyboards/underscore33/underscore33.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_33_big_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ K31, K34, K38 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { XXX, K31, XXX, XXX, K34, XXX, XXX, XXX, K38, XXX } \
+}
+
+#define LAYOUT_33_split_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ K31, K32, K34, K36, K38 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { XXX, K31, K32, XXX, K34, XXX, K36, XXX, K38, XXX } \
+}
From d68c4d810634f5ffcb29c38d57b16bc72faf45dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20A=2E=20Volpato?=
Date: Wed, 25 Mar 2020 23:22:08 -0300
Subject: [PATCH 26/47] Add KeebsPCB pre-Alpha support (#8485)
* Add initial KeebsPCB support
* Update readme
* Update readme
* Correct readme typo
* Update keyboards/acheron/keebspcb/config.h
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Apply @noroadsleft suggestions from code review
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/acheron/keebspcb/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/acheron/keebspcb/keymaps/default/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Gondolindrim
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
---
keyboards/acheron/keebspcb/chconf.h | 714 ++++++++++++++++++
keyboards/acheron/keebspcb/config.h | 71 ++
keyboards/acheron/keebspcb/halconf.h | 525 +++++++++++++
keyboards/acheron/keebspcb/info.json | 12 +
keyboards/acheron/keebspcb/keebspcb.c | 1 +
keyboards/acheron/keebspcb/keebspcb.h | 19 +
.../acheron/keebspcb/keymaps/default/keymap.c | 32 +
keyboards/acheron/keebspcb/mcuconf.h | 176 +++++
keyboards/acheron/keebspcb/readme.md | 33 +
keyboards/acheron/keebspcb/rules.mk | 27 +
10 files changed, 1610 insertions(+)
create mode 100644 keyboards/acheron/keebspcb/chconf.h
create mode 100644 keyboards/acheron/keebspcb/config.h
create mode 100644 keyboards/acheron/keebspcb/halconf.h
create mode 100644 keyboards/acheron/keebspcb/info.json
create mode 100644 keyboards/acheron/keebspcb/keebspcb.c
create mode 100644 keyboards/acheron/keebspcb/keebspcb.h
create mode 100755 keyboards/acheron/keebspcb/keymaps/default/keymap.c
create mode 100644 keyboards/acheron/keebspcb/mcuconf.h
create mode 100644 keyboards/acheron/keebspcb/readme.md
create mode 100644 keyboards/acheron/keebspcb/rules.mk
diff --git a/keyboards/acheron/keebspcb/chconf.h b/keyboards/acheron/keebspcb/chconf.h
new file mode 100644
index 0000000000..4640ff5332
--- /dev/null
+++ b/keyboards/acheron/keebspcb/chconf.h
@@ -0,0 +1,714 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/**
+ * @file rt/templates/chconf.h
+ * @brief Configuration file template.
+ * @details A copy of this file must be placed in each project directory, it
+ * contains the application specific kernel settings.
+ *
+ * @addtogroup config
+ * @details Kernel related settings and hooks.
+ * @{
+ */
+
+#ifndef CHCONF_H
+#define CHCONF_H
+
+#define _CHIBIOS_RT_CONF_
+#define _CHIBIOS_RT_CONF_VER_6_0_
+
+/*===========================================================================*/
+/**
+ * @name System timers settings
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief System time counter resolution.
+ * @note Allowed values are 16 or 32 bits.
+ */
+#if !defined(CH_CFG_ST_RESOLUTION)
+#define CH_CFG_ST_RESOLUTION 32
+#endif
+
+/**
+ * @brief System tick frequency.
+ * @details Frequency of the system timer that drives the system ticks. This
+ * setting also defines the system tick time unit.
+ */
+#if !defined(CH_CFG_ST_FREQUENCY)
+#define CH_CFG_ST_FREQUENCY 10000
+#endif
+
+/**
+ * @brief Time intervals data size.
+ * @note Allowed values are 16, 32 or 64 bits.
+ */
+#if !defined(CH_CFG_INTERVALS_SIZE)
+#define CH_CFG_INTERVALS_SIZE 32
+#endif
+
+/**
+ * @brief Time types data size.
+ * @note Allowed values are 16 or 32 bits.
+ */
+#if !defined(CH_CFG_TIME_TYPES_SIZE)
+#define CH_CFG_TIME_TYPES_SIZE 32
+#endif
+
+/**
+ * @brief Time delta constant for the tick-less mode.
+ * @note If this value is zero then the system uses the classic
+ * periodic tick. This value represents the minimum number
+ * of ticks that is safe to specify in a timeout directive.
+ * The value one is not valid, timeouts are rounded up to
+ * this value.
+ */
+#if !defined(CH_CFG_ST_TIMEDELTA)
+#define CH_CFG_ST_TIMEDELTA 2
+#endif
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Kernel parameters and options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief Round robin interval.
+ * @details This constant is the number of system ticks allowed for the
+ * threads before preemption occurs. Setting this value to zero
+ * disables the preemption for threads with equal priority and the
+ * round robin becomes cooperative. Note that higher priority
+ * threads can still preempt, the kernel is always preemptive.
+ * @note Disabling the round robin preemption makes the kernel more compact
+ * and generally faster.
+ * @note The round robin preemption is not supported in tickless mode and
+ * must be set to zero in that case.
+ */
+#if !defined(CH_CFG_TIME_QUANTUM)
+#define CH_CFG_TIME_QUANTUM 0
+#endif
+
+/**
+ * @brief Managed RAM size.
+ * @details Size of the RAM area to be managed by the OS. If set to zero
+ * then the whole available RAM is used. The core memory is made
+ * available to the heap allocator and/or can be used directly through
+ * the simplified core memory allocator.
+ *
+ * @note In order to let the OS manage the whole RAM the linker script must
+ * provide the @p __heap_base__ and @p __heap_end__ symbols.
+ * @note Requires @p CH_CFG_USE_MEMCORE.
+ */
+#if !defined(CH_CFG_MEMCORE_SIZE)
+#define CH_CFG_MEMCORE_SIZE 0
+#endif
+
+/**
+ * @brief Idle thread automatic spawn suppression.
+ * @details When this option is activated the function @p chSysInit()
+ * does not spawn the idle thread. The application @p main()
+ * function becomes the idle thread and must implement an
+ * infinite loop.
+ */
+#if !defined(CH_CFG_NO_IDLE_THREAD)
+#define CH_CFG_NO_IDLE_THREAD FALSE
+#endif
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Performance options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief OS optimization.
+ * @details If enabled then time efficient rather than space efficient code
+ * is used when two possible implementations exist.
+ *
+ * @note This is not related to the compiler optimization options.
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_OPTIMIZE_SPEED)
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+#endif
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Subsystem options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief Time Measurement APIs.
+ * @details If enabled then the time measurement APIs are included in
+ * the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_TM)
+#define CH_CFG_USE_TM FALSE
+#endif
+
+/**
+ * @brief Threads registry APIs.
+ * @details If enabled then the registry APIs are included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_REGISTRY)
+#define CH_CFG_USE_REGISTRY TRUE
+#endif
+
+/**
+ * @brief Threads synchronization APIs.
+ * @details If enabled then the @p chThdWait() function is included in
+ * the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_WAITEXIT)
+#define CH_CFG_USE_WAITEXIT TRUE
+#endif
+
+/**
+ * @brief Semaphores APIs.
+ * @details If enabled then the Semaphores APIs are included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_SEMAPHORES)
+#define CH_CFG_USE_SEMAPHORES TRUE
+#endif
+
+/**
+ * @brief Semaphores queuing mode.
+ * @details If enabled then the threads are enqueued on semaphores by
+ * priority rather than in FIFO order.
+ *
+ * @note The default is @p FALSE. Enable this if you have special
+ * requirements.
+ * @note Requires @p CH_CFG_USE_SEMAPHORES.
+ */
+#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY)
+#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
+#endif
+
+/**
+ * @brief Mutexes APIs.
+ * @details If enabled then the mutexes APIs are included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_MUTEXES)
+#define CH_CFG_USE_MUTEXES TRUE
+#endif
+
+/**
+ * @brief Enables recursive behavior on mutexes.
+ * @note Recursive mutexes are heavier and have an increased
+ * memory footprint.
+ *
+ * @note The default is @p FALSE.
+ * @note Requires @p CH_CFG_USE_MUTEXES.
+ */
+#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE)
+#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
+#endif
+
+/**
+ * @brief Conditional Variables APIs.
+ * @details If enabled then the conditional variables APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ * @note Requires @p CH_CFG_USE_MUTEXES.
+ */
+#if !defined(CH_CFG_USE_CONDVARS)
+#define CH_CFG_USE_CONDVARS TRUE
+#endif
+
+/**
+ * @brief Conditional Variables APIs with timeout.
+ * @details If enabled then the conditional variables APIs with timeout
+ * specification are included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ * @note Requires @p CH_CFG_USE_CONDVARS.
+ */
+#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT)
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+#endif
+
+/**
+ * @brief Events Flags APIs.
+ * @details If enabled then the event flags APIs are included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_EVENTS)
+#define CH_CFG_USE_EVENTS TRUE
+#endif
+
+/**
+ * @brief Events Flags APIs with timeout.
+ * @details If enabled then the events APIs with timeout specification
+ * are included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ * @note Requires @p CH_CFG_USE_EVENTS.
+ */
+#if !defined(CH_CFG_USE_EVENTS_TIMEOUT)
+#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
+#endif
+
+/**
+ * @brief Synchronous Messages APIs.
+ * @details If enabled then the synchronous messages APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_MESSAGES)
+#define CH_CFG_USE_MESSAGES TRUE
+#endif
+
+/**
+ * @brief Synchronous Messages queuing mode.
+ * @details If enabled then messages are served by priority rather than in
+ * FIFO order.
+ *
+ * @note The default is @p FALSE. Enable this if you have special
+ * requirements.
+ * @note Requires @p CH_CFG_USE_MESSAGES.
+ */
+#if !defined(CH_CFG_USE_MESSAGES_PRIORITY)
+#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
+#endif
+
+/**
+ * @brief Mailboxes APIs.
+ * @details If enabled then the asynchronous messages (mailboxes) APIs are
+ * included in the kernel.
+ *
+ * @note The default is @p TRUE.
+ * @note Requires @p CH_CFG_USE_SEMAPHORES.
+ */
+#if !defined(CH_CFG_USE_MAILBOXES)
+#define CH_CFG_USE_MAILBOXES TRUE
+#endif
+
+/**
+ * @brief Core Memory Manager APIs.
+ * @details If enabled then the core memory manager APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_MEMCORE)
+#define CH_CFG_USE_MEMCORE FALSE
+#endif
+
+/**
+ * @brief Heap Allocator APIs.
+ * @details If enabled then the memory heap allocator APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
+ * @p CH_CFG_USE_SEMAPHORES.
+ * @note Mutexes are recommended.
+ */
+#if !defined(CH_CFG_USE_HEAP)
+#define CH_CFG_USE_HEAP FALSE
+#endif
+
+/**
+ * @brief Memory Pools Allocator APIs.
+ * @details If enabled then the memory pools allocator APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_MEMPOOLS)
+#define CH_CFG_USE_MEMPOOLS FALSE
+#endif
+
+/**
+ * @brief Objects FIFOs APIs.
+ * @details If enabled then the objects FIFOs APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_OBJ_FIFOS)
+#define CH_CFG_USE_OBJ_FIFOS FALSE
+#endif
+
+/**
+ * @brief Pipes APIs.
+ * @details If enabled then the pipes APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ */
+#if !defined(CH_CFG_USE_PIPES)
+#define CH_CFG_USE_PIPES FALSE
+#endif
+
+/**
+ * @brief Dynamic Threads APIs.
+ * @details If enabled then the dynamic threads creation APIs are included
+ * in the kernel.
+ *
+ * @note The default is @p TRUE.
+ * @note Requires @p CH_CFG_USE_WAITEXIT.
+ * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
+ */
+#if !defined(CH_CFG_USE_DYNAMIC)
+#define CH_CFG_USE_DYNAMIC FALSE
+#endif
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Objects factory options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief Objects Factory APIs.
+ * @details If enabled then the objects factory APIs are included in the
+ * kernel.
+ *
+ * @note The default is @p FALSE.
+ */
+#if !defined(CH_CFG_USE_FACTORY)
+#define CH_CFG_USE_FACTORY FALSE
+#endif
+
+/**
+ * @brief Maximum length for object names.
+ * @details If the specified length is zero then the name is stored by
+ * pointer but this could have unintended side effects.
+ */
+#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH)
+#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8
+#endif
+
+/**
+ * @brief Enables the registry of generic objects.
+ */
+#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
+#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE
+#endif
+
+/**
+ * @brief Enables factory for generic buffers.
+ */
+#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
+#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE
+#endif
+
+/**
+ * @brief Enables factory for semaphores.
+ */
+#if !defined(CH_CFG_FACTORY_SEMAPHORES)
+#define CH_CFG_FACTORY_SEMAPHORES FALSE
+#endif
+
+/**
+ * @brief Enables factory for mailboxes.
+ */
+#if !defined(CH_CFG_FACTORY_MAILBOXES)
+#define CH_CFG_FACTORY_MAILBOXES FALSE
+#endif
+
+/**
+ * @brief Enables factory for objects FIFOs.
+ */
+#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
+#define CH_CFG_FACTORY_OBJ_FIFOS FALSE
+#endif
+
+/**
+ * @brief Enables factory for Pipes.
+ */
+#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
+#define CH_CFG_FACTORY_PIPES FALSE
+#endif
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Debug options
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief Debug option, kernel statistics.
+ *
+ * @note The default is @p FALSE.
+ */
+#if !defined(CH_DBG_STATISTICS)
+#define CH_DBG_STATISTICS FALSE
+#endif
+
+/**
+ * @brief Debug option, system state check.
+ * @details If enabled the correct call protocol for system APIs is checked
+ * at runtime.
+ *
+ * @note The default is @p FALSE.
+ */
+#if !defined(CH_DBG_SYSTEM_STATE_CHECK)
+#define CH_DBG_SYSTEM_STATE_CHECK FALSE
+#endif
+
+/**
+ * @brief Debug option, parameters checks.
+ * @details If enabled then the checks on the API functions input
+ * parameters are activated.
+ *
+ * @note The default is @p FALSE.
+ */
+#if !defined(CH_DBG_ENABLE_CHECKS)
+#define CH_DBG_ENABLE_CHECKS FALSE
+#endif
+
+/**
+ * @brief Debug option, consistency checks.
+ * @details If enabled then all the assertions in the kernel code are
+ * activated. This includes consistency checks inside the kernel,
+ * runtime anomalies and port-defined checks.
+ *
+ * @note The default is @p FALSE.
+ */
+#if !defined(CH_DBG_ENABLE_ASSERTS)
+#define CH_DBG_ENABLE_ASSERTS FALSE
+#endif
+
+/**
+ * @brief Debug option, trace buffer.
+ * @details If enabled then the trace buffer is activated.
+ *
+ * @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
+ */
+#if !defined(CH_DBG_TRACE_MASK)
+#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
+#endif
+
+/**
+ * @brief Trace buffer entries.
+ * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
+ * different from @p CH_DBG_TRACE_MASK_DISABLED.
+ */
+#if !defined(CH_DBG_TRACE_BUFFER_SIZE)
+#define CH_DBG_TRACE_BUFFER_SIZE 128
+#endif
+
+/**
+ * @brief Debug option, stack checks.
+ * @details If enabled then a runtime stack check is performed.
+ *
+ * @note The default is @p FALSE.
+ * @note The stack check is performed in a architecture/port dependent way.
+ * It may not be implemented or some ports.
+ * @note The default failure mode is to halt the system with the global
+ * @p panic_msg variable set to @p NULL.
+ */
+#if !defined(CH_DBG_ENABLE_STACK_CHECK)
+#define CH_DBG_ENABLE_STACK_CHECK FALSE
+#endif
+
+/**
+ * @brief Debug option, stacks initialization.
+ * @details If enabled then the threads working area is filled with a byte
+ * value when a thread is created. This can be useful for the
+ * runtime measurement of the used stack.
+ *
+ * @note The default is @p FALSE.
+ */
+#if !defined(CH_DBG_FILL_THREADS)
+#define CH_DBG_FILL_THREADS FALSE
+#endif
+
+/**
+ * @brief Debug option, threads profiling.
+ * @details If enabled then a field is added to the @p thread_t structure that
+ * counts the system ticks occurred while executing the thread.
+ *
+ * @note The default is @p FALSE.
+ * @note This debug option is not currently compatible with the
+ * tickless mode.
+ */
+#if !defined(CH_DBG_THREADS_PROFILING)
+#define CH_DBG_THREADS_PROFILING FALSE
+#endif
+
+/** @} */
+
+/*===========================================================================*/
+/**
+ * @name Kernel hooks
+ * @{
+ */
+/*===========================================================================*/
+
+/**
+ * @brief System structure extension.
+ * @details User fields added to the end of the @p ch_system_t structure.
+ */
+#define CH_CFG_SYSTEM_EXTRA_FIELDS \
+ /* Add threads custom fields here.*/
+
+/**
+ * @brief System initialization hook.
+ * @details User initialization code added to the @p chSysInit() function
+ * just before interrupts are enabled globally.
+ */
+#define CH_CFG_SYSTEM_INIT_HOOK() { \
+ /* Add threads initialization code here.*/ \
+}
+
+/**
+ * @brief Threads descriptor structure extension.
+ * @details User fields added to the end of the @p thread_t structure.
+ */
+#define CH_CFG_THREAD_EXTRA_FIELDS \
+ /* Add threads custom fields here.*/
+
+/**
+ * @brief Threads initialization hook.
+ * @details User initialization code added to the @p _thread_init() function.
+ *
+ * @note It is invoked from within @p _thread_init() and implicitly from all
+ * the threads creation APIs.
+ */
+#define CH_CFG_THREAD_INIT_HOOK(tp) { \
+ /* Add threads initialization code here.*/ \
+}
+
+/**
+ * @brief Threads finalization hook.
+ * @details User finalization code added to the @p chThdExit() API.
+ */
+#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
+ /* Add threads finalization code here.*/ \
+}
+
+/**
+ * @brief Context switch hook.
+ * @details This hook is invoked just before switching between threads.
+ */
+#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
+ /* Context switch code here.*/ \
+}
+
+/**
+ * @brief ISR enter hook.
+ */
+#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
+ /* IRQ prologue code here.*/ \
+}
+
+/**
+ * @brief ISR exit hook.
+ */
+#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
+ /* IRQ epilogue code here.*/ \
+}
+
+/**
+ * @brief Idle thread enter hook.
+ * @note This hook is invoked within a critical zone, no OS functions
+ * should be invoked from here.
+ * @note This macro can be used to activate a power saving mode.
+ */
+#define CH_CFG_IDLE_ENTER_HOOK() { \
+ /* Idle-enter code here.*/ \
+}
+
+/**
+ * @brief Idle thread leave hook.
+ * @note This hook is invoked within a critical zone, no OS functions
+ * should be invoked from here.
+ * @note This macro can be used to deactivate a power saving mode.
+ */
+#define CH_CFG_IDLE_LEAVE_HOOK() { \
+ /* Idle-leave code here.*/ \
+}
+
+/**
+ * @brief Idle Loop hook.
+ * @details This hook is continuously invoked by the idle thread loop.
+ */
+#define CH_CFG_IDLE_LOOP_HOOK() { \
+ /* Idle loop code here.*/ \
+}
+
+/**
+ * @brief System tick event hook.
+ * @details This hook is invoked in the system tick handler immediately
+ * after processing the virtual timers queue.
+ */
+#define CH_CFG_SYSTEM_TICK_HOOK() { \
+ /* System tick event code here.*/ \
+}
+
+/**
+ * @brief System halt hook.
+ * @details This hook is invoked in case to a system halting error before
+ * the system is halted.
+ */
+#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
+ /* System halt code here.*/ \
+}
+
+/**
+ * @brief Trace hook.
+ * @details This hook is invoked each time a new record is written in the
+ * trace buffer.
+ */
+#define CH_CFG_TRACE_HOOK(tep) { \
+ /* Trace code here.*/ \
+}
+
+/** @} */
+
+/*===========================================================================*/
+/* Port-specific settings (override port settings defaulted in chcore.h). */
+/*===========================================================================*/
+
+#endif /* CHCONF_H */
+
+/** @} */
diff --git a/keyboards/acheron/keebspcb/config.h b/keyboards/acheron/keebspcb/config.h
new file mode 100644
index 0000000000..af3abb09e0
--- /dev/null
+++ b/keyboards/acheron/keebspcb/config.h
@@ -0,0 +1,71 @@
+/*
+Copyright 2015 Jun Wako
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4150 // AP for AcheronProject
+#define PRODUCT_ID 0x4B45 // KE for Keebs
+#define DEVICE_VER 0x0001 // Revision pre-Alpha
+#define MANUFACTURER AcheronProject
+#define PRODUCT KeebsPCB
+#define DESCRIPTION AcheronProject KeebsPCB
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 13
+
+#define MATRIX_COL_PINS { B12, A1, A0, F1, F0, C15, C14, C13, B9, B8, B7, B6, B5}
+#define MATRIX_ROW_PINS { B4, B3, A2, A3, A4}
+#define DIODE_DIRECTION COL2ROW
+
+//#define BACKLIGHT_PIN A6
+//#define BACKLIGHT_PWM_DRIVER PWMD3
+//#define BACKLIGHT_PWM_CHANNEL 1
+//#define BACKLIGHT_PAL_MODE 1
+//#define BACKLIGHT_LEVELS 6
+//#define BACKLIGHT_BREATHING
+//#define BREATHING_PERIOD 6
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/acheron/keebspcb/halconf.h b/keyboards/acheron/keebspcb/halconf.h
new file mode 100644
index 0000000000..16f32117d5
--- /dev/null
+++ b/keyboards/acheron/keebspcb/halconf.h
@@ -0,0 +1,525 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/**
+ * @file templates/halconf.h
+ * @brief HAL configuration header.
+ * @details HAL configuration file, this file allows to enable or disable the
+ * various device drivers from your application. You may also use
+ * this file in order to override the device drivers default settings.
+ *
+ * @addtogroup HAL_CONF
+ * @{
+ */
+
+#ifndef HALCONF_H
+#define HALCONF_H
+
+#define _CHIBIOS_HAL_CONF_
+#define _CHIBIOS_HAL_CONF_VER_7_0_
+
+#include "mcuconf.h"
+
+/**
+ * @brief Enables the PAL subsystem.
+ */
+#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
+#define HAL_USE_PAL TRUE
+#endif
+
+/**
+ * @brief Enables the ADC subsystem.
+ */
+#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
+#define HAL_USE_ADC FALSE
+#endif
+
+/**
+ * @brief Enables the CAN subsystem.
+ */
+#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
+#define HAL_USE_CAN FALSE
+#endif
+
+/**
+ * @brief Enables the cryptographic subsystem.
+ */
+#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
+#define HAL_USE_CRY FALSE
+#endif
+
+/**
+ * @brief Enables the DAC subsystem.
+ */
+#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
+#define HAL_USE_DAC FALSE
+#endif
+
+/**
+ * @brief Enables the GPT subsystem.
+ */
+#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
+#define HAL_USE_GPT FALSE
+#endif
+
+/**
+ * @brief Enables the I2C subsystem.
+ */
+#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
+#define HAL_USE_I2C FALSE
+#endif
+
+/**
+ * @brief Enables the I2S subsystem.
+ */
+#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
+#define HAL_USE_I2S FALSE
+#endif
+
+/**
+ * @brief Enables the ICU subsystem.
+ */
+#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
+#define HAL_USE_ICU FALSE
+#endif
+
+/**
+ * @brief Enables the MAC subsystem.
+ */
+#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
+#define HAL_USE_MAC FALSE
+#endif
+
+/**
+ * @brief Enables the MMC_SPI subsystem.
+ */
+#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
+#define HAL_USE_MMC_SPI FALSE
+#endif
+
+/**
+ * @brief Enables the PWM subsystem.
+ */
+#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
+#define HAL_USE_PWM FALSE
+#endif
+
+/**
+ * @brief Enables the RTC subsystem.
+ */
+#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
+#define HAL_USE_RTC FALSE
+#endif
+
+/**
+ * @brief Enables the SDC subsystem.
+ */
+#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
+#define HAL_USE_SDC FALSE
+#endif
+
+/**
+ * @brief Enables the SERIAL subsystem.
+ */
+#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
+#define HAL_USE_SERIAL FALSE
+#endif
+
+/**
+ * @brief Enables the SERIAL over USB subsystem.
+ */
+#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
+#define HAL_USE_SERIAL_USB FALSE
+#endif
+
+/**
+ * @brief Enables the SIO subsystem.
+ */
+#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
+#define HAL_USE_SIO FALSE
+#endif
+
+/**
+ * @brief Enables the SPI subsystem.
+ */
+#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
+#define HAL_USE_SPI FALSE
+#endif
+
+/**
+ * @brief Enables the TRNG subsystem.
+ */
+#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
+#define HAL_USE_TRNG FALSE
+#endif
+
+/**
+ * @brief Enables the UART subsystem.
+ */
+#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
+#define HAL_USE_UART FALSE
+#endif
+
+/**
+ * @brief Enables the USB subsystem.
+ */
+#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
+#define HAL_USE_USB TRUE
+#endif
+
+/**
+ * @brief Enables the WDG subsystem.
+ */
+#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
+#define HAL_USE_WDG FALSE
+#endif
+
+/**
+ * @brief Enables the WSPI subsystem.
+ */
+#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
+#define HAL_USE_WSPI FALSE
+#endif
+
+/*===========================================================================*/
+/* PAL driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
+#define PAL_USE_CALLBACKS FALSE
+#endif
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
+#define PAL_USE_WAIT FALSE
+#endif
+
+/*===========================================================================*/
+/* ADC driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
+#define ADC_USE_WAIT TRUE
+#endif
+
+/**
+ * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define ADC_USE_MUTUAL_EXCLUSION TRUE
+#endif
+
+/*===========================================================================*/
+/* CAN driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Sleep mode related APIs inclusion switch.
+ */
+#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
+#define CAN_USE_SLEEP_MODE TRUE
+#endif
+
+/**
+ * @brief Enforces the driver to use direct callbacks rather than OSAL events.
+ */
+#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
+#define CAN_ENFORCE_USE_CALLBACKS FALSE
+#endif
+
+/*===========================================================================*/
+/* CRY driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables the SW fall-back of the cryptographic driver.
+ * @details When enabled, this option, activates a fall-back software
+ * implementation for algorithms not supported by the underlying
+ * hardware.
+ * @note Fall-back implementations may not be present for all algorithms.
+ */
+#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
+#define HAL_CRY_USE_FALLBACK FALSE
+#endif
+
+/**
+ * @brief Makes the driver forcibly use the fall-back implementations.
+ */
+#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
+#define HAL_CRY_ENFORCE_FALLBACK FALSE
+#endif
+
+/*===========================================================================*/
+/* DAC driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
+#define DAC_USE_WAIT TRUE
+#endif
+
+/**
+ * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define DAC_USE_MUTUAL_EXCLUSION TRUE
+#endif
+
+/*===========================================================================*/
+/* I2C driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables the mutual exclusion APIs on the I2C bus.
+ */
+#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define I2C_USE_MUTUAL_EXCLUSION TRUE
+#endif
+
+/*===========================================================================*/
+/* MAC driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables the zero-copy API.
+ */
+#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
+#define MAC_USE_ZERO_COPY FALSE
+#endif
+
+/**
+ * @brief Enables an event sources for incoming packets.
+ */
+#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
+#define MAC_USE_EVENTS TRUE
+#endif
+
+/*===========================================================================*/
+/* MMC_SPI driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Delays insertions.
+ * @details If enabled this options inserts delays into the MMC waiting
+ * routines releasing some extra CPU time for the threads with
+ * lower priority, this may slow down the driver a bit however.
+ * This option is recommended also if the SPI driver does not
+ * use a DMA channel and heavily loads the CPU.
+ */
+#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
+#define MMC_NICE_WAITING TRUE
+#endif
+
+/*===========================================================================*/
+/* SDC driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Number of initialization attempts before rejecting the card.
+ * @note Attempts are performed at 10mS intervals.
+ */
+#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
+#define SDC_INIT_RETRY 100
+#endif
+
+/**
+ * @brief Include support for MMC cards.
+ * @note MMC support is not yet implemented so this option must be kept
+ * at @p FALSE.
+ */
+#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
+#define SDC_MMC_SUPPORT FALSE
+#endif
+
+/**
+ * @brief Delays insertions.
+ * @details If enabled this options inserts delays into the MMC waiting
+ * routines releasing some extra CPU time for the threads with
+ * lower priority, this may slow down the driver a bit however.
+ */
+#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
+#define SDC_NICE_WAITING TRUE
+#endif
+
+/**
+ * @brief OCR initialization constant for V20 cards.
+ */
+#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
+#define SDC_INIT_OCR_V20 0x50FF8000U
+#endif
+
+/**
+ * @brief OCR initialization constant for non-V20 cards.
+ */
+#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
+#define SDC_INIT_OCR 0x80100000U
+#endif
+
+/*===========================================================================*/
+/* SERIAL driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Default bit rate.
+ * @details Configuration parameter, this is the baud rate selected for the
+ * default configuration.
+ */
+#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
+#define SERIAL_DEFAULT_BITRATE 38400
+#endif
+
+/**
+ * @brief Serial buffers size.
+ * @details Configuration parameter, you can change the depth of the queue
+ * buffers depending on the requirements of your application.
+ * @note The default is 16 bytes for both the transmission and receive
+ * buffers.
+ */
+#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
+#define SERIAL_BUFFERS_SIZE 16
+#endif
+
+/*===========================================================================*/
+/* SERIAL_USB driver related setting. */
+/*===========================================================================*/
+
+/**
+ * @brief Serial over USB buffers size.
+ * @details Configuration parameter, the buffer size must be a multiple of
+ * the USB data endpoint maximum packet size.
+ * @note The default is 256 bytes for both the transmission and receive
+ * buffers.
+ */
+#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
+#define SERIAL_USB_BUFFERS_SIZE 1
+#endif
+
+/**
+ * @brief Serial over USB number of buffers.
+ * @note The default is 2 buffers.
+ */
+#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
+#define SERIAL_USB_BUFFERS_NUMBER 2
+#endif
+
+/*===========================================================================*/
+/* SPI driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
+#define SPI_USE_WAIT TRUE
+#endif
+
+/**
+ * @brief Enables circular transfers APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
+#define SPI_USE_CIRCULAR FALSE
+#endif
+
+
+/**
+ * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define SPI_USE_MUTUAL_EXCLUSION TRUE
+#endif
+
+/**
+ * @brief Handling method for SPI CS line.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+#endif
+
+/*===========================================================================*/
+/* UART driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
+#define UART_USE_WAIT FALSE
+#endif
+
+/**
+ * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define UART_USE_MUTUAL_EXCLUSION FALSE
+#endif
+
+/*===========================================================================*/
+/* USB driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
+#define USB_USE_WAIT TRUE
+#endif
+
+/*===========================================================================*/
+/* WSPI driver related settings. */
+/*===========================================================================*/
+
+/**
+ * @brief Enables synchronous APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
+#define WSPI_USE_WAIT TRUE
+#endif
+
+/**
+ * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
+ * @note Disabling this option saves both code and data space.
+ */
+#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
+#define WSPI_USE_MUTUAL_EXCLUSION TRUE
+#endif
+
+#endif /* HALCONF_H */
+
+/** @} */
diff --git a/keyboards/acheron/keebspcb/info.json b/keyboards/acheron/keebspcb/info.json
new file mode 100644
index 0000000000..9312dc0fb1
--- /dev/null
+++ b/keyboards/acheron/keebspcb/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "KeebsPCB",
+ "url": "http://gondolindrim.github.io/AcheronDocs/keebs/intro.html",
+ "maintainer": "Gondolindrim",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Menu", "x":13.5, "y":4, "w":1.5}]
+ }
+ }
+}
diff --git a/keyboards/acheron/keebspcb/keebspcb.c b/keyboards/acheron/keebspcb/keebspcb.c
new file mode 100644
index 0000000000..56109507cd
--- /dev/null
+++ b/keyboards/acheron/keebspcb/keebspcb.c
@@ -0,0 +1 @@
+#include "keebspcb.h"
diff --git a/keyboards/acheron/keebspcb/keebspcb.h b/keyboards/acheron/keebspcb/keebspcb.h
new file mode 100644
index 0000000000..131d0013f1
--- /dev/null
+++ b/keyboards/acheron/keebspcb/keebspcb.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_60_ansi_tsangan( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K3C, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K4C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
+ K40, K41, K42, K46, K49, K4A, K4B \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C}, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C}, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C}, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C}, \
+ { K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C} \
+}
diff --git a/keyboards/acheron/keebspcb/keymaps/default/keymap.c b/keyboards/acheron/keebspcb/keymaps/default/keymap.c
new file mode 100755
index 0000000000..21a1afc1e1
--- /dev/null
+++ b/keyboards/acheron/keebspcb/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/*
+Copyright 2012,2013 Gondolindrim
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi_tsangan(
+ 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_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_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_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_RCTL ),
+ [1] = LAYOUT_60_ansi_tsangan(
+ KC_GRV, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, 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, KC_TRNS, KC_NO, KC_TRNS ),
+};
diff --git a/keyboards/acheron/keebspcb/mcuconf.h b/keyboards/acheron/keebspcb/mcuconf.h
new file mode 100644
index 0000000000..6289be66da
--- /dev/null
+++ b/keyboards/acheron/keebspcb/mcuconf.h
@@ -0,0 +1,176 @@
+/*
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef _MCUCONF_H_
+#define _MCUCONF_H_
+
+/*
+ * STM32F0xx drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 3...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...3 Lowest...Highest.
+ */
+
+#define STM32F0xx_MCUCONF
+// #define STM32F070xB
+
+/*
+ * HAL driver system settings.
+ */
+#define STM32_NO_INIT FALSE
+#define STM32_PVD_ENABLE FALSE
+#define STM32_PLS STM32_PLS_LEV0
+#define STM32_HSI_ENABLED TRUE
+#define STM32_HSI14_ENABLED TRUE
+#define STM32_HSI48_ENABLED FALSE
+#define STM32_LSI_ENABLED TRUE
+#define STM32_HSE_ENABLED FALSE
+#define STM32_LSE_ENABLED FALSE
+#define STM32_SW STM32_SW_PLL
+#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
+#define STM32_PREDIV_VALUE 1
+#define STM32_PLLMUL_VALUE 12
+#define STM32_HPRE STM32_HPRE_DIV1
+#define STM32_PPRE STM32_PPRE_DIV1
+#define STM32_ADCSW STM32_ADCSW_HSI14
+#define STM32_ADCPRE STM32_ADCPRE_DIV4
+#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
+#define STM32_ADCPRE STM32_ADCPRE_DIV4
+#define STM32_ADCSW STM32_ADCSW_HSI14
+#define STM32_USBSW STM32_USBSW_HSI48
+#define STM32_CECSW STM32_CECSW_HSI
+#define STM32_I2C1SW STM32_I2C1SW_HSI
+#define STM32_USART1SW STM32_USART1SW_PCLK
+#define STM32_RTCSEL STM32_RTCSEL_LSI
+
+/*
+ * ADC driver system settings.
+ */
+#define STM32_ADC_USE_ADC1 FALSE
+#define STM32_ADC_ADC1_DMA_PRIORITY 2
+#define STM32_ADC_IRQ_PRIORITY 2
+#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
+
+/*
+ * EXT driver system settings.
+ */
+#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI16_IRQ_PRIORITY 3
+#define STM32_EXT_EXTI17_IRQ_PRIORITY 3
+
+/*
+ * GPT driver system settings.
+ */
+#define STM32_GPT_USE_TIM1 FALSE
+#define STM32_GPT_USE_TIM2 FALSE
+#define STM32_GPT_USE_TIM3 FALSE
+#define STM32_GPT_USE_TIM14 FALSE
+#define STM32_GPT_TIM1_IRQ_PRIORITY 2
+#define STM32_GPT_TIM2_IRQ_PRIORITY 2
+#define STM32_GPT_TIM3_IRQ_PRIORITY 2
+#define STM32_GPT_TIM14_IRQ_PRIORITY 2
+
+/*
+ * I2C driver system settings.
+ */
+#define STM32_I2C_USE_I2C1 FALSE
+#define STM32_I2C_USE_I2C2 FALSE
+#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_I2C1_IRQ_PRIORITY 3
+#define STM32_I2C_I2C2_IRQ_PRIORITY 3
+#define STM32_I2C_USE_DMA FALSE
+#define STM32_I2C_I2C1_DMA_PRIORITY 1
+#define STM32_I2C_I2C2_DMA_PRIORITY 1
+#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
+
+/*
+ * ICU driver system settings.
+ */
+#define STM32_ICU_USE_TIM1 FALSE
+#define STM32_ICU_USE_TIM2 FALSE
+#define STM32_ICU_USE_TIM3 FALSE
+#define STM32_ICU_TIM1_IRQ_PRIORITY 3
+#define STM32_ICU_TIM2_IRQ_PRIORITY 3
+#define STM32_ICU_TIM3_IRQ_PRIORITY 3
+
+/*
+ * PWM driver system settings.
+ */
+#define STM32_PWM_USE_ADVANCED FALSE
+#define STM32_PWM_USE_TIM1 FALSE
+#define STM32_PWM_USE_TIM2 FALSE
+#define STM32_PWM_USE_TIM3 FALSE
+#define STM32_PWM_TIM1_IRQ_PRIORITY 3
+#define STM32_PWM_TIM2_IRQ_PRIORITY 3
+#define STM32_PWM_TIM3_IRQ_PRIORITY 3
+
+/*
+ * SERIAL driver system settings.
+ */
+#define STM32_SERIAL_USE_USART1 FALSE
+#define STM32_SERIAL_USE_USART2 FALSE
+#define STM32_SERIAL_USART1_PRIORITY 3
+#define STM32_SERIAL_USART2_PRIORITY 3
+
+/*
+ * SPI driver system settings.
+ */
+#define STM32_SPI_USE_SPI1 FALSE
+#define STM32_SPI_USE_SPI2 FALSE
+#define STM32_SPI_SPI1_DMA_PRIORITY 1
+#define STM32_SPI_SPI2_DMA_PRIORITY 1
+#define STM32_SPI_SPI1_IRQ_PRIORITY 2
+#define STM32_SPI_SPI2_IRQ_PRIORITY 2
+#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
+
+/*
+ * ST driver system settings.
+ */
+#define STM32_ST_IRQ_PRIORITY 2
+#define STM32_ST_USE_TIMER 2
+
+/*
+ * UART driver system settings.
+ */
+#define STM32_UART_USE_USART1 FALSE
+#define STM32_UART_USE_USART2 FALSE
+#define STM32_UART_USART1_IRQ_PRIORITY 3
+#define STM32_UART_USART2_IRQ_PRIORITY 3
+#define STM32_UART_USART1_DMA_PRIORITY 0
+#define STM32_UART_USART2_DMA_PRIORITY 0
+#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
+
+/*
+ * USB driver system settings.
+ */
+#define STM32_USB_USE_USB1 TRUE
+#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
+#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
+
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/acheron/keebspcb/readme.md b/keyboards/acheron/keebspcb/readme.md
new file mode 100644
index 0000000000..22de968c7d
--- /dev/null
+++ b/keyboards/acheron/keebspcb/readme.md
@@ -0,0 +1,33 @@
+# Acheron Aχξρων 60-SM-S-STM32-MX-HS-WI (codename "KeebsPCB") QMK firmware
+
+
+
+
+
+## Introduction
+
+This is the QMK firmware repository for the KeebsPCB, updated until [pre-revision Alpha](https://github.com/Gondolindrim/KeebsPCB/releases/tag/pre-Alpha).
+
+The KeebsPCB is an Open-Hardware guidelines compliant PCB which files can be found at [this link](https://github.com/Gondolindrim/KeebsPCB). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim).
+
+The KeebsPCB is a collaboration between Gondolindrim and MrKeebs; its layouts and features were cherry-picked by MrKeebs and the PCB was designed for him with these chosen features.
+
+As of may 2020, there is no way to buy an KeebsPCB through a vendor or Group Buy; the only possible way is ordering them directly from a manufacturer.
+
+## Layouts
+
+The PCB offers a single layout consisting of a default ANSI layout with 7U bottom row.
+
+## PCB Documentation
+
+See the [AcheronDocs](https://gondolindrim.github.io/AcheronDocs/keebs/intro.html) page for the KeebsPCB full documentation. You can also check the KiCad PCB files at the [KeebsPCB GitHub repository](https://github.com/Gondolindrim/KeebsPCB).
+
+Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.2](https://gondolindrim.github.io/AcheronDocs/license/license.html) under which the Austin PCB is published.
+
+## How to compile
+
+After setting up your build environment, you can compile the KeebsPCB default keymap by using:
+
+ make acheron/keebspcb:default
+
+See 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/acheron/keebspcb/rules.mk b/keyboards/acheron/keebspcb/rules.mk
new file mode 100644
index 0000000000..3f2f03188a
--- /dev/null
+++ b/keyboards/acheron/keebspcb/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32F072
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+LAYOUTS = 60_ansi_tsangan
From 96bfce70009ac15f21e440fd3894e6c11e1b7615 Mon Sep 17 00:00:00 2001
From: foxx1337
Date: Thu, 26 Mar 2020 03:34:57 +0100
Subject: [PATCH 27/47] Add RawHID support to ATSAM (Massdrop boards) (#8530)
* Add support for RAW endpoint for arm_atsam
This the excellent work from helluvamatt/qmk_firmware in bb6eeb93b.
* Reformat arm_atsam RAW endpoint code
Co-authored-by: Matt Schneeberger
---
tmk_core/protocol/arm_atsam/main_arm_atsam.c | 9 ++++++
tmk_core/protocol/arm_atsam/usb/conf_usb.h | 1 +
tmk_core/protocol/arm_atsam/usb/main_usb.c | 7 +++++
tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c | 29 ++++++++++++++++++-
tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h | 1 +
tmk_core/protocol/arm_atsam/usb/usb_main.h | 1 +
6 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
index e952a427ef..93f34d9c3b 100644
--- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c
+++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
@@ -206,10 +206,19 @@ void main_subtask_usb_extra_device(void) {
}
}
+#ifdef RAW_ENABLE
+void main_subtask_raw(void) {
+ udi_hid_raw_receive_report();
+}
+#endif
+
void main_subtasks(void) {
main_subtask_usb_state();
main_subtask_power_check();
main_subtask_usb_extra_device();
+#ifdef RAW_ENABLE
+ main_subtask_raw();
+#endif
}
int main(void) {
diff --git a/tmk_core/protocol/arm_atsam/usb/conf_usb.h b/tmk_core/protocol/arm_atsam/usb/conf_usb.h
index f23c2a80dd..f236427ca1 100644
--- a/tmk_core/protocol/arm_atsam/usb/conf_usb.h
+++ b/tmk_core/protocol/arm_atsam/usb/conf_usb.h
@@ -146,6 +146,7 @@
#ifdef RAW
# define UDI_HID_RAW_ENABLE_EXT() main_raw_enable()
# define UDI_HID_RAW_DISABLE_EXT() main_raw_disable()
+# define UDI_HID_RAW_RECEIVE(buffer, len) main_raw_receive(buffer, len)
#endif
//@}
diff --git a/tmk_core/protocol/arm_atsam/usb/main_usb.c b/tmk_core/protocol/arm_atsam/usb/main_usb.c
index 82ab123fd0..24630d9492 100644
--- a/tmk_core/protocol/arm_atsam/usb/main_usb.c
+++ b/tmk_core/protocol/arm_atsam/usb/main_usb.c
@@ -18,6 +18,9 @@ along with this program. If not, see .
#include "samd51j18a.h"
#include "conf_usb.h"
#include "udd.h"
+#ifdef RAW
+#include "raw_hid.h"
+#endif
uint8_t keyboard_protocol = 1;
@@ -89,4 +92,8 @@ bool main_raw_enable(void) {
}
void main_raw_disable(void) { main_b_raw_enable = false; }
+
+void main_raw_receive(uint8_t *buffer, uint8_t len) {
+ raw_hid_receive(buffer, len);
+}
#endif
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 cf9297dc78..8142f297d4 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.c
@@ -640,6 +640,9 @@ static bool udi_hid_raw_b_report_trans_ongoing;
COMPILER_WORD_ALIGNED
static uint8_t udi_hid_raw_report_trans[UDI_HID_RAW_REPORT_SIZE];
+COMPILER_WORD_ALIGNED
+static uint8_t udi_hid_raw_report_recv[UDI_HID_RAW_REPORT_SIZE];
+
COMPILER_WORD_ALIGNED
UDC_DESC_STORAGE udi_hid_raw_report_desc_t udi_hid_raw_report_desc = {{
0x06, 0x60, 0xFF, // Usage Page (Vendor Defined)
@@ -663,6 +666,7 @@ static bool udi_hid_raw_setreport(void);
static void udi_hid_raw_setreport_valid(void);
static void udi_hid_raw_report_sent(udd_ep_status_t status, iram_size_t nb_sent, udd_ep_id_t ep);
+static void udi_hid_raw_report_rcvd(udd_ep_status_t status, iram_size_t nb_rcvd, udd_ep_id_t ep);
bool udi_hid_raw_enable(void) {
// Initialize internal values
@@ -719,7 +723,30 @@ static void udi_hid_raw_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
static void udi_hid_raw_setreport_valid(void) {}
-#endif // RAW
+void raw_hid_send(uint8_t *data, uint8_t length) {
+ if (main_b_raw_enable && !udi_hid_raw_b_report_trans_ongoing && length == UDI_HID_RAW_REPORT_SIZE) {
+ memcpy(udi_hid_raw_report, data, UDI_HID_RAW_REPORT_SIZE);
+ udi_hid_raw_send_report();
+ }
+}
+
+bool udi_hid_raw_receive_report(void) {
+ if (!main_b_raw_enable) {
+ return false;
+ }
+
+ return udd_ep_run(UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, false, udi_hid_raw_report_recv, UDI_HID_RAW_REPORT_SIZE, udi_hid_raw_report_rcvd);
+}
+
+static void udi_hid_raw_report_rcvd(udd_ep_status_t status, iram_size_t nb_rcvd, udd_ep_id_t ep) {
+ UNUSED(ep);
+
+ if (status == UDD_EP_TRANSFER_OK && nb_rcvd == UDI_HID_RAW_REPORT_SIZE) {
+ UDI_HID_RAW_RECEIVE(udi_hid_raw_report_recv, UDI_HID_RAW_REPORT_SIZE);
+ }
+}
+
+#endif //RAW
//********************************************************************************************
// CON
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 82b1cbfe07..6dc1fed3ef 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd.h
@@ -111,6 +111,7 @@ bool udi_hid_mou_send_report(void);
#ifdef RAW
extern UDC_DESC_STORAGE udi_api_t udi_api_hid_raw;
bool udi_hid_raw_send_report(void);
+bool udi_hid_raw_receive_report(void);
#endif // RAW
//@}
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_main.h b/tmk_core/protocol/arm_atsam/usb/usb_main.h
index e1ffa3e184..3191b2fc13 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_main.h
+++ b/tmk_core/protocol/arm_atsam/usb/usb_main.h
@@ -97,6 +97,7 @@ void main_mou_disable(void);
extern volatile bool main_b_raw_enable;
bool main_raw_enable(void);
void main_raw_disable(void);
+void main_raw_receive(uint8_t *buffer, uint8_t len);
#endif // RAW
#endif // _MAIN_H_
From 9fbf17b90e9e9bf23797ef524d9dabaa2adfbad5 Mon Sep 17 00:00:00 2001
From: QMK Bot
Date: Thu, 26 Mar 2020 03:10:16 +0000
Subject: [PATCH 28/47] format code according to conventions [skip ci]
---
tmk_core/protocol/arm_atsam/main_arm_atsam.c | 4 +---
tmk_core/protocol/arm_atsam/usb/main_usb.c | 6 ++----
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
index 93f34d9c3b..e4e79d3510 100644
--- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c
+++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
@@ -207,9 +207,7 @@ void main_subtask_usb_extra_device(void) {
}
#ifdef RAW_ENABLE
-void main_subtask_raw(void) {
- udi_hid_raw_receive_report();
-}
+void main_subtask_raw(void) { udi_hid_raw_receive_report(); }
#endif
void main_subtasks(void) {
diff --git a/tmk_core/protocol/arm_atsam/usb/main_usb.c b/tmk_core/protocol/arm_atsam/usb/main_usb.c
index 24630d9492..3809e1fd02 100644
--- a/tmk_core/protocol/arm_atsam/usb/main_usb.c
+++ b/tmk_core/protocol/arm_atsam/usb/main_usb.c
@@ -19,7 +19,7 @@ along with this program. If not, see .
#include "conf_usb.h"
#include "udd.h"
#ifdef RAW
-#include "raw_hid.h"
+# include "raw_hid.h"
#endif
uint8_t keyboard_protocol = 1;
@@ -93,7 +93,5 @@ bool main_raw_enable(void) {
void main_raw_disable(void) { main_b_raw_enable = false; }
-void main_raw_receive(uint8_t *buffer, uint8_t len) {
- raw_hid_receive(buffer, len);
-}
+void main_raw_receive(uint8_t *buffer, uint8_t len) { raw_hid_receive(buffer, len); }
#endif
From 5bd0a5a58546ab950a038fadc41846a5d9a851e5 Mon Sep 17 00:00:00 2001
From: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Date: Thu, 26 Mar 2020 13:13:16 +0900
Subject: [PATCH 29/47] [Docs] added the description of the reading order of
the config.h files. (#8545)
* added the description of the reading order of the config.h files.
* Update docs/hardware_keyboard_guidelines.md
* Update docs/hardware_keyboard_guidelines.md
* Added a description of post_config.h.
* sample bug fix
* sample update
* Update docs/hardware_keyboard_guidelines.md
* Update docs/hardware_keyboard_guidelines.md
* update docs/hardware_keyboard_guidelines.md
* Update docs/hardware_keyboard_guidelines.md
---
docs/hardware_keyboard_guidelines.md | 51 ++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index 5d9968f6d7..4d893074eb 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -61,6 +61,57 @@ This file is used by the [QMK API](https://github.com/qmk/qmk_api). It contains
All projects need to have a `config.h` file that sets things like the matrix size, product name, USB VID/PID, description and other settings. In general, use this file to set essential information and defaults for your keyboard that will always work.
+The `config.h` files can also be placed in sub-folders, and the order in which they are read is as follows:
+
+* `keyboards/top_folder/config.h`
+ * `keyboards/top_folder/sub_1/config.h`
+ * `keyboards/top_folder/sub_1/sub_2/config.h`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/config.h`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/config.h`
+ * `users/a_user_folder/config.h`
+ * `keyboards/top_folder/keymaps/a_keymap/config.h`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_config.h`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/post_config.h`
+ * `keyboards/top_folder/sub_1/sub_2/post_config.h`
+ * `keyboards/top_folder/sub_1/post_config.h`
+* `keyboards/top_folder/post_config.h`
+
+The `post_config.h` file can be used for additional post-processing, depending on what is specified in the `config.h` file. For example, if you define the `IOS_DEVICE_ENABLE` macro in your keymap-level `config.h` file as follows, you can configure more detailed settings accordingly in the `post_config.h` file:
+
+* `keyboards/top_folder/keymaps/a_keymap/config.h`
+ ```c
+ #define IOS_DEVICE_ENABLE
+ ```
+* `keyboards/top_folder/post_config.h`
+ ```c
+ #ifndef IOS_DEVICE_ENABLE
+ // USB_MAX_POWER_CONSUMPTION value for this keyboard
+ #define USB_MAX_POWER_CONSUMPTION 400
+ #else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+ #endif
+
+ #ifdef RGBLIGHT_ENABLE
+ #ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 200
+ #define RGBLIGHT_VAL_STEP 17
+ #else
+ #define RGBLIGHT_LIMIT_VAL 35
+ #define RGBLIGHT_VAL_STEP 4
+ #endif
+ #ifndef RGBLIGHT_HUE_STEP
+ #define RGBLIGHT_HUE_STEP 10
+ #endif
+ #ifndef RGBLIGHT_SAT_STEP
+ #define RGBLIGHT_SAT_STEP 17
+ #endif
+ #endif
+ ```
+
+?> If you define options using `post_config.h` as in the above example, you should not define the same options in the keyboard- or user-level `config.h`.
+
### `rules.mk`
The presence of this file means that the folder is a keyboard target and can be used in `make` commands. This is where you setup the build environment for your keyboard and configure the default set of features.
From 65252ebf672b6bd1395b83cfcb037e7d721a1231 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Thu, 26 Mar 2020 16:50:39 +1100
Subject: [PATCH 30/47] Add Croatian keymap (#8525)
* Add Croatian keymap
* Fix comment on HR_DIAE
---
quantum/keymap_extras/keymap_croatian.h | 163 ++++++++++++++++++++
quantum/keymap_extras/sendstring_croatian.h | 100 ++++++++++++
2 files changed, 263 insertions(+)
create mode 100644 quantum/keymap_extras/keymap_croatian.h
create mode 100644 quantum/keymap_extras/sendstring_croatian.h
diff --git a/quantum/keymap_extras/keymap_croatian.h b/quantum/keymap_extras/keymap_croatian.h
new file mode 100644
index 0000000000..4af5dc5875
--- /dev/null
+++ b/quantum/keymap_extras/keymap_croatian.h
@@ -0,0 +1,163 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define HR_CEDL KC_GRV // ¸ (dead)
+#define HR_1 KC_1 // 1
+#define HR_2 KC_2 // 2
+#define HR_3 KC_3 // 3
+#define HR_4 KC_4 // 4
+#define HR_5 KC_5 // 5
+#define HR_6 KC_6 // 6
+#define HR_7 KC_7 // 7
+#define HR_8 KC_8 // 8
+#define HR_9 KC_9 // 9
+#define HR_0 KC_0 // 0
+#define HR_QUOT KC_MINS // '
+#define HR_PLUS KC_EQL // +
+// Row 2
+#define HR_Q KC_Q // Q
+#define HR_W KC_W // W
+#define HR_E KC_E // E
+#define HR_R KC_R // R
+#define HR_T KC_T // T
+#define HR_Z KC_Y // Z
+#define HR_U KC_U // U
+#define HR_I KC_I // I
+#define HR_O KC_O // O
+#define HR_P KC_P // P
+#define HR_SCAR KC_LBRC // Š
+#define HR_DSTR KC_RBRC // Đ
+// Row 3
+#define HR_A KC_A // A
+#define HR_S KC_S // S
+#define HR_D KC_D // D
+#define HR_F KC_F // F
+#define HR_G KC_G // G
+#define HR_H KC_H // H
+#define HR_J KC_J // J
+#define HR_K KC_K // K
+#define HR_L KC_L // L
+#define HR_CCAR KC_SCLN // Č
+#define HR_CACU KC_QUOT // Ć
+#define HR_ZCAR KC_NUHS // Ž
+// Row 4
+#define HR_LABK KC_NUBS // <
+#define HR_Y KC_Z // Y
+#define HR_X KC_X // X
+#define HR_C KC_C // C
+#define HR_V KC_V // V
+#define HR_B KC_B // B
+#define HR_N KC_N // N
+#define HR_M KC_M // M
+#define HR_COMM KC_COMM // ,
+#define HR_DOT KC_DOT // .
+#define HR_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define HR_DIAE S(HR_CEDL) // ¨ (dead)
+#define HR_EXLM S(HR_1) // !
+#define HR_DQUO S(HR_2) // "
+#define HR_HASH S(HR_3) // #
+#define HR_DLR S(HR_4) // $
+#define HR_PERC S(HR_5) // %
+#define HR_AMPR S(HR_6) // &
+#define HR_SLSH S(HR_7) // /
+#define HR_LPRN S(HR_8) // (
+#define HR_RPRN S(HR_9) // )
+#define HR_EQL S(HR_0) // =
+#define HR_QUES S(HR_QUOT) // ?
+#define HR_ASTR S(HR_PLUS) // *
+// Row 4
+#define HR_RABK S(HR_LABK) // >
+#define HR_SCLN S(HR_COMM) // ;
+#define HR_COLN S(HR_DOT) // :
+#define HR_UNDS S(HR_MINS) // _
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define HR_TILD ALGR(HR_1) // ~
+#define HR_CARN ALGR(HR_2) // ˇ (dead)
+#define HR_CIRC ALGR(HR_3) // ^ (dead)
+#define HR_BREV ALGR(HR_4) // ˘ (dead)
+#define HR_RNGA ALGR(HR_5) // ° (dead)
+#define HR_OGON ALGR(HR_6) // ˛ (dead)
+#define HR_GRV ALGR(HR_7) // `
+#define HR_DOTA ALGR(HR_8) // ˙ (dead)
+#define HR_ACUT ALGR(HR_9) // ´ (dead)
+#define HR_DACU ALGR(HR_0) // ˝ (dead)
+// Row 2
+#define HR_BSLS ALGR(HR_Q) // (backslash)
+#define HR_PIPE ALGR(HR_W) // |
+#define HR_EURO ALGR(HR_E) // €
+#define HR_DIV ALGR(HR_SCAR) // ÷
+#define HR_MUL ALGR(HR_DSTR) // ×
+// Row 3
+#define HR_LBRC ALGR(HR_F) // [
+#define HR_RBRC ALGR(HR_G) // ]
+#define HR_LLST ALGR(HR_K) // ł
+#define HR_CLST ALGR(HR_L) // Ł
+#define HR_SS ALGR(HR_CACU) // ß
+#define HR_CURR ALGR(HR_ZCAR) // ¤
+// Row 4
+#define HR_AT ALGR(HR_V) // @
+#define HR_LCBR ALGR(HR_B) // {
+#define HR_RCBR ALGR(HR_N) // }
+#define HR_SECT ALGR(HR_M) // §
diff --git a/quantum/keymap_extras/sendstring_croatian.h b/quantum/keymap_extras/sendstring_croatian.h
new file mode 100644
index 0000000000..67f75992ae
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_croatian.h
@@ -0,0 +1,100 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Croatian layouts
+
+#pragma once
+
+#include "keymap_croatian.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, HR_1, HR_2, HR_3, HR_4, HR_5, HR_6, HR_QUOT,
+ // ( ) * + , - . /
+ HR_8, HR_9, HR_PLUS, HR_PLUS, HR_COMM, HR_MINS, HR_DOT, HR_7,
+ // 0 1 2 3 4 5 6 7
+ HR_0, HR_1, HR_2, HR_3, HR_4, HR_5, HR_6, HR_7,
+ // 8 9 : ; < = > ?
+ HR_8, HR_9, HR_DOT, HR_COMM, HR_LABK, HR_0, HR_LABK, HR_QUOT,
+ // @ A B C D E F G
+ HR_V, HR_A, HR_B, HR_C, HR_D, HR_E, HR_F, HR_G,
+ // H I J K L M N O
+ HR_H, HR_I, HR_J, HR_K, HR_L, HR_M, HR_N, HR_O,
+ // P Q R S T U V W
+ HR_P, HR_Q, HR_R, HR_S, HR_T, HR_U, HR_V, HR_W,
+ // X Y Z [ \ ] ^ _
+ HR_X, HR_Y, HR_Z, HR_F, HR_Q, HR_G, HR_3, HR_MINS,
+ // ` a b c d e f g
+ HR_7, HR_A, HR_B, HR_C, HR_D, HR_E, HR_F, HR_G,
+ // h i j k l m n o
+ HR_H, HR_I, HR_J, HR_K, HR_L, HR_M, HR_N, HR_O,
+ // p q r s t u v w
+ HR_P, HR_Q, HR_R, HR_S, HR_T, HR_U, HR_V, HR_W,
+ // x y z { | } ~ DEL
+ HR_X, HR_Y, HR_Z, HR_B, HR_W, HR_N, HR_1, KC_DEL
+};
From 981ea87b05b18756e79475b6aa576a4515008960 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Thu, 26 Mar 2020 16:51:07 +1100
Subject: [PATCH 31/47] Add Estonian keymap (#8527)
---
quantum/keymap_extras/keymap_estonian.h | 155 ++++++++++++++++++++
quantum/keymap_extras/sendstring_estonian.h | 100 +++++++++++++
2 files changed, 255 insertions(+)
create mode 100644 quantum/keymap_extras/keymap_estonian.h
create mode 100644 quantum/keymap_extras/sendstring_estonian.h
diff --git a/quantum/keymap_extras/keymap_estonian.h b/quantum/keymap_extras/keymap_estonian.h
new file mode 100644
index 0000000000..e806c51fed
--- /dev/null
+++ b/quantum/keymap_extras/keymap_estonian.h
@@ -0,0 +1,155 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ˇ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ü │ Õ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define EE_CARN KC_GRV // ˇ (dead)
+#define EE_1 KC_1 // 1
+#define EE_2 KC_2 // 2
+#define EE_3 KC_3 // 3
+#define EE_4 KC_4 // 4
+#define EE_5 KC_5 // 5
+#define EE_6 KC_6 // 6
+#define EE_7 KC_7 // 7
+#define EE_8 KC_8 // 8
+#define EE_9 KC_9 // 9
+#define EE_0 KC_0 // 0
+#define EE_PLUS KC_MINS // +
+#define EE_ACUT KC_EQL // ´ (dead)
+// Row 2
+#define EE_Q KC_Q // Q
+#define EE_W KC_W // W
+#define EE_E KC_E // E
+#define EE_R KC_R // R
+#define EE_T KC_T // T
+#define EE_Y KC_Y // Y
+#define EE_U KC_U // U
+#define EE_I KC_I // I
+#define EE_O KC_O // O
+#define EE_P KC_P // P
+#define EE_UDIA KC_LBRC // Ü
+#define EE_OTIL KC_RBRC // Õ
+// Row 3
+#define EE_A KC_A // A
+#define EE_S KC_S // S
+#define EE_D KC_D // D
+#define EE_F KC_F // F
+#define EE_G KC_G // G
+#define EE_H KC_H // H
+#define EE_J KC_J // J
+#define EE_K KC_K // K
+#define EE_L KC_L // L
+#define EE_ODIA KC_SCLN // Ö
+#define EE_ADIA KC_QUOT // Ä
+#define EE_QUOT KC_NUHS // '
+// Row 4
+#define EE_LABK KC_NUBS // <
+#define EE_Z KC_Z // Z
+#define EE_X KC_X // X
+#define EE_C KC_C // C
+#define EE_V KC_V // V
+#define EE_B KC_B // B
+#define EE_N KC_N // N
+#define EE_M KC_M // M
+#define EE_COMM KC_COMM // ,
+#define EE_DOT KC_DOT // .
+#define EE_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ~ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define EE_TILD S(EE_CARN) // ~ (dead)
+#define EE_EXLM S(EE_1) // !
+#define EE_DQUO S(EE_2) // "
+#define EE_HASH S(EE_3) // #
+#define EE_CURR S(EE_4) // ¤
+#define EE_PERC S(EE_5) // %
+#define EE_AMPR S(EE_6) // &
+#define EE_SLSH S(EE_7) // /
+#define EE_LPRN S(EE_8) // (
+#define EE_RPRN S(EE_9) // )
+#define EE_EQL S(EE_0) // =
+#define EE_QUES S(EE_PLUS) // ?
+#define EE_GRV S(EE_ACUT) // ` (dead)
+// Row 3
+#define EE_ASTR S(EE_QUOT) // *
+// Row 4
+#define EE_RABK S(EE_LABK) // >
+#define EE_SCLN S(EE_COMM) // ;
+#define EE_COLN S(EE_DOT) // :
+#define EE_UNDS S(EE_MINS) // _
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ § │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ š │ │ │ │ │ │ │ │ │ ^ │ ½ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ | │ ž │ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define EE_AT ALGR(EE_2) // @
+#define EE_PND ALGR(EE_3) // £
+#define EE_DLR ALGR(EE_4) // $
+#define EE_EURO ALGR(EE_5) // €
+#define EE_LCBR ALGR(EE_7) // {
+#define EE_LBRC ALGR(EE_8) // [
+#define EE_RBRC ALGR(EE_9) // ]
+#define EE_RCBR ALGR(EE_0) // }
+#define EE_BSLS ALGR(EE_PLUS) // (backslash)
+// Row 2
+#define EE_SECT ALGR(EE_OTIL) // §
+// Row 3
+#define EE_SCAR ALGR(EE_S) // š
+#define EE_CIRC ALGR(EE_ADIA) // ^ (dead)
+#define EE_HALF ALGR(EE_QUOT) // ½
+// Row 4
+#define EE_PIPE ALGR(EE_LABK) // |
+#define EE_ZCAR ALGR(EE_Z) // ž
diff --git a/quantum/keymap_extras/sendstring_estonian.h b/quantum/keymap_extras/sendstring_estonian.h
new file mode 100644
index 0000000000..24d853fb59
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_estonian.h
@@ -0,0 +1,100 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Estonian layouts
+
+#pragma once
+
+#include "keymap_estonian.h"
+#include "quantum"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 1, 0, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, EE_1, EE_2, EE_3, EE_4, EE_5, EE_6, EE_QUOT,
+ // ( ) * + , - . /
+ EE_8, EE_9, EE_QUOT, EE_PLUS, EE_COMM, EE_MINS, EE_DOT, EE_7,
+ // 0 1 2 3 4 5 6 7
+ EE_0, EE_1, EE_2, EE_3, EE_4, EE_5, EE_6, EE_7,
+ // 8 9 : ; < = > ?
+ EE_8, EE_9, EE_DOT, EE_COMM, EE_LABK, EE_0, EE_LABK, EE_PLUS,
+ // @ A B C D E F G
+ EE_2, EE_A, EE_B, EE_C, EE_D, EE_E, EE_F, EE_G,
+ // H I J K L M N O
+ EE_H, EE_I, EE_J, EE_K, EE_L, EE_M, EE_N, EE_O,
+ // P Q R S T U V W
+ EE_P, EE_Q, EE_R, EE_S, EE_T, EE_U, EE_V, EE_W,
+ // X Y Z [ \ ] ^ _
+ EE_X, EE_Y, EE_Z, EE_8, EE_PLUS, EE_9, EE_ADIA, EE_MINS,
+ // ` a b c d e f g
+ EE_ACUT, EE_A, EE_B, EE_C, EE_D, EE_E, EE_F, EE_G,
+ // h i j k l m n o
+ EE_H, EE_I, EE_J, EE_K, EE_L, EE_M, EE_N, EE_O,
+ // p q r s t u v w
+ EE_P, EE_Q, EE_R, EE_S, EE_T, EE_U, EE_V, EE_W,
+ // x y z { | } ~ DEL
+ EE_X, EE_Y, EE_Z, EE_7, EE_LABK, EE_0, EE_CARN, KC_DEL
+};
From 4d76d85d7bef735a56f9e1e275c89f4beaf52a64 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Fri, 27 Mar 2020 00:11:32 +1100
Subject: [PATCH 32/47] V-USB: Use manufacturer and product strings from
config.h (#7797)
* V-USB: Use manufacturer and product strings from config.h
* Update board configs
---
keyboards/ares/config.h | 2 +-
keyboards/ares/usbconfig.h | 35 ++---------
keyboards/bfake/config.h | 4 +-
keyboards/bfake/usbconfig.h | 35 ++---------
keyboards/chidori/usbconfig.h | 35 ++---------
.../coseyfannitutti/discipad/usbconfig.h | 35 ++---------
.../coseyfannitutti/discipline/usbconfig.h | 35 ++---------
.../coseyfannitutti/mysterium/usbconfig.h | 35 ++---------
keyboards/coseyfannitutti/romeo/usbconfig.h | 35 ++---------
keyboards/db/db63/config.h | 2 -
keyboards/db/db63/usbconfig.h | 35 ++---------
keyboards/donutcables/budget96/usbconfig.h | 35 ++---------
keyboards/eve/meteor/usbconfig.h | 35 ++---------
keyboards/exclusive/e6v2/le_bmc/config.h | 4 +-
keyboards/exclusive/e6v2/le_bmc/usbconfig.h | 35 ++---------
keyboards/exclusive/e6v2/oe_bmc/config.h | 4 +-
keyboards/exclusive/e6v2/oe_bmc/usbconfig.h | 35 ++---------
keyboards/exent/usbconfig.h | 35 ++---------
keyboards/facew/config.h | 4 +-
keyboards/facew/usbconfig.h | 35 ++---------
keyboards/ft/mars80/usbconfig.h | 35 ++---------
keyboards/gingham/usbconfig.h | 35 ++---------
keyboards/gray_studio/hb85/usbconfig.h | 35 ++---------
keyboards/handwired/hnah40/config.h | 2 +-
keyboards/handwired/hnah40/usbconfig.h | 35 ++---------
keyboards/j80/usbconfig.h | 35 ++---------
keyboards/jc65/v32a/config.h | 4 +-
keyboards/jc65/v32a/usbconfig.h | 35 ++---------
keyboards/jj40/config.h | 6 +-
keyboards/jj40/usbconfig.h | 35 ++---------
keyboards/jj4x4/config.h | 6 +-
keyboards/jj4x4/usbconfig.h | 35 ++---------
keyboards/jj50/config.h | 6 +-
keyboards/jj50/usbconfig.h | 35 ++---------
keyboards/kbdfans/kbdpad/mk1/config.h | 2 +-
keyboards/kbdfans/kbdpad/mk1/usbconfig.h | 35 ++---------
keyboards/keycapsss/plaid_pad/usbconfig.h | 35 ++---------
keyboards/kira80/usbconfig.h | 35 ++---------
keyboards/leeku/finger65/config.h | 2 +-
keyboards/leeku/finger65/usbconfig.h | 35 ++---------
keyboards/mechmini/v1/config.h | 2 -
keyboards/mechmini/v1/usbconfig.h | 35 ++---------
keyboards/mehkee96/config.h | 4 +-
keyboards/mehkee96/usbconfig.h | 35 ++---------
keyboards/mt40/config.h | 2 +-
keyboards/mt40/usbconfig.h | 35 ++---------
keyboards/panc60/config.h | 2 +-
keyboards/panc60/usbconfig.h | 35 ++---------
keyboards/pearl/usbconfig.h | 35 ++---------
keyboards/percent/canoe/config.h | 2 +-
keyboards/percent/canoe/usbconfig.h | 35 ++---------
keyboards/percent/skog/config.h | 2 +-
keyboards/percent/skog/usbconfig.h | 35 ++---------
keyboards/percent/skog_lite/config.h | 2 +-
keyboards/percent/skog_lite/usbconfig.h | 35 ++---------
keyboards/plaid/config.h | 2 +-
keyboards/plaid/usbconfig.h | 35 ++---------
keyboards/singa/usbconfig.h | 35 ++---------
keyboards/tartan/usbconfig.h | 35 ++---------
keyboards/tgr/alice/config.h | 4 +-
keyboards/tgr/alice/usbconfig.h | 35 ++---------
keyboards/tgr/jane/usbconfig.h | 35 ++---------
keyboards/unikorn/config.h | 4 +-
keyboards/unikorn/usbconfig.h | 35 ++---------
keyboards/winkeyless/bface/config.h | 6 +-
keyboards/winkeyless/bface/usbconfig.h | 35 ++---------
keyboards/winkeyless/bmini/config.h | 2 +-
keyboards/winkeyless/bmini/usbconfig.h | 35 ++---------
keyboards/winkeyless/bminiex/config.h | 4 +-
keyboards/winkeyless/bminiex/usbconfig.h | 35 ++---------
keyboards/ymd75/config.h | 5 +-
keyboards/ymd75/usbconfig.h | 35 ++---------
keyboards/ymd96/config.h | 5 +-
keyboards/ymd96/usbconfig.h | 35 ++---------
keyboards/ymdk/bface/config.h | 4 +-
keyboards/ymdk/bface/usbconfig.h | 35 ++---------
keyboards/ymdk_np21/config.h | 6 +-
keyboards/ymdk_np21/usbconfig.h | 35 ++---------
tmk_core/protocol/vusb/vusb.c | 58 +++++++++++++++++++
tmk_core/protocol/vusb/vusb.h | 12 ++++
80 files changed, 352 insertions(+), 1504 deletions(-)
diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h
index 4bfe0867b1..ffbe456050 100644
--- a/keyboards/ares/config.h
+++ b/keyboards/ares/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
#define MANUFACTURER LSJ
-#define PRODUCT QMK Firmware for Ares
+#define PRODUCT Ares
#define RGBLED_NUM 16
diff --git a/keyboards/ares/usbconfig.h b/keyboards/ares/usbconfig.h
index 7c85ff22c9..ad9c95c5d7 100644
--- a/keyboards/ares/usbconfig.h
+++ b/keyboards/ares/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'L', 'S', 'J'
-#define USB_CFG_VENDOR_NAME_LEN 3
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'A', 'r', 'e', 's'
-#define USB_CFG_DEVICE_NAME_LEN 4
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/bfake/config.h b/keyboards/bfake/config.h
index 86faba21d0..6c4710a9ec 100644
--- a/keyboards/bfake/config.h
+++ b/keyboards/bfake/config.h
@@ -22,8 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER NotActuallyWinkeyless
-#define PRODUCT b.fake
+#define MANUFACTURER NotWinkeyless
+#define PRODUCT B.fake
#define RGBLED_NUM 16
diff --git a/keyboards/bfake/usbconfig.h b/keyboards/bfake/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/bfake/usbconfig.h
+++ b/keyboards/bfake/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/chidori/usbconfig.h b/keyboards/chidori/usbconfig.h
index 48b72de93b..ee040d16b7 100644
--- a/keyboards/chidori/usbconfig.h
+++ b/keyboards/chidori/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'K','a','g','i','z','a','r','a','y','a'
-#define USB_CFG_VENDOR_NAME_LEN 10
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'C', 'h', 'i', 'd', 'o', 'r', 'i'
-#define USB_CFG_DEVICE_NAME_LEN 7
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/coseyfannitutti/discipad/usbconfig.h b/keyboards/coseyfannitutti/discipad/usbconfig.h
index 510658b447..ee040d16b7 100644
--- a/keyboards/coseyfannitutti/discipad/usbconfig.h
+++ b/keyboards/coseyfannitutti/discipad/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'c','o','s','e','y','f','a','n','n','i','t','u','t','t','i'
-#define USB_CFG_VENDOR_NAME_LEN 15
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'D','I','S','C','I','P','A','D'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER '0'
-#define USB_CFG_SERIAL_NUMBER_LEN 1
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/coseyfannitutti/discipline/usbconfig.h b/keyboards/coseyfannitutti/discipline/usbconfig.h
index da3ed46079..ee040d16b7 100644
--- a/keyboards/coseyfannitutti/discipline/usbconfig.h
+++ b/keyboards/coseyfannitutti/discipline/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'c','o','s','e','y','f','a','n','n','i','t','u','t','t','i'
-#define USB_CFG_VENDOR_NAME_LEN 15
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'D','I','S','C','I','P','L','I','N','E'
-#define USB_CFG_DEVICE_NAME_LEN 10
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER '0'
-#define USB_CFG_SERIAL_NUMBER_LEN 1
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/coseyfannitutti/mysterium/usbconfig.h b/keyboards/coseyfannitutti/mysterium/usbconfig.h
index 809b912456..bec7cc2959 100644
--- a/keyboards/coseyfannitutti/mysterium/usbconfig.h
+++ b/keyboards/coseyfannitutti/mysterium/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'c','o','s','e','y','f','a','n','n','i','t','u','t','t','i'
-#define USB_CFG_VENDOR_NAME_LEN 15
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'M','Y','S','T','E','R','I','U','M'
-#define USB_CFG_DEVICE_NAME_LEN 9
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER '0'
-#define USB_CFG_SERIAL_NUMBER_LEN 1
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/coseyfannitutti/romeo/usbconfig.h b/keyboards/coseyfannitutti/romeo/usbconfig.h
index 36926d9a7e..ee040d16b7 100644
--- a/keyboards/coseyfannitutti/romeo/usbconfig.h
+++ b/keyboards/coseyfannitutti/romeo/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'c','o','s','e','y','f','a','n','n','i','t','u','t','t','i'
-#define USB_CFG_VENDOR_NAME_LEN 15
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'R','O','M','E','O'
-#define USB_CFG_DEVICE_NAME_LEN 5
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER '0'
-#define USB_CFG_SERIAL_NUMBER_LEN 1
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/db/db63/config.h b/keyboards/db/db63/config.h
index 4247840173..85625b7200 100644
--- a/keyboards/db/db63/config.h
+++ b/keyboards/db/db63/config.h
@@ -20,8 +20,6 @@ along with this program. If not, see .
#define VENDOR_ID 0xFAAD
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// You can edit those at usbconfig.h about line 250. These values will
-// unforunatly be ignored so far
#define MANUFACTURER HNB
#define PRODUCT DB63v1 Hotswap
diff --git a/keyboards/db/db63/usbconfig.h b/keyboards/db/db63/usbconfig.h
index 0dfe8b3baf..a3aa0f7c81 100644
--- a/keyboards/db/db63/usbconfig.h
+++ b/keyboards/db/db63/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'H', 'N', 'B'
-#define USB_CFG_VENDOR_NAME_LEN 3
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'D', 'B', '6', '3', 'H', 'S'
-#define USB_CFG_DEVICE_NAME_LEN 6
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/donutcables/budget96/usbconfig.h b/keyboards/donutcables/budget96/usbconfig.h
index 03ec48972e..d0454d04c4 100644
--- a/keyboards/donutcables/budget96/usbconfig.h
+++ b/keyboards/donutcables/budget96/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'D', 'o', 'n', 'u', 't', 'C', 'a', 'b', 'l', 'e', 's'
-#define USB_CFG_VENDOR_NAME_LEN 11
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'b', 'u', 'd', 'g', 'e', 't', '9', '6'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/eve/meteor/usbconfig.h b/keyboards/eve/meteor/usbconfig.h
index 9b045607f1..5fad0b3a54 100644
--- a/keyboards/eve/meteor/usbconfig.h
+++ b/keyboards/eve/meteor/usbconfig.h
@@ -220,31 +220,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -326,11 +301,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/exclusive/e6v2/le_bmc/config.h b/keyboards/exclusive/e6v2/le_bmc/config.h
index ca680f5029..198e73265d 100644
--- a/keyboards/exclusive/e6v2/le_bmc/config.h
+++ b/keyboards/exclusive/e6v2/le_bmc/config.h
@@ -21,8 +21,8 @@ along with this program. If not, see .
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER exclusive
-#define PRODUCT e6v2 le bmc
+#define MANUFACTURER Exclusive / E-Team
+#define PRODUCT E6-V2 LE BMC
#define DESCRIPTION A custom 60% keyboard
/* key matrix size */
diff --git a/keyboards/exclusive/e6v2/le_bmc/usbconfig.h b/keyboards/exclusive/e6v2/le_bmc/usbconfig.h
index 7a1471a06f..a3aa0f7c81 100644
--- a/keyboards/exclusive/e6v2/le_bmc/usbconfig.h
+++ b/keyboards/exclusive/e6v2/le_bmc/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'E', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e'
-#define USB_CFG_VENDOR_NAME_LEN 9
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'E', '6', 'V', '2'
-#define USB_CFG_DEVICE_NAME_LEN 4
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/exclusive/e6v2/oe_bmc/config.h b/keyboards/exclusive/e6v2/oe_bmc/config.h
index a6b56ba003..c26006b6a9 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/config.h
+++ b/keyboards/exclusive/e6v2/oe_bmc/config.h
@@ -21,8 +21,8 @@ along with this program. If not, see .
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER exclusive
-#define PRODUCT e6v2 oe bmc
+#define MANUFACTURER Exclusive / E-Team
+#define PRODUCT E6-V2 OE BMC
#define DESCRIPTION A custom 60% keyboard
/* key matrix size */
diff --git a/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h b/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h
index 7a1471a06f..a3aa0f7c81 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h
+++ b/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'E', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e'
-#define USB_CFG_VENDOR_NAME_LEN 9
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'E', '6', 'V', '2'
-#define USB_CFG_DEVICE_NAME_LEN 4
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/exent/usbconfig.h b/keyboards/exent/usbconfig.h
index 83ad06544d..4acb6b281d 100644
--- a/keyboards/exent/usbconfig.h
+++ b/keyboards/exent/usbconfig.h
@@ -220,31 +220,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -326,11 +301,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/facew/config.h b/keyboards/facew/config.h
index be442548d0..ab9130b804 100644
--- a/keyboards/facew/config.h
+++ b/keyboards/facew/config.h
@@ -22,8 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER NotActuallyWinkeyless
-#define PRODUCT facew
+#define MANUFACTURER SPRiT
+#define PRODUCT FaceW
#define RGBLED_NUM 16
diff --git a/keyboards/facew/usbconfig.h b/keyboards/facew/usbconfig.h
index 47755fa8c1..a3aa0f7c81 100644
--- a/keyboards/facew/usbconfig.h
+++ b/keyboards/facew/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'S', 'p', 'r', 'i', 't'
-#define USB_CFG_VENDOR_NAME_LEN 5
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'F', 'a', 'c', 'e', 'W'
-#define USB_CFG_DEVICE_NAME_LEN 5
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/ft/mars80/usbconfig.h b/keyboards/ft/mars80/usbconfig.h
index 4430d9e67d..a3aa0f7c81 100644
--- a/keyboards/ft/mars80/usbconfig.h
+++ b/keyboards/ft/mars80/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'f', 't'
-#define USB_CFG_VENDOR_NAME_LEN 2
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'm', 'a', 'r', 's', '8', '0'
-#define USB_CFG_DEVICE_NAME_LEN 6
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/gingham/usbconfig.h b/keyboards/gingham/usbconfig.h
index 3c7aa0da06..ee040d16b7 100644
--- a/keyboards/gingham/usbconfig.h
+++ b/keyboards/gingham/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'Y','i','a','n','c','a','r','-','D','e', 's', 'i', 'g', 'n', 's'
-#define USB_CFG_VENDOR_NAME_LEN 15
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'G', 'i', 'n', 'g', 'h', 'a', 'm'
-#define USB_CFG_DEVICE_NAME_LEN 7
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER '0'
-#define USB_CFG_SERIAL_NUMBER_LEN 1
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/gray_studio/hb85/usbconfig.h b/keyboards/gray_studio/hb85/usbconfig.h
index 186e2dca35..a3aa0f7c81 100644
--- a/keyboards/gray_studio/hb85/usbconfig.h
+++ b/keyboards/gray_studio/hb85/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'G', 'r', 'a', 'y', ' ', 'S', 't', 'u', 'd', 'i', 'o'
-#define USB_CFG_VENDOR_NAME_LEN 11
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'H', 'B', '8', '5'
-#define USB_CFG_DEVICE_NAME_LEN 4
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/handwired/hnah40/config.h b/keyboards/handwired/hnah40/config.h
index 3d3c05fd42..9583c4c38e 100644
--- a/keyboards/handwired/hnah40/config.h
+++ b/keyboards/handwired/hnah40/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0002
#define MANUFACTURER HnahKB
-#define PRODUCT hnah40
+#define PRODUCT Hnah40
#define DESCRIPTION Custom 40% PCB
/* key matrix size */
diff --git a/keyboards/handwired/hnah40/usbconfig.h b/keyboards/handwired/hnah40/usbconfig.h
index b26a3c7d67..ee040d16b7 100644
--- a/keyboards/handwired/hnah40/usbconfig.h
+++ b/keyboards/handwired/hnah40/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'H','n','a','h','K','B'
-#define USB_CFG_VENDOR_NAME_LEN 6
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'H', 'n', 'a', 'h', '4', '0'
-#define USB_CFG_DEVICE_NAME_LEN 6
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER 'H','n','a','h','K','B'
-#define USB_CFG_SERIAL_NUMBER_LEN 6
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/j80/usbconfig.h b/keyboards/j80/usbconfig.h
index 0c377f4b7e..4acb6b281d 100644
--- a/keyboards/j80/usbconfig.h
+++ b/keyboards/j80/usbconfig.h
@@ -220,31 +220,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'J', 'E', 'R'
-#define USB_CFG_VENDOR_NAME_LEN 3
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'J', '8', '0'
-#define USB_CFG_DEVICE_NAME_LEN 3
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -326,11 +301,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/jc65/v32a/config.h b/keyboards/jc65/v32a/config.h
index 11f39a5e02..6cf71ab3af 100644
--- a/keyboards/jc65/v32a/config.h
+++ b/keyboards/jc65/v32a/config.h
@@ -22,8 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x1234
#define PRODUCT_ID 0x5679
#define DEVICE_VER 0x0200
-#define MANUFACTURER winkeyless.kr
-#define PRODUCT JC65 PS2AVRGB
+#define MANUFACTURER RAMA
+#define PRODUCT JC65 BMC
/* matrix size */
#define MATRIX_ROWS 7
diff --git a/keyboards/jc65/v32a/usbconfig.h b/keyboards/jc65/v32a/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/jc65/v32a/usbconfig.h
+++ b/keyboards/jc65/v32a/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/jj40/config.h b/keyboards/jj40/config.h
index 3138023bb7..9a1eadb784 100644
--- a/keyboards/jj40/config.h
+++ b/keyboards/jj40/config.h
@@ -19,10 +19,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
-#define MANUFACTURER Kprepublic
-#define PRODUCT jj40
+#define MANUFACTURER KPrepublic
+#define PRODUCT JJ40
/* matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/jj40/usbconfig.h b/keyboards/jj40/usbconfig.h
index 4599c03dc9..ad9c95c5d7 100644
--- a/keyboards/jj40/usbconfig.h
+++ b/keyboards/jj40/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'j', 'j', '4', '0'
-#define USB_CFG_DEVICE_NAME_LEN 4
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/jj4x4/config.h b/keyboards/jj4x4/config.h
index d8ccef3ad7..8c5b1988d6 100644
--- a/keyboards/jj4x4/config.h
+++ b/keyboards/jj4x4/config.h
@@ -22,10 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
-#define MANUFACTURER Kprepublic
-#define PRODUCT jj4x4
+#define MANUFACTURER KPrepublic
+#define PRODUCT JJ4x4
/* matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/jj4x4/usbconfig.h b/keyboards/jj4x4/usbconfig.h
index 96bf2eda8f..ad9c95c5d7 100644
--- a/keyboards/jj4x4/usbconfig.h
+++ b/keyboards/jj4x4/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'j', 'j', '4', 'x', '4'
-#define USB_CFG_DEVICE_NAME_LEN 5
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/jj50/config.h b/keyboards/jj50/config.h
index 2f0e98d531..8453f55880 100644
--- a/keyboards/jj50/config.h
+++ b/keyboards/jj50/config.h
@@ -25,10 +25,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
-#define MANUFACTURER kprepublic
-#define PRODUCT jj50
+#define MANUFACTURER KPrepublic
+#define PRODUCT JJ50
#define DESCRIPTION Preonic-like clone
/* matrix size */
diff --git a/keyboards/jj50/usbconfig.h b/keyboards/jj50/usbconfig.h
index b05fc975e7..ad9c95c5d7 100644
--- a/keyboards/jj50/usbconfig.h
+++ b/keyboards/jj50/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'K', 'P', 'R', 'e', 'p', 'u', 'b', 'l', 'i', 'c'
-#define USB_CFG_VENDOR_NAME_LEN 10
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'J','J','5','0',' ','K','e','y','b','o','a','r','d'
-#define USB_CFG_DEVICE_NAME_LEN 13
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/kbdfans/kbdpad/mk1/config.h b/keyboards/kbdfans/kbdpad/mk1/config.h
index d41ec6001e..1646a1af1f 100644
--- a/keyboards/kbdfans/kbdpad/mk1/config.h
+++ b/keyboards/kbdfans/kbdpad/mk1/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
#define MANUFACTURER KBDfans
-#define PRODUCT KBDPAD-MKI
+#define PRODUCT KBDPAD Mk. I
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/kbdfans/kbdpad/mk1/usbconfig.h b/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
index e65d210ace..a3aa0f7c81 100644
--- a/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
+++ b/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/keycapsss/plaid_pad/usbconfig.h b/keyboards/keycapsss/plaid_pad/usbconfig.h
index e208e99f2e..0cacbd724d 100644
--- a/keyboards/keycapsss/plaid_pad/usbconfig.h
+++ b/keyboards/keycapsss/plaid_pad/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'K','e','y','c','a','p','s','s','s'
-#define USB_CFG_VENDOR_NAME_LEN 9
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'P', 'l', 'a', 'i', 'd', '-', 'P', 'a', 'd'
-#define USB_CFG_DEVICE_NAME_LEN 9
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/kira80/usbconfig.h b/keyboards/kira80/usbconfig.h
index 33030c8316..ad9c95c5d7 100644
--- a/keyboards/kira80/usbconfig.h
+++ b/keyboards/kira80/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'E', 'V', 'E'
-#define USB_CFG_VENDOR_NAME_LEN 3
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'K', 'i', 'r', 'a', '8', '0'
-#define USB_CFG_DEVICE_NAME_LEN 6
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/leeku/finger65/config.h b/keyboards/leeku/finger65/config.h
index 584db4ad31..dcf1aad65b 100644
--- a/keyboards/leeku/finger65/config.h
+++ b/keyboards/leeku/finger65/config.h
@@ -24,7 +24,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x6050
#define DEVICE_VER 0x0100
#define MANUFACTURER LeeKu
-#define PRODUCT L3
+#define PRODUCT Finger65
#define DESCRIPTION QMK keyboard firmware for L3
#define RGBLED_NUM 12
diff --git a/keyboards/leeku/finger65/usbconfig.h b/keyboards/leeku/finger65/usbconfig.h
index 48be890468..12e49e0ee1 100644
--- a/keyboards/leeku/finger65/usbconfig.h
+++ b/keyboards/leeku/finger65/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'L', 'e', 'e', 'k', 'u'
-#define USB_CFG_VENDOR_NAME_LEN 5
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'F', 'i', 'n', 'g', 'e', 'r', '6', '5'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -335,11 +310,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
diff --git a/keyboards/mechmini/v1/config.h b/keyboards/mechmini/v1/config.h
index 80a79bf869..0df0066f15 100644
--- a/keyboards/mechmini/v1/config.h
+++ b/keyboards/mechmini/v1/config.h
@@ -22,8 +22,6 @@ along with this program. If not, see .
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0xCA40
#define DEVICE_VER 0x0001
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
#define MANUFACTURER MECHKEYS
#define PRODUCT Mechmini
#define DESCRIPTION 40% modular keyboard
diff --git a/keyboards/mechmini/v1/usbconfig.h b/keyboards/mechmini/v1/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/mechmini/v1/usbconfig.h
+++ b/keyboards/mechmini/v1/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/mehkee96/config.h b/keyboards/mehkee96/config.h
index afc9d0a7b1..dc8c593ada 100644
--- a/keyboards/mehkee96/config.h
+++ b/keyboards/mehkee96/config.h
@@ -6,8 +6,8 @@
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER mehkee
-#define PRODUCT 96kee
+#define MANUFACTURER Mehkee
+#define PRODUCT 96KEE
/* matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/mehkee96/usbconfig.h b/keyboards/mehkee96/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/mehkee96/usbconfig.h
+++ b/keyboards/mehkee96/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/mt40/config.h b/keyboards/mt40/config.h
index 5e3eaf935b..3efa18292b 100644
--- a/keyboards/mt40/config.h
+++ b/keyboards/mt40/config.h
@@ -27,7 +27,7 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER ThomasDehaeze
-#define PRODUCT mt40
+#define PRODUCT MT40
#define DESCRIPTION A Planck clone
diff --git a/keyboards/mt40/usbconfig.h b/keyboards/mt40/usbconfig.h
index e1f5f2ea42..ad9c95c5d7 100644
--- a/keyboards/mt40/usbconfig.h
+++ b/keyboards/mt40/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'T', 'h', 'o', 'm', 'a', 's', 'D', 'e', 'h', 'a', 'e', 'z', 'e'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'c', 'u', 's', 't', 'o', 'm', '4', '8'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/panc60/config.h b/keyboards/panc60/config.h
index b3bcdc9733..002ff7cf96 100644
--- a/keyboards/panc60/config.h
+++ b/keyboards/panc60/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
#define MANUFACTURER Panc Interactive
-#define PRODUCT panc60
+#define PRODUCT Panc60
#define RGBLED_NUM 12
diff --git a/keyboards/panc60/usbconfig.h b/keyboards/panc60/usbconfig.h
index e65d210ace..a3aa0f7c81 100644
--- a/keyboards/panc60/usbconfig.h
+++ b/keyboards/panc60/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/pearl/usbconfig.h b/keyboards/pearl/usbconfig.h
index e65d210ace..a3aa0f7c81 100644
--- a/keyboards/pearl/usbconfig.h
+++ b/keyboards/pearl/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h
index b6cc5df237..c6720ea16d 100644
--- a/keyboards/percent/canoe/config.h
+++ b/keyboards/percent/canoe/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER NotActuallyPercent
+#define MANUFACTURER Percent Studios
#define PRODUCT CANOE
#define RGBLED_NUM 2
diff --git a/keyboards/percent/canoe/usbconfig.h b/keyboards/percent/canoe/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/percent/canoe/usbconfig.h
+++ b/keyboards/percent/canoe/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/percent/skog/config.h b/keyboards/percent/skog/config.h
index cbfb2b6a56..099de6da21 100644
--- a/keyboards/percent/skog/config.h
+++ b/keyboards/percent/skog/config.h
@@ -21,7 +21,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER Percent
+#define MANUFACTURER Percent Studios
#define PRODUCT Skog TKL
/* matrix size */
diff --git a/keyboards/percent/skog/usbconfig.h b/keyboards/percent/skog/usbconfig.h
index 3a06286588..ad9c95c5d7 100644
--- a/keyboards/percent/skog/usbconfig.h
+++ b/keyboards/percent/skog/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'P','e','r','c','e','n','t'
-#define USB_CFG_VENDOR_NAME_LEN 7
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'S','k','o','g',' ','T','K','L'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/percent/skog_lite/config.h b/keyboards/percent/skog_lite/config.h
index a3d4a225f1..625effca86 100644
--- a/keyboards/percent/skog_lite/config.h
+++ b/keyboards/percent/skog_lite/config.h
@@ -22,7 +22,7 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER Percent
+#define MANUFACTURER Percent Studios
#define PRODUCT Skog Lite
#define RGBLED_NUM 18
diff --git a/keyboards/percent/skog_lite/usbconfig.h b/keyboards/percent/skog_lite/usbconfig.h
index e65d210ace..a3aa0f7c81 100644
--- a/keyboards/percent/skog_lite/usbconfig.h
+++ b/keyboards/percent/skog_lite/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/plaid/config.h b/keyboards/plaid/config.h
index 8005df2ce9..4d7bedee5f 100644
--- a/keyboards/plaid/config.h
+++ b/keyboards/plaid/config.h
@@ -25,7 +25,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x27db
#define DEVICE_VER 0x0002
#define MANUFACTURER dm9records
-#define PRODUCT plaid
+#define PRODUCT Plaid
#define DESCRIPTION 12x4 ortholinear keyboard with through hole components
/* key matrix size */
diff --git a/keyboards/plaid/usbconfig.h b/keyboards/plaid/usbconfig.h
index ba48a32649..ee040d16b7 100644
--- a/keyboards/plaid/usbconfig.h
+++ b/keyboards/plaid/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'd','m','9','r','e','c','o','r','d','s'
-#define USB_CFG_VENDOR_NAME_LEN 10
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'P', 'l', 'a', 'i', 'd'
-#define USB_CFG_DEVICE_NAME_LEN 5
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER 'd','m','9','r','e','c','o','r','d','s','.','c','o','m',':','p','1'
-#define USB_CFG_SERIAL_NUMBER_LEN 17
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/singa/usbconfig.h b/keyboards/singa/usbconfig.h
index e65d210ace..a3aa0f7c81 100644
--- a/keyboards/singa/usbconfig.h
+++ b/keyboards/singa/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/tartan/usbconfig.h b/keyboards/tartan/usbconfig.h
index df896cfa91..0cacbd724d 100644
--- a/keyboards/tartan/usbconfig.h
+++ b/keyboards/tartan/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'd','m','9','r','e','c','o','r','d','s'
-#define USB_CFG_VENDOR_NAME_LEN 10
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'T', 'a', 'r', 't', 'a', 'n'
-#define USB_CFG_DEVICE_NAME_LEN 6
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-#define USB_CFG_SERIAL_NUMBER 'd','m','9','r','e','c','o','r','d','s','.','c','o','m',':','t','1'
-#define USB_CFG_SERIAL_NUMBER_LEN 17
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/tgr/alice/config.h b/keyboards/tgr/alice/config.h
index cf1f107a33..20f4c5970e 100644
--- a/keyboards/tgr/alice/config.h
+++ b/keyboards/tgr/alice/config.h
@@ -20,10 +20,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422E
#define DEVICE_VER 0x0200
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
#define MANUFACTURER TGR
-#define PRODUCT TGR Alice
+#define PRODUCT Alice
/* matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/tgr/alice/usbconfig.h b/keyboards/tgr/alice/usbconfig.h
index d2955d0621..ad9c95c5d7 100644
--- a/keyboards/tgr/alice/usbconfig.h
+++ b/keyboards/tgr/alice/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'T', 'G', 'R'
-#define USB_CFG_VENDOR_NAME_LEN 3
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'T', 'G', 'R', ' ', 'A', 'l', 'i', 'c', 'e'
-#define USB_CFG_DEVICE_NAME_LEN 9
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/tgr/jane/usbconfig.h b/keyboards/tgr/jane/usbconfig.h
index e65d210ace..a3aa0f7c81 100644
--- a/keyboards/tgr/jane/usbconfig.h
+++ b/keyboards/tgr/jane/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/unikorn/config.h b/keyboards/unikorn/config.h
index e6bdbe7f2f..c5c9b04663 100644
--- a/keyboards/unikorn/config.h
+++ b/keyboards/unikorn/config.h
@@ -22,8 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER Singa and TGR
-#define PRODUCT Unikorn 60
+#define MANUFACTURER Singa x TGR
+#define PRODUCT Unikorn60
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/unikorn/usbconfig.h b/keyboards/unikorn/usbconfig.h
index 3dcd1ccde7..a3aa0f7c81 100644
--- a/keyboards/unikorn/usbconfig.h
+++ b/keyboards/unikorn/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 's', 'i', 'n', 'g', 'a', 't', 'g', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 8
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'u', 'n', 'i', 'k', 'o', 'r', 'n'
-#define USB_CFG_DEVICE_NAME_LEN 7
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/winkeyless/bface/config.h b/keyboards/winkeyless/bface/config.h
index 68ecaafc1e..0ef8a42b6f 100644
--- a/keyboards/winkeyless/bface/config.h
+++ b/keyboards/winkeyless/bface/config.h
@@ -21,10 +21,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// You can edit those at usbconfig.h about line 250. These values will
-// unforunatly be ignored so far
-#define MANUFACTURER winkeyless.kr
-#define PRODUCT b.face
+#define MANUFACTURER Winkeyless
+#define PRODUCT B.face
/* matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/winkeyless/bface/usbconfig.h b/keyboards/winkeyless/bface/usbconfig.h
index 5ff26399b0..a3aa0f7c81 100644
--- a/keyboards/winkeyless/bface/usbconfig.h
+++ b/keyboards/winkeyless/bface/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'b', '.', 'f', 'a', 'c', 'e'
-#define USB_CFG_DEVICE_NAME_LEN 6
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/winkeyless/bmini/config.h b/keyboards/winkeyless/bmini/config.h
index 6d46cdecbe..ccce0b6c84 100644
--- a/keyboards/winkeyless/bmini/config.h
+++ b/keyboards/winkeyless/bmini/config.h
@@ -22,7 +22,7 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-#define MANUFACTURER winkeyless.kr
+#define MANUFACTURER Winkeyless
#define PRODUCT B.mini
#define RGBLED_NUM 16
diff --git a/keyboards/winkeyless/bmini/usbconfig.h b/keyboards/winkeyless/bmini/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/winkeyless/bmini/usbconfig.h
+++ b/keyboards/winkeyless/bmini/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/winkeyless/bminiex/config.h b/keyboards/winkeyless/bminiex/config.h
index 2da785214b..6e35c9e82b 100644
--- a/keyboards/winkeyless/bminiex/config.h
+++ b/keyboards/winkeyless/bminiex/config.h
@@ -22,8 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422E
#define DEVICE_VER 0x0200
-#define MANUFACTURER winkeyless.kr
-#define PRODUCT B.mini Ex
+#define MANUFACTURER Winkeyless
+#define PRODUCT B.mini EX
#define RGBLED_NUM 20
diff --git a/keyboards/winkeyless/bminiex/usbconfig.h b/keyboards/winkeyless/bminiex/usbconfig.h
index 85a915bb46..ad9c95c5d7 100644
--- a/keyboards/winkeyless/bminiex/usbconfig.h
+++ b/keyboards/winkeyless/bminiex/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/ymd75/config.h b/keyboards/ymd75/config.h
index ef7171cae6..8aa2bba41b 100644
--- a/keyboards/ymd75/config.h
+++ b/keyboards/ymd75/config.h
@@ -24,11 +24,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
#define MANUFACTURER YMDK
-#define PRODUCT ymd75 / mt84
+#define PRODUCT YMD75 / MT84
#define DESCRIPTION 75% Keyboard
/* matrix size */
diff --git a/keyboards/ymd75/usbconfig.h b/keyboards/ymd75/usbconfig.h
index 0e570b9ec1..ad9c95c5d7 100644
--- a/keyboards/ymd75/usbconfig.h
+++ b/keyboards/ymd75/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'Y', 'M', 'D', 'K'
-#define USB_CFG_VENDOR_NAME_LEN 4
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'Y','M','D','7','5',' ','K','e','y','b','o','a','r','d'
-#define USB_CFG_DEVICE_NAME_LEN 14
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/ymd96/config.h b/keyboards/ymd96/config.h
index ebb60242be..6f50c7324d 100644
--- a/keyboards/ymd96/config.h
+++ b/keyboards/ymd96/config.h
@@ -23,9 +23,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// Edit usbconfig.h to change these.
-#define MANUFACTURER ymdkey
-#define PRODUCT ymd96
+#define MANUFACTURER YMDK
+#define PRODUCT YMD96
/* matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/ymd96/usbconfig.h b/keyboards/ymd96/usbconfig.h
index 83613384d7..ad9c95c5d7 100644
--- a/keyboards/ymd96/usbconfig.h
+++ b/keyboards/ymd96/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'y','m','d','k','e','y'
-#define USB_CFG_VENDOR_NAME_LEN 6
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'y','m','d','9','6'
-#define USB_CFG_DEVICE_NAME_LEN 5
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/ymdk/bface/config.h b/keyboards/ymdk/bface/config.h
index 0c12c328ec..dfcfbcaa12 100644
--- a/keyboards/ymdk/bface/config.h
+++ b/keyboards/ymdk/bface/config.h
@@ -20,10 +20,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// You can edit those at usbconfig.h about line 250. These values will
-// unforunatly be ignored so far
#define MANUFACTURER YMDK
-#define PRODUCT bface
+#define PRODUCT B.face
/* matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/ymdk/bface/usbconfig.h b/keyboards/ymdk/bface/usbconfig.h
index 7768c5cae5..a3aa0f7c81 100644
--- a/keyboards/ymdk/bface/usbconfig.h
+++ b/keyboards/ymdk/bface/usbconfig.h
@@ -230,31 +230,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'Y', 'M', 'D', 'K'
-#define USB_CFG_VENDOR_NAME_LEN 4
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'b', 'f', 'a', 'c', 'e'
-#define USB_CFG_DEVICE_NAME_LEN 5
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -336,11 +311,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/keyboards/ymdk_np21/config.h b/keyboards/ymdk_np21/config.h
index 291e6a896b..3796634316 100644
--- a/keyboards/ymdk_np21/config.h
+++ b/keyboards/ymdk_np21/config.h
@@ -22,10 +22,8 @@ along with this program. If not, see .
#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
#define DEVICE_VER 0x0200
-// TODO: share these strings with usbconfig.h
-// Edit usbconfig.h to change these.
-#define MANUFACTURER ymdk
-#define PRODUCT np21
+#define MANUFACTURER YMDK
+#define PRODUCT NP21
/* matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/ymdk_np21/usbconfig.h b/keyboards/ymdk_np21/usbconfig.h
index 4599c03dc9..ad9c95c5d7 100644
--- a/keyboards/ymdk_np21/usbconfig.h
+++ b/keyboards/ymdk_np21/usbconfig.h
@@ -231,31 +231,6 @@ section at the end of this file).
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
/* Version number of the device: Minor number first, then major number.
*/
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'j', 'j', '4', '0'
-#define USB_CFG_DEVICE_NAME_LEN 4
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -337,11 +312,11 @@ section at the end of this file).
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index 79e8cf71b8..30c9708921 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -335,6 +335,10 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
};
#endif
+#ifndef SERIAL_NUMBER
+# define SERIAL_NUMBER 0
+#endif
+
#ifndef USB_MAX_POWER_CONSUMPTION
# define USB_MAX_POWER_CONSUMPTION 500
#endif
@@ -344,6 +348,40 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
# define USB_POLLING_INTERVAL_MS 1
#endif
+// clang-format off
+const PROGMEM usbStringDescriptor_t usbDescriptorStringZero = {
+ .header = {
+ .bLength = USB_STRING_LEN(1),
+ .bDescriptorType = USBDESCR_STRING
+ },
+ .bString = {0x0409} // US English
+};
+
+const PROGMEM usbStringDescriptor_t usbDescriptorStringManufacturer = {
+ .header = {
+ .bLength = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1),
+ .bDescriptorType = USBDESCR_STRING
+ },
+ .bString = LSTR(MANUFACTURER)
+};
+
+const PROGMEM usbStringDescriptor_t usbDescriptorStringProduct = {
+ .header = {
+ .bLength = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1),
+ .bDescriptorType = USBDESCR_STRING
+ },
+ .bString = LSTR(PRODUCT)
+};
+
+const PROGMEM usbStringDescriptor_t usbDescriptorStringSerial = {
+ .header = {
+ .bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1),
+ .bDescriptorType = USBDESCR_STRING
+ },
+ .bString = LSTR(SERIAL_NUMBER)
+};
+// clang-format on
+
/*
* Descriptor for compite device: Keyboard + Mouse
*
@@ -457,6 +495,26 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
len = sizeof(usbDescriptorConfiguration);
break;
#endif
+ case USBDESCR_STRING:
+ switch (rq->wValue.bytes[0]) {
+ case 0:
+ usbMsgPtr = (unsigned char *)&usbDescriptorStringZero;
+ len = usbDescriptorStringZero.header.bLength;
+ break;
+ case 1: // iManufacturer
+ usbMsgPtr = (unsigned char *)&usbDescriptorStringManufacturer;
+ len = usbDescriptorStringManufacturer.header.bLength;
+ break;
+ case 2: // iProduct
+ usbMsgPtr = (unsigned char *)&usbDescriptorStringProduct;
+ len = usbDescriptorStringProduct.header.bLength;
+ break;
+ case 3: // iSerialNumber
+ usbMsgPtr = (unsigned char *)&usbDescriptorStringSerial;
+ len = usbDescriptorStringSerial.header.bLength;
+ break;
+ }
+ break;
case USBDESCR_HID:
switch (rq->wValue.bytes[0]) {
case 0:
diff --git a/tmk_core/protocol/vusb/vusb.h b/tmk_core/protocol/vusb/vusb.h
index 7e3f8c394d..cee07207a3 100644
--- a/tmk_core/protocol/vusb/vusb.h
+++ b/tmk_core/protocol/vusb/vusb.h
@@ -20,6 +20,18 @@ along with this program. If not, see .
#include "host_driver.h"
+typedef struct usbDescriptorHeader {
+ uchar bLength;
+ uchar bDescriptorType;
+} __attribute__((packed)) usbDescriptorHeader_t;
+
+typedef struct usbStringDescriptor {
+ usbDescriptorHeader_t header;
+ int bString[];
+} __attribute__((packed)) usbStringDescriptor_t;
+
+#define USB_STRING_LEN(s) (sizeof(usbDescriptorHeader_t) + ((s) << 1))
+
host_driver_t *vusb_driver(void);
void vusb_transfer_keyboard(void);
From 11f12d386bb0074835a58b692370fc46f7024b6f Mon Sep 17 00:00:00 2001
From: fauxpark
Date: Thu, 26 Mar 2020 23:29:47 +1100
Subject: [PATCH 33/47] Fix wrong python-pip package for MSYS setup
instructions
---
docs/newbs_getting_started.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md
index 01d9c9d09e..67dd5290c3 100644
--- a/docs/newbs_getting_started.md
+++ b/docs/newbs_getting_started.md
@@ -50,7 +50,7 @@ After opening a new MSYS2 MinGW 64-bit terminal, make sure `pacman` is up to dat
You may be asked to close and reopen the window. Do this and keep running the above command until it says `there is nothing to do`. Then run the following:
- pacman -S git python3-pip
+ pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip
python3 -m pip install qmk
### macOS
From c077300e19a9c788b3d30bc65c1198fc88de3d5b Mon Sep 17 00:00:00 2001
From: Jakub Darowski
Date: Thu, 26 Mar 2020 19:03:37 +0100
Subject: [PATCH 34/47] [Keymap] BM16a stock layout (#8547)
* Stock layout
* Added the default readme
* Update keyboards/bm16a/keymaps/stock/keymap.c
Removed trailing backslashes from layouts
* Removed redundant files, renamed stock keymap and changed readme
---
keyboards/bm16a/keymaps/factory/keymap.c | 37 +++++++++++++++++++++++
keyboards/bm16a/keymaps/factory/readme.md | 4 +++
2 files changed, 41 insertions(+)
create mode 100644 keyboards/bm16a/keymaps/factory/keymap.c
create mode 100644 keyboards/bm16a/keymaps/factory/readme.md
diff --git a/keyboards/bm16a/keymaps/factory/keymap.c b/keyboards/bm16a/keymaps/factory/keymap.c
new file mode 100644
index 0000000000..8a01ff016d
--- /dev/null
+++ b/keyboards/bm16a/keymaps/factory/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2019
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE = 0,
+ _FN1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_ortho_4x4(
+ KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT, KC_SPC, MO(_FN1)
+ ),
+ [_FN1] = LAYOUT_ortho_4x4(
+ RESET, KC_PAST, KC_PSLS, _______,
+ BL_TOGG, BL_DEC, BL_INC, BL_STEP,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD,
+ RGB_SAI, RGB_SAD, _______, _______
+ )
+};
diff --git a/keyboards/bm16a/keymaps/factory/readme.md b/keyboards/bm16a/keymaps/factory/readme.md
new file mode 100644
index 0000000000..11c952366e
--- /dev/null
+++ b/keyboards/bm16a/keymaps/factory/readme.md
@@ -0,0 +1,4 @@
+# A factory-like keymap for the bm16a
+
+This keymap recreates the stock layout this keypad ships with. Use it if you want to return to stock, but with QMK.
+
From 23e942ae4e66008632667f12c30bbb4f0fae31f7 Mon Sep 17 00:00:00 2001
From: Joel Challis
Date: Thu, 26 Mar 2020 18:21:33 +0000
Subject: [PATCH 35/47] Enable SLEEP_LED on ATmega32A (#8531)
* Port over some AVR backlight logic to SLEEP_LED
* Port over some AVR backlight logic to SLEEP_LED - add timer 3
* Port over some AVR backlight logic to SLEEP_LED - clang format
* Enable SLEEP_LED within vusb protocol
---
tmk_core/common/avr/sleep_led.c | 41 +++++++++++++++++++++++++--------
tmk_core/protocol/vusb/main.c | 12 ++++++++++
2 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/tmk_core/common/avr/sleep_led.c b/tmk_core/common/avr/sleep_led.c
index 61fa70dc3e..63dcc2afd9 100644
--- a/tmk_core/common/avr/sleep_led.c
+++ b/tmk_core/common/avr/sleep_led.c
@@ -5,6 +5,30 @@
#include "led.h"
#include "sleep_led.h"
+#ifndef SLEEP_LED_TIMER
+# define SLEEP_LED_TIMER 1
+#endif
+
+#if SLEEP_LED_TIMER == 1
+# define TCCRxB TCCR1B
+# define TIMERx_COMPA_vect TIMER1_COMPA_vect
+# if defined(__AVR_ATmega32A__) // This MCU has only one TIMSK register
+# define TIMSKx TIMSK
+# else
+# define TIMSKx TIMSK1
+# endif
+# define OCIExA OCIE1A
+# define OCRxx OCR1A
+#elif SLEEP_LED_TIMER == 3
+# define TCCRxB TCCR3B
+# define TIMERx_COMPA_vect TIMER3_COMPA_vect
+# define TIMSKx TIMSK3
+# define OCIExA OCIE3A
+# define OCRxx OCR3A
+#else
+error("Invalid SLEEP_LED_TIMER config")
+#endif
+
/* Software PWM
* ______ ______ __
* | ON |___OFF___| ON |___OFF___| ....
@@ -25,15 +49,14 @@
void sleep_led_init(void) {
/* Timer1 setup */
/* CTC mode */
- TCCR1B |= _BV(WGM12);
+ TCCRxB |= _BV(WGM12);
/* Clock selelct: clk/1 */
- TCCR1B |= _BV(CS10);
+ TCCRxB |= _BV(CS10);
/* Set TOP value */
uint8_t sreg = SREG;
cli();
- OCR1AH = (SLEEP_LED_TIMER_TOP >> 8) & 0xff;
- OCR1AL = SLEEP_LED_TIMER_TOP & 0xff;
- SREG = sreg;
+ OCRxx = SLEEP_LED_TIMER_TOP;
+ SREG = sreg;
}
/** \brief Sleep LED enable
@@ -42,7 +65,7 @@ void sleep_led_init(void) {
*/
void sleep_led_enable(void) {
/* Enable Compare Match Interrupt */
- TIMSK1 |= _BV(OCIE1A);
+ TIMSKx |= _BV(OCIExA);
}
/** \brief Sleep LED disable
@@ -51,7 +74,7 @@ void sleep_led_enable(void) {
*/
void sleep_led_disable(void) {
/* Disable Compare Match Interrupt */
- TIMSK1 &= ~_BV(OCIE1A);
+ TIMSKx &= ~_BV(OCIExA);
}
/** \brief Sleep LED toggle
@@ -60,7 +83,7 @@ void sleep_led_disable(void) {
*/
void sleep_led_toggle(void) {
/* Disable Compare Match Interrupt */
- TIMSK1 ^= _BV(OCIE1A);
+ TIMSKx ^= _BV(OCIExA);
}
/** \brief Breathing Sleep LED brighness(PWM On period) table
@@ -72,7 +95,7 @@ void sleep_led_toggle(void) {
*/
static const uint8_t breathing_table[64] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, 255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-ISR(TIMER1_COMPA_vect) {
+ISR(TIMERx_COMPA_vect) {
/* Software PWM
* timer:1111 1111 1111 1111
* \_____/\/ \_______/____ count(0-255)
diff --git a/tmk_core/protocol/vusb/main.c b/tmk_core/protocol/vusb/main.c
index 068c4d8f3d..219989876c 100644
--- a/tmk_core/protocol/vusb/main.c
+++ b/tmk_core/protocol/vusb/main.c
@@ -20,6 +20,9 @@
#include "timer.h"
#include "uart.h"
#include "debug.h"
+#ifdef SLEEP_LED_ENABLE
+# include "sleep_led.h"
+#endif
#define UART_BAUD_RATE 115200
@@ -59,6 +62,9 @@ int main(void) {
initForUsbConnectivity();
keyboard_init();
+#ifdef SLEEP_LED_ENABLE
+ sleep_led_init();
+#endif
debug("main loop\n");
while (1) {
@@ -67,10 +73,16 @@ int main(void) {
suspended = false;
usbSofCount = 0;
last_timer = timer_read();
+# ifdef SLEEP_LED_ENABLE
+ sleep_led_disable();
+# endif
} else {
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
if (timer_elapsed(last_timer) > 5) {
suspended = true;
+# ifdef SLEEP_LED_ENABLE
+ sleep_led_enable();
+# endif
/*
uart_putchar('S');
_delay_ms(1);
From ed80874f726631e2fe111f9a50f4d5d2dc7c7963 Mon Sep 17 00:00:00 2001
From: Drashna Jaelre
Date: Thu, 26 Mar 2020 15:44:06 -0700
Subject: [PATCH 36/47] Fix IT_APOS backward compatibility define in
keymap_italian.h (#8565)
* Fix IT_APOS backward compatibility define in keymap_italian.h
Found by ZSA.
---
quantum/keymap_extras/keymap_italian.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quantum/keymap_extras/keymap_italian.h b/quantum/keymap_extras/keymap_italian.h
index 71c2b2e33a..616b6dfce9 100644
--- a/quantum/keymap_extras/keymap_italian.h
+++ b/quantum/keymap_extras/keymap_italian.h
@@ -166,7 +166,7 @@
// DEPRECATED
#define IT_BKSL IT_BSLS
-#define IT_QUOT IT_APOS
+#define IT_APOS IT_QUOT
#define IT_IACC IT_IGRV
#define IT_EACC IT_EGRV
#define IT_OACC IT_OGRV
From b9d0b1f06478a1b3f596882b33cb9bd84e477bea Mon Sep 17 00:00:00 2001
From: MechMerlin <30334081+mechmerlin@users.noreply.github.com>
Date: Thu, 26 Mar 2020 17:54:06 -0700
Subject: [PATCH 37/47] [Keyboard] MountainBlocks MB17 (#8554)
* initial commit
* preliminary support for mb17 using the qmk default keymap
* add the VIA keymap
* add qmk configurator support
* code cleanups before submission
* Update keyboards/mountainblocks/mb17/rules.mk
* Update keyboards/mountainblocks/mb17/info.json
* remove file
---
keyboards/mountainblocks/mb17/config.h | 158 ++++++++++++++++++
keyboards/mountainblocks/mb17/info.json | 12 ++
.../mb17/keymaps/default/keymap.c | 60 +++++++
.../mb17/keymaps/default/readme.md | 1 +
.../mountainblocks/mb17/keymaps/via/keymap.c | 76 +++++++++
.../mountainblocks/mb17/keymaps/via/rules.mk | 2 +
keyboards/mountainblocks/mb17/mb17.c | 17 ++
keyboards/mountainblocks/mb17/mb17.h | 35 ++++
keyboards/mountainblocks/mb17/readme.md | 13 ++
keyboards/mountainblocks/mb17/rules.mk | 32 ++++
10 files changed, 406 insertions(+)
create mode 100644 keyboards/mountainblocks/mb17/config.h
create mode 100644 keyboards/mountainblocks/mb17/info.json
create mode 100644 keyboards/mountainblocks/mb17/keymaps/default/keymap.c
create mode 100644 keyboards/mountainblocks/mb17/keymaps/default/readme.md
create mode 100644 keyboards/mountainblocks/mb17/keymaps/via/keymap.c
create mode 100644 keyboards/mountainblocks/mb17/keymaps/via/rules.mk
create mode 100644 keyboards/mountainblocks/mb17/mb17.c
create mode 100644 keyboards/mountainblocks/mb17/mb17.h
create mode 100644 keyboards/mountainblocks/mb17/readme.md
create mode 100644 keyboards/mountainblocks/mb17/rules.mk
diff --git a/keyboards/mountainblocks/mb17/config.h b/keyboards/mountainblocks/mb17/config.h
new file mode 100644
index 0000000000..7db47ff940
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/config.h
@@ -0,0 +1,158 @@
+/*
+Copyright 2020 mechmerlin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4D42
+#define PRODUCT_ID 0x0017
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mountainblocks
+#define PRODUCT MB17
+#define DESCRIPTION A custom numpad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F4, B1, B3, B2, B6 }
+#define MATRIX_COL_PINS { F7, E6, D7, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP H
+//#define MAGIC_KEY_HELP_ALT SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+#endif
+
+
+
+
+
diff --git a/keyboards/mountainblocks/mb17/info.json b/keyboards/mountainblocks/mb17/info.json
new file mode 100644
index 0000000000..02f4021849
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "MB17",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_numpad_5x4": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":1, "h":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}, {"x":3, "y":3, "h":2}]
+ }
+ }
+}
diff --git a/keyboards/mountainblocks/mb17/keymaps/default/keymap.c b/keyboards/mountainblocks/mb17/keymaps/default/keymap.c
new file mode 100644
index 0000000000..13c8cf8128
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/keymaps/default/keymap.c
@@ -0,0 +1,60 @@
+/* Copyright 2020 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┐
+ * │TG1│ / │ * │ - │
+ * ├───┼───┼───┼───┤
+ * │ 7 │ 8 │ 9 │ │
+ * ├───┼───┼───┤ + │
+ * │ 4 │ 5 │ 6 │ │
+ * ├───┼───┼───┼───┤
+ * │ 1 │ 2 │ 3 │ │
+ * ├───┴───┼───┤Ent│
+ * │ 0 │ . │ │
+ * └───────┴───┴───┘
+ */
+ [0] = LAYOUT_numpad_5x4(
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┐
+ * │TG1│ / │ * │ - │
+ * ┌───┬───┬───┐───┤
+ * │Hom│ ↑ │PgU│ │
+ * ├───┼───┼───┤ + │
+ * │ ← │ │ → │ │
+ * ├───┼───┼───┤───┤
+ * │End│ ↓ │PgD│ │
+ * ├───┴───┼───┤Ent│
+ * │Insert │Del│ │
+ * └───────┴───┘───┘
+ */
+ [1] = LAYOUT_numpad_5x4(
+ _______, _______, _______, _______,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, XXXXXXX, KC_RGHT, _______,
+ KC_END, KC_DOWN, KC_PGDN,
+ KC_INS, KC_DEL, _______
+ )
+};
\ No newline at end of file
diff --git a/keyboards/mountainblocks/mb17/keymaps/default/readme.md b/keyboards/mountainblocks/mb17/keymaps/default/readme.md
new file mode 100644
index 0000000000..fb963c6399
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for mb17
diff --git a/keyboards/mountainblocks/mb17/keymaps/via/keymap.c b/keyboards/mountainblocks/mb17/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5cee19cb23
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/keymaps/via/keymap.c
@@ -0,0 +1,76 @@
+/* Copyright 2020 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┐
+ * │TG1│ / │ * │ - │
+ * ├───┼───┼───┼───┤
+ * │ 7 │ 8 │ 9 │ │
+ * ├───┼───┼───┤ + │
+ * │ 4 │ 5 │ 6 │ │
+ * ├───┼───┼───┼───┤
+ * │ 1 │ 2 │ 3 │ │
+ * ├───┴───┼───┤Ent│
+ * │ 0 │ . │ │
+ * └───────┴───┴───┘
+ */
+ [0] = LAYOUT_numpad_5x4(
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┐
+ * │TG1│ / │ * │ - │
+ * ┌───┬───┬───┐───┤
+ * │Hom│ ↑ │PgU│ │
+ * ├───┼───┼───┤ + │
+ * │ ← │ │ → │ │
+ * ├───┼───┼───┤───┤
+ * │End│ ↓ │PgD│ │
+ * ├───┴───┼───┤Ent│
+ * │Insert │Del│ │
+ * └───────┴───┘───┘
+ */
+ [1] = LAYOUT_numpad_5x4(
+ _______, _______, _______, _______,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, XXXXXXX, KC_RGHT, _______,
+ KC_END, KC_DOWN, KC_PGDN,
+ KC_INS, KC_DEL, _______
+ ),
+
+ [2] = LAYOUT_numpad_5x4(
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+
+ [3] = LAYOUT_numpad_5x4(
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ )
+};
\ No newline at end of file
diff --git a/keyboards/mountainblocks/mb17/keymaps/via/rules.mk b/keyboards/mountainblocks/mb17/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mountainblocks/mb17/mb17.c b/keyboards/mountainblocks/mb17/mb17.c
new file mode 100644
index 0000000000..abc6183cbf
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/mb17.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "mb17.h"
diff --git a/keyboards/mountainblocks/mb17/mb17.h b/keyboards/mountainblocks/mb17/mb17.h
new file mode 100644
index 0000000000..dbfb68a932
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/mb17.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_numpad_5x4( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, \
+ k41, k42, k43 \
+){ \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, ___ }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, ___ }, \
+ { ___, k41, k42, k43 } \
+}
diff --git a/keyboards/mountainblocks/mb17/readme.md b/keyboards/mountainblocks/mb17/readme.md
new file mode 100644
index 0000000000..c1dfd2b88a
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/readme.md
@@ -0,0 +1,13 @@
+# MB17
+
+A single layout sandwich numpad.
+
+* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+* Hardware Supported: MB17
+* Hardware Availability: TBD
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mountainblocks/mb17:default
+
+See 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/mountainblocks/mb17/rules.mk b/keyboards/mountainblocks/mb17/rules.mk
new file mode 100644
index 0000000000..0bdce95654
--- /dev/null
+++ b/keyboards/mountainblocks/mb17/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
From 05d9a0ff036d91b7dc4e6198f4074161c1c7b633 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Fri, 27 Mar 2020 22:00:13 +1100
Subject: [PATCH 38/47] Fix inverted backlight for XD60 (#8575)
---
keyboards/xd60/rev2/config.h | 1 +
keyboards/xd60/rev3/config.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/keyboards/xd60/rev2/config.h b/keyboards/xd60/rev2/config.h
index 26dbb50e30..22aa95b291 100644
--- a/keyboards/xd60/rev2/config.h
+++ b/keyboards/xd60/rev2/config.h
@@ -48,6 +48,7 @@ along with this program. If not, see .
/* Backlight Setup */
#define BACKLIGHT_PIN F5
#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_ON_STATE 0
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xd60/rev3/config.h b/keyboards/xd60/rev3/config.h
index 861755e45c..4628b5a0c8 100644
--- a/keyboards/xd60/rev3/config.h
+++ b/keyboards/xd60/rev3/config.h
@@ -48,6 +48,7 @@ along with this program. If not, see .
/* Backlight Setup */
#define BACKLIGHT_PIN F5
#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_ON_STATE 0
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
From 14079ce6984b359e080c85d9e9b8f7b8eb01437c Mon Sep 17 00:00:00 2001
From: Ryan
Date: Sat, 28 Mar 2020 13:02:25 +1100
Subject: [PATCH 39/47] V-USB: Use structs for USB descriptors (#8572)
* V-USB: Use structs for USB descriptors
* Update usbconfigs
* cformat pass
---
keyboards/ares/usbconfig.h | 12 +-
keyboards/bfake/usbconfig.h | 12 +-
keyboards/chidori/usbconfig.h | 12 +-
.../coseyfannitutti/discipad/usbconfig.h | 12 +-
.../coseyfannitutti/discipline/usbconfig.h | 12 +-
.../coseyfannitutti/mysterium/usbconfig.h | 12 +-
keyboards/coseyfannitutti/romeo/usbconfig.h | 12 +-
keyboards/db/db63/usbconfig.h | 12 +-
keyboards/donutcables/budget96/usbconfig.h | 12 +-
keyboards/eve/meteor/usbconfig.h | 12 +-
keyboards/exclusive/e6v2/le_bmc/usbconfig.h | 12 +-
keyboards/exclusive/e6v2/oe_bmc/usbconfig.h | 12 +-
keyboards/exent/usbconfig.h | 12 +-
keyboards/facew/usbconfig.h | 12 +-
keyboards/ft/mars80/usbconfig.h | 12 +-
keyboards/gingham/usbconfig.h | 12 +-
keyboards/gray_studio/hb85/usbconfig.h | 12 +-
keyboards/handwired/hnah40/usbconfig.h | 12 +-
keyboards/j80/usbconfig.h | 12 +-
keyboards/jc65/v32a/usbconfig.h | 12 +-
keyboards/jj40/usbconfig.h | 12 +-
keyboards/jj4x4/usbconfig.h | 12 +-
keyboards/jj50/usbconfig.h | 12 +-
keyboards/kbdfans/kbdpad/mk1/usbconfig.h | 12 +-
keyboards/keycapsss/plaid_pad/usbconfig.h | 12 +-
keyboards/kira80/usbconfig.h | 12 +-
keyboards/leeku/finger65/usbconfig.h | 9 +-
keyboards/mechmini/v1/usbconfig.h | 12 +-
keyboards/mehkee96/usbconfig.h | 12 +-
keyboards/mt40/usbconfig.h | 12 +-
keyboards/panc60/usbconfig.h | 12 +-
keyboards/pearl/usbconfig.h | 12 +-
keyboards/percent/canoe/usbconfig.h | 12 +-
keyboards/percent/skog/usbconfig.h | 12 +-
keyboards/percent/skog_lite/usbconfig.h | 12 +-
keyboards/plaid/usbconfig.h | 12 +-
keyboards/singa/usbconfig.h | 12 +-
keyboards/tartan/usbconfig.h | 12 +-
keyboards/tgr/alice/usbconfig.h | 12 +-
keyboards/tgr/jane/usbconfig.h | 12 +-
keyboards/unikorn/usbconfig.h | 12 +-
keyboards/winkeyless/bface/usbconfig.h | 12 +-
keyboards/winkeyless/bmini/usbconfig.h | 12 +-
keyboards/winkeyless/bminiex/usbconfig.h | 12 +-
keyboards/ymd75/usbconfig.h | 12 +-
keyboards/ymd96/usbconfig.h | 12 +-
keyboards/ymdk/bface/usbconfig.h | 12 +-
keyboards/ymdk_np21/usbconfig.h | 12 +-
quantum/template/ps2avrgb/usbconfig.h | 47 +---
tmk_core/protocol/vusb/vusb.c | 246 +++++++++++-------
tmk_core/protocol/vusb/vusb.h | 76 +++++-
51 files changed, 370 insertions(+), 572 deletions(-)
diff --git a/keyboards/ares/usbconfig.h b/keyboards/ares/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/ares/usbconfig.h
+++ b/keyboards/ares/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/bfake/usbconfig.h b/keyboards/bfake/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/bfake/usbconfig.h
+++ b/keyboards/bfake/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/chidori/usbconfig.h b/keyboards/chidori/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/chidori/usbconfig.h
+++ b/keyboards/chidori/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/coseyfannitutti/discipad/usbconfig.h b/keyboards/coseyfannitutti/discipad/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/coseyfannitutti/discipad/usbconfig.h
+++ b/keyboards/coseyfannitutti/discipad/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/coseyfannitutti/discipline/usbconfig.h b/keyboards/coseyfannitutti/discipline/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/coseyfannitutti/discipline/usbconfig.h
+++ b/keyboards/coseyfannitutti/discipline/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/coseyfannitutti/mysterium/usbconfig.h b/keyboards/coseyfannitutti/mysterium/usbconfig.h
index bec7cc2959..82c067a64f 100644
--- a/keyboards/coseyfannitutti/mysterium/usbconfig.h
+++ b/keyboards/coseyfannitutti/mysterium/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/coseyfannitutti/romeo/usbconfig.h b/keyboards/coseyfannitutti/romeo/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/coseyfannitutti/romeo/usbconfig.h
+++ b/keyboards/coseyfannitutti/romeo/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/db/db63/usbconfig.h b/keyboards/db/db63/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/db/db63/usbconfig.h
+++ b/keyboards/db/db63/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/donutcables/budget96/usbconfig.h b/keyboards/donutcables/budget96/usbconfig.h
index d0454d04c4..b70db217f2 100644
--- a/keyboards/donutcables/budget96/usbconfig.h
+++ b/keyboards/donutcables/budget96/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/eve/meteor/usbconfig.h b/keyboards/eve/meteor/usbconfig.h
index 5fad0b3a54..0874f1173a 100644
--- a/keyboards/eve/meteor/usbconfig.h
+++ b/keyboards/eve/meteor/usbconfig.h
@@ -197,7 +197,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -206,7 +206,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -217,9 +217,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -298,18 +295,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/exclusive/e6v2/le_bmc/usbconfig.h b/keyboards/exclusive/e6v2/le_bmc/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/exclusive/e6v2/le_bmc/usbconfig.h
+++ b/keyboards/exclusive/e6v2/le_bmc/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h b/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h
+++ b/keyboards/exclusive/e6v2/oe_bmc/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/exent/usbconfig.h b/keyboards/exent/usbconfig.h
index 4acb6b281d..6e910a7038 100644
--- a/keyboards/exent/usbconfig.h
+++ b/keyboards/exent/usbconfig.h
@@ -197,7 +197,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -206,7 +206,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -217,9 +217,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -298,18 +295,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/facew/usbconfig.h b/keyboards/facew/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/facew/usbconfig.h
+++ b/keyboards/facew/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/ft/mars80/usbconfig.h b/keyboards/ft/mars80/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/ft/mars80/usbconfig.h
+++ b/keyboards/ft/mars80/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/gingham/usbconfig.h b/keyboards/gingham/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/gingham/usbconfig.h
+++ b/keyboards/gingham/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/gray_studio/hb85/usbconfig.h b/keyboards/gray_studio/hb85/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/gray_studio/hb85/usbconfig.h
+++ b/keyboards/gray_studio/hb85/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/handwired/hnah40/usbconfig.h b/keyboards/handwired/hnah40/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/handwired/hnah40/usbconfig.h
+++ b/keyboards/handwired/hnah40/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/j80/usbconfig.h b/keyboards/j80/usbconfig.h
index 4acb6b281d..6e910a7038 100644
--- a/keyboards/j80/usbconfig.h
+++ b/keyboards/j80/usbconfig.h
@@ -197,7 +197,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -206,7 +206,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -217,9 +217,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -298,18 +295,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/jc65/v32a/usbconfig.h b/keyboards/jc65/v32a/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/jc65/v32a/usbconfig.h
+++ b/keyboards/jc65/v32a/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/jj40/usbconfig.h b/keyboards/jj40/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/jj40/usbconfig.h
+++ b/keyboards/jj40/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/jj4x4/usbconfig.h b/keyboards/jj4x4/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/jj4x4/usbconfig.h
+++ b/keyboards/jj4x4/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/jj50/usbconfig.h b/keyboards/jj50/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/jj50/usbconfig.h
+++ b/keyboards/jj50/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/kbdfans/kbdpad/mk1/usbconfig.h b/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
+++ b/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/keycapsss/plaid_pad/usbconfig.h b/keyboards/keycapsss/plaid_pad/usbconfig.h
index 0cacbd724d..3e88910ce0 100644
--- a/keyboards/keycapsss/plaid_pad/usbconfig.h
+++ b/keyboards/keycapsss/plaid_pad/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/kira80/usbconfig.h b/keyboards/kira80/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/kira80/usbconfig.h
+++ b/keyboards/kira80/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/leeku/finger65/usbconfig.h b/keyboards/leeku/finger65/usbconfig.h
index 12e49e0ee1..cb8e44d9d3 100644
--- a/keyboards/leeku/finger65/usbconfig.h
+++ b/keyboards/leeku/finger65/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,7 +305,7 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
diff --git a/keyboards/mechmini/v1/usbconfig.h b/keyboards/mechmini/v1/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/mechmini/v1/usbconfig.h
+++ b/keyboards/mechmini/v1/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/mehkee96/usbconfig.h b/keyboards/mehkee96/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/mehkee96/usbconfig.h
+++ b/keyboards/mehkee96/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/mt40/usbconfig.h b/keyboards/mt40/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/mt40/usbconfig.h
+++ b/keyboards/mt40/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/panc60/usbconfig.h b/keyboards/panc60/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/panc60/usbconfig.h
+++ b/keyboards/panc60/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/pearl/usbconfig.h b/keyboards/pearl/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/pearl/usbconfig.h
+++ b/keyboards/pearl/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/percent/canoe/usbconfig.h b/keyboards/percent/canoe/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/percent/canoe/usbconfig.h
+++ b/keyboards/percent/canoe/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/percent/skog/usbconfig.h b/keyboards/percent/skog/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/percent/skog/usbconfig.h
+++ b/keyboards/percent/skog/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/percent/skog_lite/usbconfig.h b/keyboards/percent/skog_lite/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/percent/skog_lite/usbconfig.h
+++ b/keyboards/percent/skog_lite/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/plaid/usbconfig.h b/keyboards/plaid/usbconfig.h
index ee040d16b7..5f2a8baf05 100644
--- a/keyboards/plaid/usbconfig.h
+++ b/keyboards/plaid/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/singa/usbconfig.h b/keyboards/singa/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/singa/usbconfig.h
+++ b/keyboards/singa/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/tartan/usbconfig.h b/keyboards/tartan/usbconfig.h
index 0cacbd724d..3e88910ce0 100644
--- a/keyboards/tartan/usbconfig.h
+++ b/keyboards/tartan/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/tgr/alice/usbconfig.h b/keyboards/tgr/alice/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/tgr/alice/usbconfig.h
+++ b/keyboards/tgr/alice/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/tgr/jane/usbconfig.h b/keyboards/tgr/jane/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/tgr/jane/usbconfig.h
+++ b/keyboards/tgr/jane/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/unikorn/usbconfig.h b/keyboards/unikorn/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/unikorn/usbconfig.h
+++ b/keyboards/unikorn/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/winkeyless/bface/usbconfig.h b/keyboards/winkeyless/bface/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/winkeyless/bface/usbconfig.h
+++ b/keyboards/winkeyless/bface/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/winkeyless/bmini/usbconfig.h b/keyboards/winkeyless/bmini/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/winkeyless/bmini/usbconfig.h
+++ b/keyboards/winkeyless/bmini/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/winkeyless/bminiex/usbconfig.h b/keyboards/winkeyless/bminiex/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/winkeyless/bminiex/usbconfig.h
+++ b/keyboards/winkeyless/bminiex/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/ymd75/usbconfig.h b/keyboards/ymd75/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/ymd75/usbconfig.h
+++ b/keyboards/ymd75/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/ymd96/usbconfig.h b/keyboards/ymd96/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/ymd96/usbconfig.h
+++ b/keyboards/ymd96/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/ymdk/bface/usbconfig.h b/keyboards/ymdk/bface/usbconfig.h
index a3aa0f7c81..9ffec5280e 100644
--- a/keyboards/ymdk/bface/usbconfig.h
+++ b/keyboards/ymdk/bface/usbconfig.h
@@ -207,7 +207,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -216,7 +216,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -227,9 +227,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -308,18 +305,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/keyboards/ymdk_np21/usbconfig.h b/keyboards/ymdk_np21/usbconfig.h
index ad9c95c5d7..fd5640a081 100644
--- a/keyboards/ymdk_np21/usbconfig.h
+++ b/keyboards/ymdk_np21/usbconfig.h
@@ -208,7 +208,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -217,7 +217,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -228,9 +228,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -309,18 +306,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/quantum/template/ps2avrgb/usbconfig.h b/quantum/template/ps2avrgb/usbconfig.h
index 83ad06544d..6e910a7038 100644
--- a/quantum/template/ps2avrgb/usbconfig.h
+++ b/quantum/template/ps2avrgb/usbconfig.h
@@ -197,7 +197,7 @@ section at the end of this file).
/* -------------------------- Device Description --------------------------- */
-#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+#define USB_CFG_VENDOR_ID
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
@@ -206,7 +206,7 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+#define USB_CFG_DEVICE_ID
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
@@ -217,34 +217,6 @@ section at the end of this file).
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
-#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
-/* Version number of the device: Minor number first, then major number.
- */
-#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
-#define USB_CFG_VENDOR_NAME_LEN 13
-/* These two values define the vendor name returned by the USB device. The name
- * must be given as a list of characters under single quotes. The characters
- * are interpreted as Unicode (UTF-16) entities.
- * If you don't want a vendor name string, undefine these macros.
- * ALWAYS define a vendor name containing your Internet domain name if you use
- * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
- * details.
- */
-#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
-#define USB_CFG_DEVICE_NAME_LEN 8
-/* Same as above for the device name. If you don't want a device name, undefine
- * the macros. See the file USB-IDs-for-free.txt before you assign a name if
- * you use a shared VID/PID.
- */
-/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
-/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
-/* Same as above for the serial number. If you don't want a serial number,
- * undefine the macros.
- * It may be useful to provide the serial number through other means than at
- * compile time. See the section about descriptor properties below for how
- * to fine tune control over USB descriptors such as the string descriptor
- * for the serial number.
- */
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
@@ -323,18 +295,15 @@ section at the end of this file).
* };
*/
-#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
-#define USB_CFG_DESCR_PROPS_STRINGS 0
-#define USB_CFG_DESCR_PROPS_STRING_0 0
-#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
-#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
-#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
-//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
#define usbMsgPtr_t unsigned short
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index 30c9708921..19df35805d 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -349,134 +349,174 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
#endif
// clang-format off
-const PROGMEM usbStringDescriptor_t usbDescriptorStringZero = {
+const PROGMEM usbStringDescriptor_t usbStringDescriptorZero = {
.header = {
- .bLength = USB_STRING_LEN(1),
+ .bLength = USB_STRING_LEN(1),
.bDescriptorType = USBDESCR_STRING
},
- .bString = {0x0409} // US English
+ .bString = {0x0409} // US English
};
-const PROGMEM usbStringDescriptor_t usbDescriptorStringManufacturer = {
+const PROGMEM usbStringDescriptor_t usbStringDescriptorManufacturer = {
.header = {
- .bLength = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1),
+ .bLength = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1),
.bDescriptorType = USBDESCR_STRING
},
- .bString = LSTR(MANUFACTURER)
+ .bString = LSTR(MANUFACTURER)
};
-const PROGMEM usbStringDescriptor_t usbDescriptorStringProduct = {
+const PROGMEM usbStringDescriptor_t usbStringDescriptorProduct = {
.header = {
- .bLength = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1),
+ .bLength = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1),
.bDescriptorType = USBDESCR_STRING
},
- .bString = LSTR(PRODUCT)
+ .bString = LSTR(PRODUCT)
};
-const PROGMEM usbStringDescriptor_t usbDescriptorStringSerial = {
+const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = {
.header = {
- .bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1),
+ .bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1),
.bDescriptorType = USBDESCR_STRING
},
- .bString = LSTR(SERIAL_NUMBER)
+ .bString = LSTR(SERIAL_NUMBER)
};
-// clang-format on
+#if USB_CFG_DESCR_PROPS_DEVICE
/*
- * Descriptor for compite device: Keyboard + Mouse
- *
- * contains: device, interface, HID and endpoint descriptors
+ * Device descriptor
*/
+const PROGMEM usbDeviceDescriptor_t usbDeviceDescriptor = {
+ .header = {
+ .bLength = sizeof(usbDeviceDescriptor_t),
+ .bDescriptorType = USBDESCR_DEVICE
+ },
+ .bcdUSB = 0x0110,
+ .bDeviceClass = USB_CFG_DEVICE_CLASS,
+ .bDeviceSubClass = USB_CFG_DEVICE_SUBCLASS,
+ .bDeviceProtocol = 0x00,
+ .bMaxPacketSize0 = 8,
+ .idVendor = VENDOR_ID,
+ .idProduct = PRODUCT_ID,
+ .bcdDevice = DEVICE_VER,
+ .iManufacturer = 0x01,
+ .iProduct = 0x02,
+ .iSerialNumber = 0x03,
+ .bNumConfigurations = 1
+};
+#endif
+
#if USB_CFG_DESCR_PROPS_CONFIGURATION
-const PROGMEM char usbDescriptorConfiguration[] = {
- /* USB configuration descriptor */
- 9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */
- USBDESCR_CONFIG, /* descriptor type */
+/*
+ * Configuration descriptors
+ */
+const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
+ .header = {
+ .header = {
+ .bLength = sizeof(usbConfigurationDescriptorHeader_t),
+ .bDescriptorType = USBDESCR_CONFIG
+ },
+ .wTotalLength = sizeof(usbConfigurationDescriptor_t),
# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
- 59, // 9 + (9 + 9 + 7) + (9 + 9 + 7)
+ .bNumInterfaces = 2,
# else
- 34, // 9 + (9 + 9 + 7)
+ .bNumInterfaces = 1,
# endif
- 0,
-// 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 + 9, 0,
-/* total length of data returned (including inlined descriptors) */
-# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
- 2, /* number of interfaces in this configuration */
-# else
- 1,
-# endif
- 1, /* index of this configuration */
- 0, /* configuration name string index */
+ .bConfigurationValue = 0x01,
+ .iConfiguration = 0x00,
# if USB_CFG_IS_SELF_POWERED
- (1 << 7) | USBATTR_SELFPOWER, /* attributes */
+ .bmAttributes = (1 << 7) | USBATTR_SELFPOWER,
# else
- (1 << 7), /* attributes */
+ .bmAttributes = (1 << 7),
# endif
- USB_MAX_POWER_CONSUMPTION / 2, /* max USB current in 2mA units */
+ .bMaxPower = USB_MAX_POWER_CONSUMPTION / 2
+ },
/*
- * Keyboard interface
+ * Keyboard
*/
- /* Interface descriptor */
- 9, /* sizeof(usbDescrInterface): length of descriptor in bytes */
- USBDESCR_INTERFACE, /* descriptor type */
- 0, /* index of this interface */
- 0, /* alternate setting for this interface */
- USB_CFG_HAVE_INTRIN_ENDPOINT, /* endpoints excl 0: number of endpoint descriptors to follow */
- USB_CFG_INTERFACE_CLASS, USB_CFG_INTERFACE_SUBCLASS, USB_CFG_INTERFACE_PROTOCOL, 0, /* string index for interface */
- /* HID descriptor */
- 9, /* sizeof(usbDescrHID): length of descriptor in bytes */
- USBDESCR_HID, /* descriptor type: HID */
- 0x01, 0x01, /* BCD representation of HID version */
- 0x00, /* target country code */
- 0x01, /* number of HID Report (or other HID class) Descriptor infos to follow */
- 0x22, /* descriptor type: report */
- sizeof(keyboard_hid_report), 0, /* total length of report descriptor */
-/* Endpoint descriptor */
-# if USB_CFG_HAVE_INTRIN_ENDPOINT /* endpoint descriptor for endpoint 1 */
- 7, /* sizeof(usbDescrEndpoint) */
- USBDESCR_ENDPOINT, /* descriptor type = endpoint */
- (char)0x81, /* IN endpoint number 1 */
- 0x03, /* attrib: Interrupt endpoint */
- 8, 0, /* maximum packet size */
- USB_POLLING_INTERVAL_MS, /* in ms */
+ .keyboardInterface = {
+ .header = {
+ .bLength = sizeof(usbInterfaceDescriptor_t),
+ .bDescriptorType = USBDESCR_INTERFACE
+ },
+ .bInterfaceNumber = 0,
+ .bAlternateSetting = 0x00,
+ .bNumEndpoints = USB_CFG_HAVE_INTRIN_ENDPOINT,
+ .bInterfaceClass = USB_CFG_INTERFACE_CLASS,
+ .bInterfaceSubClass = USB_CFG_INTERFACE_SUBCLASS,
+ .bInterfaceProtocol = USB_CFG_INTERFACE_PROTOCOL,
+ .iInterface = 0x00
+ },
+ .keyboardHID = {
+ .header = {
+ .bLength = sizeof(usbHIDDescriptor_t),
+ .bDescriptorType = USBDESCR_HID
+ },
+ .bcdHID = 0x0101,
+ .bCountryCode = 0x00,
+ .bNumDescriptors = 1,
+ .bDescriptorType = USBDESCR_HID_REPORT,
+ .wDescriptorLength = sizeof(keyboard_hid_report)
+ },
+# ifdef USB_CFG_HAVE_INTRIN_ENDPOINT
+ .keyboardINEndpoint = {
+ .header = {
+ .bLength = sizeof(usbEndpointDescriptor_t),
+ .bDescriptorType = USBDESCR_ENDPOINT
+ },
+ .bEndpointAddress = (USBRQ_DIR_DEVICE_TO_HOST | 1),
+ .bmAttributes = 0x03,
+ .wMaxPacketSize = 8,
+ .bInterval = USB_POLLING_INTERVAL_MS
+ },
# endif
# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
/*
- * Mouse/extrakeys interface
+ * Mouse/Extrakeys
*/
- /* Interface descriptor */
- 9, /* sizeof(usbDescrInterface): length of descriptor in bytes */
- USBDESCR_INTERFACE, /* descriptor type */
- 1, /* index of this interface */
- 0, /* alternate setting for this interface */
- USB_CFG_HAVE_INTRIN_ENDPOINT3, /* endpoints excl 0: number of endpoint descriptors to follow */
- 0x03, /* CLASS: HID */
- 0, /* SUBCLASS: none */
- 0, /* PROTOCOL: none */
- 0, /* string index for interface */
- /* HID descriptor */
- 9, /* sizeof(usbDescrHID): length of descriptor in bytes */
- USBDESCR_HID, /* descriptor type: HID */
- 0x01, 0x01, /* BCD representation of HID version */
- 0x00, /* target country code */
- 0x01, /* number of HID Report (or other HID class) Descriptor infos to follow */
- 0x22, /* descriptor type: report */
- sizeof(mouse_extra_hid_report), 0, /* total length of report descriptor */
-# if USB_CFG_HAVE_INTRIN_ENDPOINT3 /* endpoint descriptor for endpoint 3 */
- /* Endpoint descriptor */
- 7, /* sizeof(usbDescrEndpoint) */
- USBDESCR_ENDPOINT, /* descriptor type = endpoint */
- (char)(0x80 | USB_CFG_EP3_NUMBER), /* IN endpoint number 3 */
- 0x03, /* attrib: Interrupt endpoint */
- 8, 0, /* maximum packet size */
- USB_POLLING_INTERVAL_MS, /* in ms */
+ .mouseExtraInterface = {
+ .header = {
+ .bLength = sizeof(usbInterfaceDescriptor_t),
+ .bDescriptorType = USBDESCR_INTERFACE
+ },
+ .bInterfaceNumber = 1,
+ .bAlternateSetting = 0x00,
+ .bNumEndpoints = USB_CFG_HAVE_INTRIN_ENDPOINT3,
+ .bInterfaceClass = 0x03,
+ .bInterfaceSubClass = 0x00,
+ .bInterfaceProtocol = 0x00,
+ .iInterface = 0x00
+ },
+ .mouseExtraHID = {
+ .header = {
+ .bLength = sizeof(usbHIDDescriptor_t),
+ .bDescriptorType = USBDESCR_HID
+ },
+ .bcdHID = 0x0101,
+ .bCountryCode = 0x00,
+ .bNumDescriptors = 1,
+ .bDescriptorType = USBDESCR_HID_REPORT,
+ .wDescriptorLength = sizeof(mouse_extra_hid_report)
+ },
+# if USB_CFG_HAVE_INTRIN_ENDPOINT3
+ .mouseExtraINEndpoint = {
+ .header = {
+ .bLength = sizeof(usbEndpointDescriptor_t),
+ .bDescriptorType = USBDESCR_ENDPOINT
+ },
+ .bEndpointAddress = (USBRQ_DIR_DEVICE_TO_HOST | USB_CFG_EP3_NUMBER),
+ .bmAttributes = 0x03,
+ .wMaxPacketSize = 8,
+ .bInterval = USB_POLLING_INTERVAL_MS
+ }
# endif
# endif
};
#endif
+// clang-format on
+
USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
usbMsgLen_t len = 0;
@@ -489,42 +529,48 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
debug_hex16(rq->wLength.word); debug("\n");
*/
switch (rq->wValue.bytes[1]) {
+#if USB_CFG_DESCR_PROPS_DEVICE
+ case USBDESCR_DEVICE:
+ usbMsgPtr = (unsigned char *)&usbDeviceDescriptor;
+ len = sizeof(usbDeviceDescriptor_t);
+ break;
+#endif
#if USB_CFG_DESCR_PROPS_CONFIGURATION
case USBDESCR_CONFIG:
- usbMsgPtr = (unsigned char *)usbDescriptorConfiguration;
- len = sizeof(usbDescriptorConfiguration);
+ usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor;
+ len = sizeof(usbConfigurationDescriptor_t);
break;
#endif
case USBDESCR_STRING:
switch (rq->wValue.bytes[0]) {
case 0:
- usbMsgPtr = (unsigned char *)&usbDescriptorStringZero;
- len = usbDescriptorStringZero.header.bLength;
+ usbMsgPtr = (unsigned char *)&usbStringDescriptorZero;
+ len = usbStringDescriptorZero.header.bLength;
break;
case 1: // iManufacturer
- usbMsgPtr = (unsigned char *)&usbDescriptorStringManufacturer;
- len = usbDescriptorStringManufacturer.header.bLength;
+ usbMsgPtr = (unsigned char *)&usbStringDescriptorManufacturer;
+ len = usbStringDescriptorManufacturer.header.bLength;
break;
case 2: // iProduct
- usbMsgPtr = (unsigned char *)&usbDescriptorStringProduct;
- len = usbDescriptorStringProduct.header.bLength;
+ usbMsgPtr = (unsigned char *)&usbStringDescriptorProduct;
+ len = usbStringDescriptorProduct.header.bLength;
break;
case 3: // iSerialNumber
- usbMsgPtr = (unsigned char *)&usbDescriptorStringSerial;
- len = usbDescriptorStringSerial.header.bLength;
+ usbMsgPtr = (unsigned char *)&usbStringDescriptorSerial;
+ len = usbStringDescriptorSerial.header.bLength;
break;
}
break;
case USBDESCR_HID:
switch (rq->wValue.bytes[0]) {
case 0:
- usbMsgPtr = (unsigned char *)(usbDescriptorConfiguration + 9 + 9);
- len = 9;
+ usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.keyboardHID;
+ len = sizeof(usbHIDDescriptor_t);
break;
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
case 1:
- usbMsgPtr = (unsigned char *)(usbDescriptorConfiguration + 9 + (9 + 9 + 7) + 9);
- len = 9;
+ usbMsgPtr = (unsigned char *)&usbConfigurationDescriptor.mouseExtraHID;
+ len = sizeof(usbHIDDescriptor_t);
break;
#endif
}
diff --git a/tmk_core/protocol/vusb/vusb.h b/tmk_core/protocol/vusb/vusb.h
index cee07207a3..debac67d24 100644
--- a/tmk_core/protocol/vusb/vusb.h
+++ b/tmk_core/protocol/vusb/vusb.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef VUSB_H
-#define VUSB_H
+#pragma once
#include "host_driver.h"
@@ -25,14 +24,83 @@ typedef struct usbDescriptorHeader {
uchar bDescriptorType;
} __attribute__((packed)) usbDescriptorHeader_t;
+typedef struct usbDeviceDescriptor {
+ usbDescriptorHeader_t header;
+ unsigned bcdUSB;
+ uchar bDeviceClass;
+ uchar bDeviceSubClass;
+ uchar bDeviceProtocol;
+ uchar bMaxPacketSize0;
+ unsigned idVendor;
+ unsigned idProduct;
+ unsigned bcdDevice;
+ uchar iManufacturer;
+ uchar iProduct;
+ uchar iSerialNumber;
+ uchar bNumConfigurations;
+} __attribute__((packed)) usbDeviceDescriptor_t;
+
+typedef struct usbConfigurationDescriptorHeader {
+ usbDescriptorHeader_t header;
+ unsigned wTotalLength;
+ uchar bNumInterfaces;
+ uchar bConfigurationValue;
+ uchar iConfiguration;
+ uchar bmAttributes;
+ uchar bMaxPower;
+} __attribute__((packed)) usbConfigurationDescriptorHeader_t;
+
typedef struct usbStringDescriptor {
usbDescriptorHeader_t header;
int bString[];
} __attribute__((packed)) usbStringDescriptor_t;
+typedef struct usbInterfaceDescriptor {
+ usbDescriptorHeader_t header;
+ uchar bInterfaceNumber;
+ uchar bAlternateSetting;
+ uchar bNumEndpoints;
+ uchar bInterfaceClass;
+ uchar bInterfaceSubClass;
+ uchar bInterfaceProtocol;
+ uchar iInterface;
+} __attribute__((packed)) usbInterfaceDescriptor_t;
+
+typedef struct usbEndpointDescriptor {
+ usbDescriptorHeader_t header;
+ uchar bEndpointAddress;
+ uchar bmAttributes;
+ unsigned wMaxPacketSize;
+ uchar bInterval;
+} __attribute__((packed)) usbEndpointDescriptor_t;
+
+typedef struct usbHIDDescriptor {
+ usbDescriptorHeader_t header;
+ unsigned bcdHID;
+ uchar bCountryCode;
+ uchar bNumDescriptors;
+ uchar bDescriptorType;
+ unsigned wDescriptorLength;
+} __attribute__((packed)) usbHIDDescriptor_t;
+
+typedef struct usbConfigurationDescriptor {
+ usbConfigurationDescriptorHeader_t header;
+ usbInterfaceDescriptor_t keyboardInterface;
+ usbHIDDescriptor_t keyboardHID;
+#ifdef USB_CFG_HAVE_INTRIN_ENDPOINT
+ usbEndpointDescriptor_t keyboardINEndpoint;
+#endif
+
+#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
+ usbInterfaceDescriptor_t mouseExtraInterface;
+ usbHIDDescriptor_t mouseExtraHID;
+# ifdef USB_CFG_HAVE_INTRIN_ENDPOINT3
+ usbEndpointDescriptor_t mouseExtraINEndpoint;
+# endif
+#endif
+} __attribute__((packed)) usbConfigurationDescriptor_t;
+
#define USB_STRING_LEN(s) (sizeof(usbDescriptorHeader_t) + ((s) << 1))
host_driver_t *vusb_driver(void);
void vusb_transfer_keyboard(void);
-
-#endif
From 7bf9d9dc0ace46fa5ef2b159636f808fcd0d7938 Mon Sep 17 00:00:00 2001
From: stanrc85 <47038504+stanrc85@users.noreply.github.com>
Date: Fri, 27 Mar 2020 23:57:27 -0400
Subject: [PATCH 40/47] [keymap] Add Alice keymap and to userspace files
(#8571)
* convert my 60 keymap to alice
* add via to rules for alice
* remove split backspace and add backlight keycodes
* disable LTO for alice pcb
* keymap alignment formatting
---
.../projectkb/alice/keymaps/stanrc85/keymap.c | 58 +++++++++++++++++++
users/stanrc85/rules.mk | 4 ++
2 files changed, 62 insertions(+)
create mode 100644 keyboards/projectkb/alice/keymaps/stanrc85/keymap.c
diff --git a/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c b/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c
new file mode 100644
index 0000000000..a194ee68ce
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c
@@ -0,0 +1,58 @@
+/*
+Copyright 2012,2013 Jun Wako
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include QMK_KEYBOARD_H
+#include "stanrc85.h"
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_default(
+ KC_ESC, TD_TESC, 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_PGUP, 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_PGDN, KC_CTLE, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN2_60),
+ KC_LCTL, KC_LALT, LT_SPCF, KC_LGUI, LT_SPCF, TD_TWIN, TD_TCTL
+ ),
+
+ [_DEFAULT] = LAYOUT_default(
+ KC_ESC, 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_PGUP, 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_PGDN, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN2_60),
+ KC_LCTL, KC_LALT, KC_SPC, MO(_FN1_60), KC_SPC, KC_RALT, KC_RCTL
+ ),
+
+ [_FN1_60] = LAYOUT_default(
+ _______, KC_TILD, 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,
+ _______, _______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS,
+ _______, KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
+ _______, KC_RDP, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN2_60] = LAYOUT_default(
+ BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
+ )
+};
diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk
index c454058bd5..16391b555a 100644
--- a/users/stanrc85/rules.mk
+++ b/users/stanrc85/rules.mk
@@ -22,4 +22,8 @@ endif
ifeq ($(strip $(KEYBOARD)), dz60)
VIA_ENABLE = yes
LTO_ENABLE = yes
+endif
+ifeq ($(strip $(KEYBOARD)), projectkb/alice)
+ VIA_ENABLE = yes
+ LTO_ENABLE = no
endif
\ No newline at end of file
From 13fff52f6b629e4345e7ea2296b3d100aa9df245 Mon Sep 17 00:00:00 2001
From: Casper Weiss Bang
Date: Sun, 29 Mar 2020 00:35:11 +0100
Subject: [PATCH 41/47] fixed problem with implicit declaration in
quantum/rgblight.c (#8406)
* Update tmk_core/common/progmem.h
Co-Authored-By: Ryan
* Update quantum/rgblight.c
Co-Authored-By: Ryan
* fixed problem with implicit declaration in quantum/rgblight.c (#8381)
Co-authored-by: Ryan
---
drivers/oled/oled_driver.c | 3 ---
tmk_core/common/progmem.h | 11 ++++++++---
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c
index cb50c38c45..ce5c23cc40 100644
--- a/drivers/oled/oled_driver.c
+++ b/drivers/oled/oled_driver.c
@@ -23,9 +23,6 @@ along with this program. If not, see .
#include
#include "progmem.h"
-#ifndef __AVR__
-# define memcpy_P(des, src, len) memcpy(des, src, len)
-#endif
// Used commands from spec sheet: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
// for SH1106: https://www.velleman.eu/downloads/29/infosheets/sh1106_datasheet.pdf
diff --git a/tmk_core/common/progmem.h b/tmk_core/common/progmem.h
index a06d0f940f..be8485117c 100644
--- a/tmk_core/common/progmem.h
+++ b/tmk_core/common/progmem.h
@@ -4,7 +4,12 @@
# include
#else
# define PROGMEM
-# define pgm_read_byte(p) *((unsigned char*)(p))
-# define pgm_read_word(p) *((uint16_t*)(p))
-# define pgm_read_dword(p) *((uint32_t*)(p))
+# define memcpy_P(dest, src, n) memcpy(dest, src, n)
+# define pgm_read_byte(address_short) *((uint8_t*)(address_short))
+# define pgm_read_word(address_short) *((uint16_t*)(address_short))
+# define pgm_read_dword(address_short) *((uint32_t*)(address_short))
+# define pgm_read_ptr(address_short) *((void*)(address_short))
+# define strcmp_P(s1, s2) strcmp(s1, s2)
+# define strcpy_P(dest, src) strcpy(dest, src)
+# define strlen_P(src) strlen(src)
#endif
From c89c0841468ad23153a9fc9578d344845df31a88 Mon Sep 17 00:00:00 2001
From: Erovia
Date: Sun, 29 Mar 2020 14:29:44 +0200
Subject: [PATCH 42/47] CLI: More MSYS2 fixes (#8577)
* CLI: More MSYS2 fixes
Now I can fully setup and work with qmk_firmware on an MSYS2
installation without any errors or exceptions.
* Apply suggestions from code review
Co-Authored-By: skullydazed
* Some improvements
* Remove unnecessary import
* Remove slow, unused code
Getting the version from GIT was slow on both Windows and Docker.
Until we find a better, faster way, this is removed.
* remove unused imports
* Implement @vomindoraan's suggestions
* refine how we pick the shell to use
* Apply @fauxpark's suggestions
fauxpark investigated the topic of shells in MSYS2 a bit and we come to the conclusion that the safest bet was to just use the user's shell.
Anything more just opens up more edge-cases than it solves.
Co-Authored-By: Ryan
* Use `platform_id` in doctor
This will bring it in line with the new code.
Co-authored-by: skullydazed
Co-authored-by: skullY
Co-authored-by: Ryan
---
bin/qmk | 12 ------------
lib/python/qmk/cli/doctor.py | 17 +++++++++--------
lib/python/qmk/commands.py | 20 ++++++++++++++++++++
lib/python/qmk/tests/test_cli_commands.py | 3 ++-
4 files changed, 31 insertions(+), 21 deletions(-)
diff --git a/bin/qmk b/bin/qmk
index 60555d3d70..7592eefd93 100755
--- a/bin/qmk
+++ b/bin/qmk
@@ -2,10 +2,8 @@
"""CLI wrapper for running QMK commands.
"""
import os
-import subprocess
import sys
from importlib.util import find_spec
-from time import strftime
# Add the QMK python libs to our path
script_dir = os.path.dirname(os.path.realpath(__file__))
@@ -35,16 +33,6 @@ with open(os.path.join(qmk_dir, 'requirements.txt'), 'r') as fd:
print('Please run `pip3 install -r requirements.txt` to install the python dependencies.')
exit(255)
-# Figure out our version
-# TODO(skullydazed/anyone): Find a method that doesn't involve git. This is slow in docker and on windows.
-command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags']
-result = subprocess.run(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-
-if result.returncode == 0:
- os.environ['QMK_VERSION'] = result.stdout.strip()
-else:
- os.environ['QMK_VERSION'] = 'nogit-' + strftime('%Y-%m-%d-%H:%M:%S') + '-dirty'
-
# Setup the CLI
import milc # noqa
diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py
index 9b81c8508b..65b6f0a96f 100755
--- a/lib/python/qmk/cli/doctor.py
+++ b/lib/python/qmk/cli/doctor.py
@@ -10,6 +10,7 @@ from pathlib import Path
from milc import cli
from qmk import submodules
from qmk.questions import yesno
+from qmk.commands import run
ESSENTIAL_BINARIES = {
'dfu-programmer': {},
@@ -135,7 +136,7 @@ def check_modem_manager():
"""Returns True if ModemManager is running.
"""
if shutil.which("systemctl"):
- mm_check = subprocess.run(["systemctl", "--quiet", "is-active", "ModemManager.service"], timeout=10)
+ mm_check = run(["systemctl", "--quiet", "is-active", "ModemManager.service"], timeout=10)
if mm_check.returncode == 0:
return True
@@ -153,7 +154,7 @@ def is_executable(command):
return False
# Make sure the command can be executed
- check = subprocess.run([command, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5, universal_newlines=True)
+ check = run([command, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5, universal_newlines=True)
ESSENTIAL_BINARIES[command]['output'] = check.stdout
if check.returncode in [0, 1]: # Older versions of dfu-programmer exit 1
@@ -207,19 +208,19 @@ def doctor(cli):
ok = True
# Determine our OS and run platform specific tests
- OS = platform.platform().lower() # noqa (N806), uppercase name is ok in this instance
+ platform_id = platform.platform().lower()
- if 'darwin' in OS or 'macos' in OS:
+ if 'darwin' in platform_id or 'macos' in platform_id:
if not os_test_macos():
ok = False
- elif 'linux' in OS:
+ elif 'linux' in platform_id:
if not os_test_linux():
ok = False
- elif 'windows' in OS:
+ elif 'windows' in platform_id:
if not os_test_windows():
ok = False
else:
- cli.log.error('Unsupported OS detected: %s', OS)
+ cli.log.error('Unsupported OS detected: %s', platform_id)
ok = False
# Make sure the basic CLI tools we need are available and can be executed.
@@ -227,7 +228,7 @@ def doctor(cli):
if not bin_ok:
if yesno('Would you like to install dependencies?', default=True):
- subprocess.run(['util/qmk_install.sh'])
+ run(['util/qmk_install.sh'])
bin_ok = check_binaries()
if bin_ok:
diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py
index 3d4ed16163..3424cdf085 100644
--- a/lib/python/qmk/commands.py
+++ b/lib/python/qmk/commands.py
@@ -1,6 +1,10 @@
"""Helper functions for commands.
"""
import json
+import os
+import platform
+import subprocess
+import shlex
import qmk.keymap
@@ -61,3 +65,19 @@ def parse_configurator_json(configurator_file):
user_keymap = json.load(configurator_file)
return user_keymap
+
+
+def run(command, *args, **kwargs):
+ """Run a command with subprocess.run
+ """
+ platform_id = platform.platform().lower()
+
+ if isinstance(command, str):
+ raise TypeError('`command` must be a non-text sequence such as list or tuple.')
+
+ if 'windows' in platform_id:
+ safecmd = map(shlex.quote, command)
+ safecmd = ' '.join(safecmd)
+ command = [os.environ['SHELL'], '-c', safecmd]
+
+ return subprocess.run(command, *args, **kwargs)
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py
index a2595eb788..3b4e66a211 100644
--- a/lib/python/qmk/tests/test_cli_commands.py
+++ b/lib/python/qmk/tests/test_cli_commands.py
@@ -1,9 +1,10 @@
import subprocess
+from qmk.commands import run
def check_subcommand(command, *args):
cmd = ['bin/qmk', command] + list(args)
- return subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+ return run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
def test_cformat():
From defa1a1dc770c616b6cc79d9df7012e7f0af83a2 Mon Sep 17 00:00:00 2001
From: Salicylic-acid3 <46864619+Salicylic-acid3@users.noreply.github.com>
Date: Mon, 30 Mar 2020 04:42:15 +0900
Subject: [PATCH 43/47] [Keyboard] Add keyboard jisplit89 (#8501)
* Add keyboard jisplit89
Add jisplit89 keyboard.
A 89 keys JIS Layout keyboard.
Salicylic-acid3
* Update keyboards/jisplit89/keymaps/default/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/jisplit89/keymaps/default/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/jisplit89/keymaps/default/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: Drashna Jaelre
* Update keyboards/jisplit89/readme.md
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
* Update keyboards/jisplit89/rev1/rev1.h
Co-Authored-By: shela
* Copyright has been updated.
Changed signature to Salicylic_acid3 and changed year to 2020.
* Update readme
Added a note to the build guide.
* Remove unnecessary definitions.
Remove unnecessary definitions.
* Update keyboards/jisplit89/keymaps/default/keymap.c
Co-Authored-By: Joel Challis
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: Joel Challis
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/rules.mk
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/rules.mk
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/info.json
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/default/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/default/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Update keyboards/jisplit89/keymaps/salicylic/keymap.c
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
* Delete config.h
Removed to make it more default
Co-authored-by: Drashna Jaelre
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-authored-by: shela
Co-authored-by: Joel Challis
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
---
keyboards/jisplit89/config.h | 21 +++
keyboards/jisplit89/info.json | 102 +++++++++++++
keyboards/jisplit89/jisplit89.c | 1 +
keyboards/jisplit89/jisplit89.h | 5 +
keyboards/jisplit89/keymaps/default/keymap.c | 75 +++++++++
.../jisplit89/keymaps/salicylic/config.h | 22 +++
.../jisplit89/keymaps/salicylic/keymap.c | 143 ++++++++++++++++++
.../jisplit89/keymaps/salicylic/rules.mk | 2 +
keyboards/jisplit89/readme.md | 17 +++
keyboards/jisplit89/rev1/config.h | 83 ++++++++++
keyboards/jisplit89/rev1/rev1.c | 1 +
keyboards/jisplit89/rev1/rev1.h | 49 ++++++
keyboards/jisplit89/rev1/rules.mk | 0
keyboards/jisplit89/rules.mk | 38 +++++
14 files changed, 559 insertions(+)
create mode 100644 keyboards/jisplit89/config.h
create mode 100644 keyboards/jisplit89/info.json
create mode 100644 keyboards/jisplit89/jisplit89.c
create mode 100644 keyboards/jisplit89/jisplit89.h
create mode 100644 keyboards/jisplit89/keymaps/default/keymap.c
create mode 100644 keyboards/jisplit89/keymaps/salicylic/config.h
create mode 100644 keyboards/jisplit89/keymaps/salicylic/keymap.c
create mode 100644 keyboards/jisplit89/keymaps/salicylic/rules.mk
create mode 100644 keyboards/jisplit89/readme.md
create mode 100644 keyboards/jisplit89/rev1/config.h
create mode 100644 keyboards/jisplit89/rev1/rev1.c
create mode 100644 keyboards/jisplit89/rev1/rev1.h
create mode 100644 keyboards/jisplit89/rev1/rules.mk
create mode 100644 keyboards/jisplit89/rules.mk
diff --git a/keyboards/jisplit89/config.h b/keyboards/jisplit89/config.h
new file mode 100644
index 0000000000..cfb6bf4ffc
--- /dev/null
+++ b/keyboards/jisplit89/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/jisplit89/info.json b/keyboards/jisplit89/info.json
new file mode 100644
index 0000000000..5d029f6c2a
--- /dev/null
+++ b/keyboards/jisplit89/info.json
@@ -0,0 +1,102 @@
+{
+ "keyboard_name": "jisplit89",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "width": 17,
+ "height": 6.25,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":10.75, "y":0},
+ {"label":"F10", "x":11.75, "y":0},
+ {"label":"F11", "x":12.75, "y":0},
+ {"label":"F12", "x":13.75, "y":0},
+ {"label":"Insert", "x":15, "y":0},
+ {"label":"Print Screen", "x":16, "y":0},
+ {"label":"Hankaku/Zenkaku", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"\"", "x":2, "y":1.25},
+ {"label":"#", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"'", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"~", "x":13, "y":1.25},
+ {"label":"|", "x":14, "y":1.25},
+ {"label":"Back", "x":15, "y":1.25},
+ {"label":"Del", "x":16, "y":1.25},
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":7.5, "y":2.25},
+ {"label":"U", "x":8.5, "y":2.25},
+ {"label":"I", "x":9.5, "y":2.25},
+ {"label":"O", "x":10.5, "y":2.25},
+ {"label":"P", "x":11.5, "y":2.25},
+ {"label":"`", "x":12.5, "y":2.25},
+ {"label":"{", "x":13.5, "y":2.25},
+ {"label":"Home", "x":16, "y":2.25},
+ {"label":"Caps", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":7.75, "y":3.25},
+ {"label":"J", "x":8.75, "y":3.25},
+ {"label":"K", "x":9.75, "y":3.25},
+ {"label":"L", "x":10.75, "y":3.25},
+ {"label":"+", "x":11.75, "y":3.25},
+ {"label":"*", "x":12.75, "y":3.25},
+ {"label":"}", "x":13.75, "y":3.25},
+ {"label":"Return", "x":14.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"End", "x":16, "y":3.25},
+ {"label":"Shift", "x":0, "y":4.25, "w":2},
+ {"label":"Z", "x":2, "y":4.25},
+ {"label":"X", "x":3, "y":4.25},
+ {"label":"C", "x":4, "y":4.25},
+ {"label":"V", "x":5, "y":4.25},
+ {"label":"B", "x":6, "y":4.25},
+ {"label":"N", "x":8, "y":4.25},
+ {"label":"M", "x":9, "y":4.25},
+ {"label":"<", "x":10, "y":4.25},
+ {"label":">", "x":11, "y":4.25},
+ {"label":"?", "x":12, "y":4.25},
+ {"label":"_", "x":13, "y":4.25},
+ {"label":"PgDwn", "x":14, "y":4.25},
+ {"label":"Up", "x":15, "y":4.25},
+ {"label":"PgUp", "x":16, "y":4.25},
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25},
+ {"label":"Alt", "x":2.25, "y":5.25, "w":1.25},
+ {"label":"Muhenkan", "x":3.5, "y":5.25},
+ {"label":"Alt", "x":4.5, "y":5.25, "w":1.25},
+ {"label":"1", "x":5.75, "y":5.25},
+ {"label":"2", "x":7.75, "y":5.25},
+ {"label":"Ctrl", "x":8.75, "y":5.25, "w":1.25},
+ {"label":"Henkan", "x":10, "y":5.25, "w":1.25},
+ {"label":"Kana", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"App", "x":12.5, "y":5.25},
+ {"label":"Left", "x":14, "y":5.25},
+ {"label":"Down", "x":15, "y":5.25},
+ {"label":"Right", "x":16, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/jisplit89/jisplit89.c b/keyboards/jisplit89/jisplit89.c
new file mode 100644
index 0000000000..f57f71a6fc
--- /dev/null
+++ b/keyboards/jisplit89/jisplit89.c
@@ -0,0 +1 @@
+#include "jisplit89.h"
diff --git a/keyboards/jisplit89/jisplit89.h b/keyboards/jisplit89/jisplit89.h
new file mode 100644
index 0000000000..ab1ed00ba6
--- /dev/null
+++ b/keyboards/jisplit89/jisplit89.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#ifdef KEYBOARD_jisplit89_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/jisplit89/keymaps/default/keymap.c b/keyboards/jisplit89/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c1a33478c1
--- /dev/null
+++ b/keyboards/jisplit89/keymaps/default/keymap.c
@@ -0,0 +1,75 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ 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_INS, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+LT(_ADJUST,KC_ZKHK),KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_EQL, JP_YEN, KC_BSPC, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_QUOT, JP_RBRC, KC_ENT, KC_END,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_PGDN, KC_UP, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_HENK, KC_KANA, KC_APP, KC_LEFT, KC_DOWN,KC_RIGHT
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ ),
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ MO(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ )
+};
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ switch (keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
diff --git a/keyboards/jisplit89/keymaps/salicylic/config.h b/keyboards/jisplit89/keymaps/salicylic/config.h
new file mode 100644
index 0000000000..81ee8ef785
--- /dev/null
+++ b/keyboards/jisplit89/keymaps/salicylic/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/jisplit89/keymaps/salicylic/keymap.c b/keyboards/jisplit89/keymaps/salicylic/keymap.c
new file mode 100644
index 0000000000..31fb232161
--- /dev/null
+++ b/keyboards/jisplit89/keymaps/salicylic/keymap.c
@@ -0,0 +1,143 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _MOUSE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+enum tapdances{
+ TD_ESMS = 0,
+ TD_ESAR,
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _MOUSE),
+ [TD_ESAR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ TD(TD_ESMS), 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_INS, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_EQL, JP_YEN, KC_BSPC, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_QUOT, JP_RBRC, KC_ENT, KC_END,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_PGDN, KC_UP, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_ZKHK, KC_LGUI, KC_LALT,KC_MHEN,LT(_LOWER,KC_ENT),KC_BSPC,KC_DEL,LT(_RAISE,KC_SPC),KC_HENK, KC_KANA, KC_APP, KC_LEFT, KC_DOWN,KC_RIGHT
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ ),
+
+ [_MOUSE] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ TD(TD_ESAR), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCTL(KC_W),
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCTL(LSFT(KC_T)),
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, KC_END,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, KC_PGDN, KC_UP, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, MO(_LOWER), _______, _______,MO(_RAISE),_______,_______, _______, KC_LEFT, KC_DOWN,KC_RIGHT
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, XXXXXXX, _______, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+LCTL_T(KC_F11),XXXXXXX, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX, XXXXXXX, _______, _______, KC_END,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, _______, KC_PGDN, KC_UP, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-----------------------------------------------------| |--------------------------------------------------------------------------------.
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
+ //`-----------------------------------------------------| |--------------------------------------------------------------------------------'
+ )
+};
+
+//A description for expressing the layer position in LED mode.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+return state;
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ bool result = false;
+ switch (keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_get_mode();
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
diff --git a/keyboards/jisplit89/keymaps/salicylic/rules.mk b/keyboards/jisplit89/keymaps/salicylic/rules.mk
new file mode 100644
index 0000000000..0bcbf86d5e
--- /dev/null
+++ b/keyboards/jisplit89/keymaps/salicylic/rules.mk
@@ -0,0 +1,2 @@
+TAP_DANCE_ENABLE = yes
+MOUSEKEY_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/jisplit89/readme.md b/keyboards/jisplit89/readme.md
new file mode 100644
index 0000000000..e7472ab966
--- /dev/null
+++ b/keyboards/jisplit89/readme.md
@@ -0,0 +1,17 @@
+# JISplit89
+
+![jisplit89](https://s2.booth.pm/1d33594d-0c5f-4f93-baf5-2e89e0d99afc/i/1916810/82322b65-7867-4779-b7f4-9076530d9e33_base_resized.jpg)
+
+This is 89 keys Custom keyboard.
+
+* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
+* Hardware Supported: jisplit89 PCB, Pro Micro
+* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/1916810)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jisplit89:default
+
+See 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).
+
+[Build guide](https://salicylic-acid3.hatenablog.com/entry/7skb-mx-build-guide)(See here because it is almost the same as 7sKB)
diff --git a/keyboards/jisplit89/rev1/config.h b/keyboards/jisplit89/rev1/config.h
new file mode 100644
index 0000000000..a745ec8342
--- /dev/null
+++ b/keyboards/jisplit89/rev1/config.h
@@ -0,0 +1,83 @@
+/*
+Copyright 2020 Salicylic_acid3
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3060
+#define DEVICE_VER 0x06ae
+#define MANUFACTURER Salicylic_Acid
+#define PRODUCT jisplit89
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 8
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B5 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+#define SPLIT_HAND_PIN B6
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifndef RGBLED_NUM
+ #define RGBLED_NUM 31
+ #define RGBLIGHT_SPLIT
+ #define RGBLED_SPLIT { 11, 20 }
+#endif
+
+#define RGBLIGHT_ANIMATIONS
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
diff --git a/keyboards/jisplit89/rev1/rev1.c b/keyboards/jisplit89/rev1/rev1.c
new file mode 100644
index 0000000000..520a869e57
--- /dev/null
+++ b/keyboards/jisplit89/rev1/rev1.c
@@ -0,0 +1 @@
+#include "rev1.h"
diff --git a/keyboards/jisplit89/rev1/rev1.h b/keyboards/jisplit89/rev1/rev1.h
new file mode 100644
index 0000000000..13fb08dfea
--- /dev/null
+++ b/keyboards/jisplit89/rev1/rev1.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "jisplit89.h"
+
+#include "quantum.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// When only use JISplit89.
+//////////////////////////////////////////////////////////////////////////////
+/*
+ * ,-------------------------------------- ----------------------------------------------------------.
+ * | L00 | L01 | L02 | L03 | L04 | L05 | | R00 | R01 | R02 | R03 | R04 | R05 | R06 | R07 | R60 |
+ * |-------------------------------------- ------------------------------------------------------------+
+ * | L10 | L11 | L12 | L13 | L14 | L15 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R17 | R61 | R62 |
+ * |---------------------------------------------------------------------------------------------------+
+ * | L20 | L21 | L22 | L23 | L24 | L25 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 | R27 | R63 |
+ * |---------------------------------------- ---------------------------------------------------------+
+ * | L30 | L31 | L32 | L33 | L34 | L35 | | R30 | R31 | R32 | R33 | R34 | R35 | R36 | | R37 |
+ * |---------------------------------------------------------------------------------------------------+
+ * | L40 | L41 | L42 | L43 | L44 | L45 | | R40 | R41 | R42 | R43 | R44 | R45 | R46 | R47 | R57 |
+ * |------------------------------------------- -----------------------------------------------------+
+ * | L50 | L51 | L52 | L53 | L54 | L55 | | R50 | R51 | R52 | R53 | R54 | | R55 | R56 | R64 |
+ * |---------------------------------------- ------------------------------------------------------'
+ */
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, R60, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R61, R62, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R27, R63, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, R37, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, R46, R47, R57, \
+ L50, L51, L52, L53, L54, L55, R50, R51, R52, R53, R54, R55, R56, R64 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, KC_NO, KC_NO }, \
+ { L40, L41, L42, L43, L44, L45, KC_NO, KC_NO }, \
+ { L50, L51, L52, L53, L54, L55, KC_NO, KC_NO }, \
+ {KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 }, \
+ { R50, R51, R52, R53, R54, R55, R56, R57 }, \
+ { R60, R61, R62, R63, R64, KC_NO, KC_NO, KC_NO } \
+ }
diff --git a/keyboards/jisplit89/rev1/rules.mk b/keyboards/jisplit89/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/keyboards/jisplit89/rules.mk b/keyboards/jisplit89/rules.mk
new file mode 100644
index 0000000000..c78aa66ba5
--- /dev/null
+++ b/keyboards/jisplit89/rules.mk
@@ -0,0 +1,38 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
+UNICODE_ENABLE = no # Unicode
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = jisplit89/rev1
From dc98d44582eac7b4bcdafc21e5c43814aa7959ab Mon Sep 17 00:00:00 2001
From: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Date: Mon, 30 Mar 2020 05:00:47 +0900
Subject: [PATCH 44/47] [Docs] added the description of the reading order of
the rules.mk files. (#8566)
* added the description of the reading order of the rules.mk files.
* Update docs/hardware_keyboard_guidelines.md
Co-Authored-By: Ryan
* Update docs/hardware_keyboard_guidelines.md
Co-Authored-By: Ryan
Co-authored-by: Ryan
---
docs/hardware_keyboard_guidelines.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index 4d893074eb..a862bc0ca8 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -116,6 +116,21 @@ The `post_config.h` file can be used for additional post-processing, depending o
The presence of this file means that the folder is a keyboard target and can be used in `make` commands. This is where you setup the build environment for your keyboard and configure the default set of features.
+The `rules.mk` file can also be placed in a sub-folder, and its reading order is as follows:
+
+* `keyboards/top_folder/rules.mk`
+ * `keyboards/top_folder/sub_1/rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
+ * `keyboards/top_folder/keymaps/a_keymap/rules.mk`
+ * `users/a_user_folder/rules.mk`
+* `common_features.mk`
+
+Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
+
+?> See `build_keyboard.mk` and `common_features.mk` for more details.
+
### ``
This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank.
From 74c01654c771f120ab29ffabac833497a086eacf Mon Sep 17 00:00:00 2001
From: George Petri
Date: Mon, 30 Mar 2020 00:14:43 +0300
Subject: [PATCH 45/47] Update keymap keebio/nyquist (#8602)
* format code, add shift color
* testing colors
* todos, shift on right
* changed colors
* use rgh layers api
* impl shift layer
* replace xor with !=
* moved shift rbg
* breathing animation, simplyfy layers
* remove breating animation
* use tt
* minor cleanup
* debounce eager, lto
* shut down rbg when poweroff
* update readme
* readme.md fix
* more readme.md fix
* more readme.md fix
---
.../nyquist/keymaps/georgepetri/config.h | 10 +--
.../nyquist/keymaps/georgepetri/keymap.c | 77 +++++++++++--------
.../nyquist/keymaps/georgepetri/readme.md | 12 +--
.../nyquist/keymaps/georgepetri/rules.mk | 4 +-
4 files changed, 60 insertions(+), 43 deletions(-)
diff --git a/keyboards/keebio/nyquist/keymaps/georgepetri/config.h b/keyboards/keebio/nyquist/keymaps/georgepetri/config.h
index bc7fed826d..d13d3294fd 100644
--- a/keyboards/keebio/nyquist/keymaps/georgepetri/config.h
+++ b/keyboards/keebio/nyquist/keymaps/georgepetri/config.h
@@ -17,11 +17,9 @@ along with this program. If not, see .
#pragma once
-// #define USE_I2C
-
-/* Select hand configuration */
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
#undef RGBLED_NUM
#define RGBLED_NUM 12
+#define RGBLIGHT_LAYERS
+
+#define TAPPING_TOGGLE 2
+#define TAPPING_TERM 150
diff --git a/keyboards/keebio/nyquist/keymaps/georgepetri/keymap.c b/keyboards/keebio/nyquist/keymaps/georgepetri/keymap.c
index 6b427e06d5..96ea4ff199 100644
--- a/keyboards/keebio/nyquist/keymaps/georgepetri/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/georgepetri/keymap.c
@@ -6,10 +6,6 @@ extern keymap_config_t keymap_config;
#define _L 1
#define _R 2
-enum custom_keycodes {
- QWERTY = SAFE_RANGE
-};
-
#define KC_TL LCTL(KC_PGUP)
#define KC_TR LCTL(KC_PGDN)
#define KC_TC LCTL(KC_W)
@@ -26,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT ,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CAPS, KC_LCTL, KC_LGUI, KC_LALT, MO(_L) , KC_SPC , KC_SPC , TG(_R) , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
+ KC_CAPS, KC_LCTL, KC_LGUI, KC_LALT, MO(_L) , KC_SPC , KC_RSFT, TT(_R) , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
//└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
),
@@ -59,33 +55,54 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
+const rgblight_segment_t PROGMEM left[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 12, HSV_MAGENTA}
+);
+
+const rgblight_segment_t PROGMEM right[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 12, HSV_RED}
+);
+
+const rgblight_segment_t PROGMEM capslock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_GOLD},
+ {6, 3, HSV_GOLD}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(left, right, capslock);
+
void keyboard_post_init_user(void) {
- rgblight_sethsv_noeeprom(HSV_BLUE);
+ rgblight_sethsv_noeeprom(HSV_SPRINGGREEN);
+ rgblight_layers = rgb_layers;
}
-void update_led(void) {
- switch (biton32(layer_state)) {
- case _BASE:
- rgblight_sethsv_noeeprom(HSV_BLUE);
- break;
- case _L:
- rgblight_sethsv_noeeprom(HSV_CORAL);
- break;
- case _R:
- rgblight_sethsv_noeeprom(HSV_MAGENTA);
- break;
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _L));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _R));
+ return state;
+}
+
+void suspend_power_down_user(void) {
+ rgblight_disable();
+}
+
+void suspend_wakeup_init_user(void) {
+ rgblight_enable();
+}
+
+bool is_shift_pressed = false;
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(2, is_shift_pressed != led_state.caps_lock);
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case KC_LSFT:
+ case KC_RSFT:
+ is_shift_pressed = record->event.pressed;
+ rgblight_set_layer_state(2, is_shift_pressed != host_keyboard_led_state().caps_lock);
+ default:
+ return true;
}
- if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
- rgblight_sethsv_range(HSV_WHITE,0,3);
- rgblight_sethsv_range(HSV_WHITE,9,12);
- }
-}
-
-uint32_t layer_state_set_user(uint32_t state) {
- update_led();
- return state;
-}
-
-void led_set_user(uint8_t usb_led) {
- update_led();
}
diff --git a/keyboards/keebio/nyquist/keymaps/georgepetri/readme.md b/keyboards/keebio/nyquist/keymaps/georgepetri/readme.md
index a659905f8f..5d1855e933 100644
--- a/keyboards/keebio/nyquist/keymaps/georgepetri/readme.md
+++ b/keyboards/keebio/nyquist/keymaps/georgepetri/readme.md
@@ -1,7 +1,7 @@
# George Petri's Nyquist layout
```
-make keebio/nyquist/rev2:georgepetri
+sudo make keebio/nyquist/rev2:georgepetri:dfu
```
Features a dedicated navigation layer on rise and current layer status on rgb underglow.
@@ -15,9 +15,9 @@ Features a dedicated navigation layer on rise and current layer status on rgb un
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ ESC │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ SCLN│ QUOT │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
-│ LSFT│ Z │ X │ C │ V │ B │ │ N │ M │ COMM │ DOT │ SLSH│ ENT │
+│ LSFT│ Z │ X │ C │ V │ B │ │ N │ M │ COMM│ DOT │ SLSH│ ENT │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
-│ CAPS│ LCTL│ LGUI │ LALT │MO(_L)│ SPC │ │ SPC │MO(_R)│ LEFT │ DOWN│ UP │ RGHT │
+│ CAPS│ LCTL│ LGUI │ LALT │MO(_L)│ SPC │ │ RSFT│MO(_R)│ LEFT│ DOWN│ UP │ RGHT │
└──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘
```
@@ -28,7 +28,7 @@ Features a dedicated navigation layer on rise and current layer status on rgb un
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ F11 │ F12 │ │ │ │ │ │ MINS│ EQL │ LBRC│ RBRC│ BSLS │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
-│ │ │ │ │ │ │ │ LEFT │ DOWN │ UP │ RGHT │ │ │
+│ │ │ │ │ │ │ │ LEFT│ DOWN│ UP │ RGHT│ │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ │ │ │ PGDN│ PGUP │ HOME│ END │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
@@ -43,9 +43,9 @@ Features a dedicated navigation layer on rise and current layer status on rgb un
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ TAB_L│ TAB_R│ TAB_C│ TAB_R│ │ │ │ TAB_L│ TAB_R│ TAB_C│ TAB_R│ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
-│ │ LEFT │ DOWN │ UP │ RGHT │ │ │ LEFT │ DOWN │ UP │ RGHT │ │ │
+│ │ LEFT│ DOWN│ UP │ RGHT│ │ │ LEFT│ DOWN│ UP │ RGHT│ │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
-│ │ PGDN │ PGUP │ HOME│ END │ │ │ │ PGDN │ PGUP │ HOME│ END │ │
+│ │ PGDN│ PGUP│ HOME│ END │ │ │ │ PGDN│ PGUP│ HOME│ END │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │
└──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘
diff --git a/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk b/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk
index 2e145d5a88..4010d90f03 100644
--- a/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk
+++ b/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk
@@ -1,3 +1,5 @@
-RGBLIGHT_ENABLE = yes
MOUSEKEY_ENABLE = no
COMMAND_ENABLE = no
+RGBLIGHT_ENABLE = yes
+LTO_ENABLE = yes
+DEBOUNCE_TYPE = eager_pk
From bfef2c7b0583e5b48bba9a0fd92934b395c0b08d Mon Sep 17 00:00:00 2001
From: Danny
Date: Mon, 30 Mar 2020 02:47:45 -0400
Subject: [PATCH 46/47] [Keyboard] Iris via changes (#8597)
* Change PID to allow differentiation between Rev. 3 and Rev. 4
* Rebadge thumb keys in macro to show physical wiring better
* Add more rules for VIA keymap
---
keyboards/keebio/iris/keymaps/via/rules.mk | 1 +
keyboards/keebio/iris/rev2/config.h | 4 ++--
keyboards/keebio/iris/rev3/config.h | 2 +-
keyboards/keebio/iris/rev3/rev3.h | 8 ++++----
keyboards/keebio/iris/rev4/config.h | 4 ++--
5 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/keyboards/keebio/iris/keymaps/via/rules.mk b/keyboards/keebio/iris/keymaps/via/rules.mk
index 1e5b99807c..92f9671eeb 100644
--- a/keyboards/keebio/iris/keymaps/via/rules.mk
+++ b/keyboards/keebio/iris/keymaps/via/rules.mk
@@ -1 +1,2 @@
VIA_ENABLE = yes
+LINK_TIME_OPTIMIZATION_ENABLE = yes
diff --git a/keyboards/keebio/iris/rev2/config.h b/keyboards/keebio/iris/rev2/config.h
index 369dfe5fc1..4ead367d3c 100644
--- a/keyboards/keebio/iris/rev2/config.h
+++ b/keyboards/keebio/iris/rev2/config.h
@@ -19,10 +19,10 @@ along with this program. If not, see .
/* USB Device descriptor parameter */
#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1256
+#define PRODUCT_ID 0x2256
#define DEVICE_VER 0x0200
#define MANUFACTURER Keebio
-#define PRODUCT Iris Keyboard
+#define PRODUCT Keebio Iris Rev. 2
#define DESCRIPTION Split 50 percent ergonomic keyboard
/* key matrix size */
diff --git a/keyboards/keebio/iris/rev3/config.h b/keyboards/keebio/iris/rev3/config.h
index 7cda7d1f0e..945b8e9c2a 100644
--- a/keyboards/keebio/iris/rev3/config.h
+++ b/keyboards/keebio/iris/rev3/config.h
@@ -22,7 +22,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x1256
#define DEVICE_VER 0x0300
#define MANUFACTURER Keebio
-#define PRODUCT Iris Keyboard
+#define PRODUCT Keebio Iris Rev. 3
#define DESCRIPTION Split 50 percent ergonomic keyboard
/* key matrix size */
diff --git a/keyboards/keebio/iris/rev3/rev3.h b/keyboards/keebio/iris/rev3/rev3.h
index da9da84403..a968c47ed6 100644
--- a/keyboards/keebio/iris/rev3/rev3.h
+++ b/keyboards/keebio/iris/rev3/rev3.h
@@ -16,18 +16,18 @@
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, LT4, RT4, R30, R31, R32, R33, R34, R35, \
- LT1, LT2, LT3, RT3, RT2, RT1 \
+ L30, L31, L32, L33, L34, L35, L42, R43, R30, R31, R32, R33, R34, R35, \
+ L43, L44, L45, R40, R41, R42 \
) \
{ \
{ L00, L01, L02, L03, L04, L05 }, \
{ L10, L11, L12, L13, L14, L15 }, \
{ L20, L21, L22, L23, L24, L25 }, \
{ L30, L31, L32, L33, L34, L35 }, \
- { KC_NO, KC_NO, LT4, LT1, LT2, LT3 }, \
+ { KC_NO, KC_NO, L42, L43, L44, L45 }, \
{ R05, R04, R03, R02, R01, R00 }, \
{ R15, R14, R13, R12, R11, R10 }, \
{ R25, R24, R23, R22, R21, R20 }, \
{ R35, R34, R33, R32, R31, R30 }, \
- { KC_NO, KC_NO, RT4, RT1, RT2, RT3 } \
+ { KC_NO, KC_NO, R43, R42, R41, R40 } \
}
diff --git a/keyboards/keebio/iris/rev4/config.h b/keyboards/keebio/iris/rev4/config.h
index cc569c22f8..fb8b69ada7 100644
--- a/keyboards/keebio/iris/rev4/config.h
+++ b/keyboards/keebio/iris/rev4/config.h
@@ -19,10 +19,10 @@ along with this program. If not, see .
/* USB Device descriptor parameter */
#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1256
+#define PRODUCT_ID 0x4256
#define DEVICE_VER 0x0400
#define MANUFACTURER Keebio
-#define PRODUCT Iris Keyboard
+#define PRODUCT Keebio Iris Rev. 4
#define DESCRIPTION Split 50 percent ergonomic keyboard
/* key matrix size */
From e90d66f93ea8b164f38c3679444ee6252182c02d Mon Sep 17 00:00:00 2001
From: Damien
Date: Mon, 30 Mar 2020 08:51:53 +0200
Subject: [PATCH 47/47] [Keymap] Cleaning dbroqua's HHKB layout (#8578)
* Cleaning dbroqua's HHKB layout
Removed _ADJUST layout and integrate move directly on _FN layout.
* Update readme.md
* use enum
---
keyboards/hhkb/keymaps/dbroqua/keymap.c | 69 ++++--------------------
keyboards/hhkb/keymaps/dbroqua/readme.md | 25 +++++++--
2 files changed, 29 insertions(+), 65 deletions(-)
diff --git a/keyboards/hhkb/keymaps/dbroqua/keymap.c b/keyboards/hhkb/keymaps/dbroqua/keymap.c
index 4da9b1d4ab..e230a87fb2 100644
--- a/keyboards/hhkb/keymaps/dbroqua/keymap.c
+++ b/keyboards/hhkb/keymaps/dbroqua/keymap.c
@@ -3,18 +3,10 @@
*/
#include QMK_KEYBOARD_H
-enum planck_layers
-{
- _DEFAULT,
- _ALTERNATE,
- _FN,
- _ADJUST
-};
-
-enum planck_keycodes
-{
- DEF = SAFE_RANGE,
- ALT
+enum planck_layers {
+ _DEFAULT,
+ _ALTERNATE,
+ _FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -28,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | fn |
* +-----------------------------------------------------------------------------------------+
- * | Alt | Gui | Space | Gui | Alt |
+ * | Alt | Gui | Space | Gui |RCtrl|
* `----------------------------------------------------------------´
*/
[_DEFAULT] = LAYOUT(
@@ -36,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_BSPC,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
- KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT),
+ KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RCTL),
/* Alternamte layer: swap alt/gui
* ,-----------------------------------------------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
@@ -47,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | fn |
* +-----------------------------------------------------------------------------------------+
- * | Gui | Alt | Space | AltGr | RGui|
+ * | Gui | Alt | Space | AltGr |RCtrl|
* `----------------------------------------------------------------´
*/
[_ALTERNATE] = LAYOUT(
@@ -55,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_BSPC,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
- KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, KC_RGUI),
+ KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, KC_RCTL),
/* FN Layer
* ,-----------------------------------------------------------------------------------------.
@@ -75,27 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, TG(_ADJUST), KC_MSTP, KC_TRNS),
-
- /* SWITCH LAYOUT
- * ,-----------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | | | | | | | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | | | | | | |
- * |-----------------------------------------------------------------------------------------+
- * | | | | | | | | | | | | | |
- * +-----------------------------------------------------------------------------------------+
- * | | | | | |
- * `----------------------------------------------------------------´
- */
- [_ADJUST] = LAYOUT(
- 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, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- DEF, ALT, KC_TRNS, KC_TRNS, KC_TRNS)};
+ DF(_DEFAULT), DF(_ALTERNATE), KC_TRNS, KC_MSTP, KC_TRNS)};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
@@ -115,26 +87,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
return MACRO_NONE;
};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record)
-{
- switch (keycode)
- {
- case DEF:
- if (record->event.pressed)
- {
- print("mode just switched to qwerty and this is a huge string\n");
- set_single_persistent_default_layer(_DEFAULT);
- }
- return false;
- break;
- case ALT:
- if (record->event.pressed)
- {
- set_single_persistent_default_layer(_ALTERNATE);
- }
- return false;
- break;
- }
- return true;
-}
diff --git a/keyboards/hhkb/keymaps/dbroqua/readme.md b/keyboards/hhkb/keymaps/dbroqua/readme.md
index 05ae9ff427..3b8950fee0 100644
--- a/keyboards/hhkb/keymaps/dbroqua/readme.md
+++ b/keyboards/hhkb/keymaps/dbroqua/readme.md
@@ -2,10 +2,25 @@
* Online keyboard layout editor: http://www.keyboard-layout-editor.com/#/gists/78eaf35e80bb714eea80cb4049dedb01
-# Programming Instructions:
+## Switch layout
-Enter into programming mode and run the following command.
+Default bottom layer:
-```
-$ sudo LAYOUT=dbroqua make dfu
-```
+* LALT / LGUI / SPACE / RGUI / RCTRL
+
+Alternate bottom layer:
+
+* LGUI / LALT / SPACE / RALT / RCTRL
+
+To switch from default to alternate (or alternate to default) simple press FN + (LALT/LGUI).
+
+
+## Media keys :
+
+* fn + a = vol_dn
+* fn + s = vol_up
+* fn + d = mute
+* fn + z = previous song
+* fn + x = play/pause
+* fn + c = next song
+* fn + (RGUI/RALT) = stop