diff --git a/keyboards/1upkeyboards/1up60hse/config.h b/keyboards/1upkeyboards/1up60hse/config.h
index 7fc55b04db9..bc1c8a0400d 100644
--- a/keyboards/1upkeyboards/1up60hse/config.h
+++ b/keyboards/1upkeyboards/1up60hse/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1up60hse
-#define DESCRIPTION A custom 60% keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/1upkeyboards/1up60hte/config.h b/keyboards/1upkeyboards/1up60hte/config.h
index c3ba030de99..81fa0e1eb6d 100644
--- a/keyboards/1upkeyboards/1up60hte/config.h
+++ b/keyboards/1upkeyboards/1up60hte/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1up60hte
-#define DESCRIPTION A custom 60% keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/1upkeyboards/1up60rgb/config.h b/keyboards/1upkeyboards/1up60rgb/config.h
index 46e08a5160b..c78fc3e52b5 100644
--- a/keyboards/1upkeyboards/1up60rgb/config.h
+++ b/keyboards/1upkeyboards/1up60rgb/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT 1UP RGB Underglow PCB
-#define DESCRIPTION 60% keyboard with RGB underglow
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/1upkeyboards/super16/config.h b/keyboards/1upkeyboards/super16/config.h
index 3f0d468b7b9..23114c7c693 100644
--- a/keyboards/1upkeyboards/super16/config.h
+++ b/keyboards/1upkeyboards/super16/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER 1upkeyboards
#define PRODUCT super16
-#define DESCRIPTION A 4x4 custom macropad
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/1upkeyboards/sweet16/config.h b/keyboards/1upkeyboards/sweet16/config.h
index 0fc117c5a19..f858685b8f8 100644
--- a/keyboards/1upkeyboards/sweet16/config.h
+++ b/keyboards/1upkeyboards/sweet16/config.h
@@ -6,7 +6,6 @@
#define VENDOR_ID 0x6F75 // OU
#define MANUFACTURER 1up Keyboards
#define PRODUCT Sweet16
-#define DESCRIPTION 4x4 grid
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/2key2crawl/config.h b/keyboards/2key2crawl/config.h
index b93dcc7fa76..27a94a00ca7 100644
--- a/keyboards/2key2crawl/config.h
+++ b/keyboards/2key2crawl/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0002
#define MANUFACTURER WoodKeys.click
#define PRODUCT 2Key2Crawl
-#define DESCRIPTION ATX Keycrawl 2018
/* key matrix size */
#define MATRIX_ROWS 2
diff --git a/keyboards/30wer/config.h b/keyboards/30wer/config.h
index 5a89a35f0d5..d4f656edca9 100644
--- a/keyboards/30wer/config.h
+++ b/keyboards/30wer/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0000
#define MANUFACTURER 8o7wer
#define PRODUCT 30wer
-#define DESCRIPTION Gherkin style construction 30% staggered pcb kit
/* key matrix size */
#define MATRIX_ROWS 3
diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h
index 01ca061a162..ab71fa6cf49 100644
--- a/keyboards/40percentclub/25/config.h
+++ b/keyboards/40percentclub/25/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x0F25
#define MANUFACTURER di0ib
#define PRODUCT The 5x5 Keyboard
-#define DESCRIPTION A split 50 key keyboard
#define USE_SERIAL
/* serial.c configuration for split keyboard */
diff --git a/keyboards/40percentclub/4pack/config.h b/keyboards/40percentclub/4pack/config.h
index 7ccf21ef80f..73ec28bd70d 100644
--- a/keyboards/40percentclub/4pack/config.h
+++ b/keyboards/40percentclub/4pack/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER 40percentclub
#define PRODUCT 4pack
-#define DESCRIPTION A 1x4 custom macropad
/* key matrix size */
#define MATRIX_ROWS 1
diff --git a/keyboards/40percentclub/4x4/config.h b/keyboards/40percentclub/4x4/config.h
index 810f3cf2950..bcd2ba2dbff 100644
--- a/keyboards/40percentclub/4x4/config.h
+++ b/keyboards/40percentclub/4x4/config.h
@@ -10,7 +10,6 @@
#define DEVICE_VER 0x4444
#define MANUFACTURER di0ib
#define PRODUCT The 4x4 Keyboard
-#define DESCRIPTION A modular compact keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/40percentclub/5x5/config.h b/keyboards/40percentclub/5x5/config.h
index 54515583af7..c907d79c89f 100644
--- a/keyboards/40percentclub/5x5/config.h
+++ b/keyboards/40percentclub/5x5/config.h
@@ -10,7 +10,6 @@
#define DEVICE_VER 0x05B5
#define MANUFACTURER di0ib
#define PRODUCT The 5x5 Keyboard
-#define DESCRIPTION A 25 or 50 or 75 key keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h
index 4efa4c99bc2..6c631986260 100644
--- a/keyboards/40percentclub/6lit/config.h
+++ b/keyboards/40percentclub/6lit/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x0F61
#define MANUFACTURER di0ib
#define PRODUCT The 6lit Macropad
-#define DESCRIPTION A split 12 key Macropad
#define USE_SERIAL
diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h
index e501259830c..0c9dfd345e1 100644
--- a/keyboards/40percentclub/foobar/config.h
+++ b/keyboards/40percentclub/foobar/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x0F00
#define MANUFACTURER di0ib
#define PRODUCT The foobar Keyboard
-#define DESCRIPTION A split 30 key keyboard
#define USE_SERIAL
diff --git a/keyboards/40percentclub/gherkin/config.h b/keyboards/40percentclub/gherkin/config.h
index 4dc794e347d..1307ca2e154 100644
--- a/keyboards/40percentclub/gherkin/config.h
+++ b/keyboards/40percentclub/gherkin/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER 40 Percent Club
#define PRODUCT Gherkin
-#define DESCRIPTION A 30 key ortholinear keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/40percentclub/gherkin/keymaps/mjt/config.h b/keyboards/40percentclub/gherkin/keymaps/mjt/config.h
index 9fe94bcd21e..ce9d5ab2ae4 100644
--- a/keyboards/40percentclub/gherkin/keymaps/mjt/config.h
+++ b/keyboards/40percentclub/gherkin/keymaps/mjt/config.h
@@ -2,6 +2,4 @@
/* USB Device descriptor parameter */
#undef MANUFACTURER
-#undef DESCRIPTION
#define MANUFACTURER Some Guy
-#define DESCRIPTION 30 percent disaster
diff --git a/keyboards/40percentclub/half_n_half/config.h b/keyboards/40percentclub/half_n_half/config.h
index e5ea48dd82d..5213a7ecfd5 100644
--- a/keyboards/40percentclub/half_n_half/config.h
+++ b/keyboards/40percentclub/half_n_half/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x4A1F
#define MANUFACTURER di0ib
#define PRODUCT half_n_half
-#define DESCRIPTION A small split ortholinear custom keyboard with 2 thumb buttons
/* key matrix size */
#define MATRIX_ROWS 4*2
diff --git a/keyboards/40percentclub/i75/config.h b/keyboards/40percentclub/i75/config.h
index 69124bc7a33..18197f0b1e8 100644
--- a/keyboards/40percentclub/i75/config.h
+++ b/keyboards/40percentclub/i75/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x0175
#define MANUFACTURER di0ib
#define PRODUCT i75
-#define DESCRIPTION i75 15x5 ortholinear keyboard
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/40percentclub/luddite/config.h b/keyboards/40percentclub/luddite/config.h
index 63158f6c41f..90d84c56e1c 100644
--- a/keyboards/40percentclub/luddite/config.h
+++ b/keyboards/40percentclub/luddite/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x1001
#define MANUFACTURER di0ib
#define PRODUCT Luddite
-#define DESCRIPTION Luddite Keyboard
/* key matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/40percentclub/mf68/config.h b/keyboards/40percentclub/mf68/config.h
index 7c5a0cd5e27..1ff2c189e5e 100644
--- a/keyboards/40percentclub/mf68/config.h
+++ b/keyboards/40percentclub/mf68/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0101
#define MANUFACTURER di0ib
#define PRODUCT MF68
-#define DESCRIPTION Magicforce 68 with programmable PCB replacement
/* key matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/40percentclub/mf68/keymaps/68keys/config.h b/keyboards/40percentclub/mf68/keymaps/68keys/config.h
index a0a576b7bfa..651c17069d3 100644
--- a/keyboards/40percentclub/mf68/keymaps/68keys/config.h
+++ b/keyboards/40percentclub/mf68/keymaps/68keys/config.h
@@ -6,10 +6,8 @@
#undef DEVICE_VER
#undef MANUFACTURER
#undef PRODUCT
-#undef DESCRIPTION
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x0068
#define MANUFACTURER 68Keys.io
#define PRODUCT The 68Keys.io Keyboard
-#define DESCRIPTION A 68 keys mechanical keyboard
diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h b/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
index 7d96ab9e249..bc5de30f2f7 100644
--- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
+++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
@@ -21,10 +21,6 @@ along with this program. If not, see .
/* Overrides for Feather 32u4 Bluefruit */
-/* USB Device descriptor parameter */
-#undef DESCRIPTION
-#define DESCRIPTION Magicforce 68 BLE
-
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/40percentclub/nano/config.h b/keyboards/40percentclub/nano/config.h
index 8ee6963e49c..aa4a64d07dc 100644
--- a/keyboards/40percentclub/nano/config.h
+++ b/keyboards/40percentclub/nano/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER di0ib
#define PRODUCT Nano
-#define DESCRIPTION 8 key microswitch board
/* key matrix size */
#define MATRIX_ROWS 2
diff --git a/keyboards/40percentclub/nein/config.h b/keyboards/40percentclub/nein/config.h
index b96f5fbe5d7..46c166207f0 100644
--- a/keyboards/40percentclub/nein/config.h
+++ b/keyboards/40percentclub/nein/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x9999
#define MANUFACTURER di0ib
#define PRODUCT The nein Keyboard
-#define DESCRIPTION 9 key macropad
/* key matrix size */
#define MATRIX_ROWS 3
diff --git a/keyboards/40percentclub/nori/config.h b/keyboards/40percentclub/nori/config.h
index 8e24ef88e12..9c9cdbcee3f 100644
--- a/keyboards/40percentclub/nori/config.h
+++ b/keyboards/40percentclub/nori/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x0444
#define MANUFACTURER di0ib
#define PRODUCT The nori Keyboard
-#define DESCRIPTION A modular compact keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/40percentclub/tomato/config.h b/keyboards/40percentclub/tomato/config.h
index e131ce5c203..a083223a1f0 100644
--- a/keyboards/40percentclub/tomato/config.h
+++ b/keyboards/40percentclub/tomato/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER 40 Percent Club
#define PRODUCT Tomato
-#define DESCRIPTION A 30 key ortholinear keyboard with RGB backlighting
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/40percentclub/ut47/config.h b/keyboards/40percentclub/ut47/config.h
index 25ef4271fb8..197d6cd181b 100644
--- a/keyboards/40percentclub/ut47/config.h
+++ b/keyboards/40percentclub/ut47/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER 40percent.club
#define PRODUCT ut47
-#define DESCRIPTION An awesome 40% keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/4by3/config.h b/keyboards/4by3/config.h
index 2095ee42c22..daaafb02a6f 100644
--- a/keyboards/4by3/config.h
+++ b/keyboards/4by3/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER Elias Sjögreen
#define PRODUCT 4by3
-#define DESCRIPTION A small 12 key keypad
/* key matrix size */
#define MATRIX_ROWS 3
diff --git a/keyboards/4pplet/aekiso60/rev_a/config.h b/keyboards/4pplet/aekiso60/rev_a/config.h
index 7505bcf7b9d..3100a20feae 100644
--- a/keyboards/4pplet/aekiso60/rev_a/config.h
+++ b/keyboards/4pplet/aekiso60/rev_a/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER 4pplet
#define PRODUCT AEKISO60 Rev A
-#define DESCRIPTION A steezy KEEB
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/4pplet/steezy60/rev_a/config.h b/keyboards/4pplet/steezy60/rev_a/config.h
index 9aceedc6635..8f0c0d95312 100644
--- a/keyboards/4pplet/steezy60/rev_a/config.h
+++ b/keyboards/4pplet/steezy60/rev_a/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER 4pplet
#define PRODUCT Steezy60 Rev A
-#define DESCRIPTION A steezy keeb
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/4pplet/waffling60/rev_a/config.h b/keyboards/4pplet/waffling60/rev_a/config.h
index 6bbc68be60b..33279d67a78 100644
--- a/keyboards/4pplet/waffling60/rev_a/config.h
+++ b/keyboards/4pplet/waffling60/rev_a/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER 4pplet
#define PRODUCT waffling60 Rev A
-#define DESCRIPTION A steezy keeb
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/6ball/config.h b/keyboards/6ball/config.h
index b0e59f20c65..c7d4d3354ac 100644
--- a/keyboards/6ball/config.h
+++ b/keyboards/6ball/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER That-Canadian
#define PRODUCT 6-Ball
-#define DESCRIPTION 6-Ball Macropuck
/* key matrix size */
#define MATRIX_ROWS 1
diff --git a/keyboards/7skb/rev1/config.h b/keyboards/7skb/rev1/config.h
index f1e8b9dafd0..a74cd25c292 100644
--- a/keyboards/7skb/rev1/config.h
+++ b/keyboards/7skb/rev1/config.h
@@ -24,7 +24,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0007
#define MANUFACTURER Salicylic_Acid
#define PRODUCT 7skb
-#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 10
diff --git a/keyboards/9key/config.h b/keyboards/9key/config.h
index 4e5a2fd45b2..3c7b4e0ad67 100644
--- a/keyboards/9key/config.h
+++ b/keyboards/9key/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Bishop Keyboards
#define PRODUCT 9Key
-#define DESCRIPTION Bishop Keyboards 9Key // Charleston, SC Meetup Handout
/* key matrix size */
#define MATRIX_ROWS 3
diff --git a/keyboards/abacus/config.h b/keyboards/abacus/config.h
index bc4120544fd..51ea2fdbaaa 100644
--- a/keyboards/abacus/config.h
+++ b/keyboards/abacus/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER nickolaij
#define PRODUCT abacus
-#define DESCRIPTION A first attempt at a custom keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/absinthe/config.h b/keyboards/absinthe/config.h
index 939b3d06546..3000a4b8a11 100644
--- a/keyboards/absinthe/config.h
+++ b/keyboards/absinthe/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER cfbender
#define PRODUCT absinthe
-#define DESCRIPTION An F-row-less TKL
/* key matrix size */
#define MATRIX_ROWS 9
diff --git a/keyboards/abstract/ellipse/rev1/config.h b/keyboards/abstract/ellipse/rev1/config.h
index a92dd1b0e98..6e41726227e 100644
--- a/keyboards/abstract/ellipse/rev1/config.h
+++ b/keyboards/abstract/ellipse/rev1/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER AbstractKB
#define PRODUCT EllipseRev1
-#define DESCRIPTION The Ellipse Macropad
/* key matrix size */
#define MATRIX_ROWS 2
diff --git a/keyboards/acheron/austin/config.h b/keyboards/acheron/austin/config.h
index c6a41c7bcbd..e90fb0ee7c8 100644
--- a/keyboards/acheron/austin/config.h
+++ b/keyboards/acheron/austin/config.h
@@ -23,7 +23,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER DriftMechanics
#define PRODUCT Austin
-#define DESCRIPTION Austin Keyboard
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/acheron/elongate/config.h b/keyboards/acheron/elongate/config.h
index dfba6728dbe..a4e2aacf750 100644
--- a/keyboards/acheron/elongate/config.h
+++ b/keyboards/acheron/elongate/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Acheron Project
#define PRODUCT Elongate
-#define DESCRIPTION Acheron Project Elongate
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/acheron/keebspcb/config.h b/keyboards/acheron/keebspcb/config.h
index af3abb09e01..70ffc52615b 100644
--- a/keyboards/acheron/keebspcb/config.h
+++ b/keyboards/acheron/keebspcb/config.h
@@ -23,7 +23,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001 // Revision pre-Alpha
#define MANUFACTURER AcheronProject
#define PRODUCT KeebsPCB
-#define DESCRIPTION AcheronProject KeebsPCB
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/acheron/shark/config.h b/keyboards/acheron/shark/config.h
index bb3df338188..537e00f5730 100644
--- a/keyboards/acheron/shark/config.h
+++ b/keyboards/acheron/shark/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER AcheronProject
#define PRODUCT SharkPCB
-#define DESCRIPTION Ortho 40 PCB
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/acr60/config.h b/keyboards/acr60/config.h
index 9b2b2a2f00d..9d844b6d481 100644
--- a/keyboards/acr60/config.h
+++ b/keyboards/acr60/config.h
@@ -9,7 +9,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER MECHKEYS
#define PRODUCT ACR60
-#define DESCRIPTION 60% customizable keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/adelheid/config.h b/keyboards/adelheid/config.h
index 0da0062a748..88942861c7e 100644
--- a/keyboards/adelheid/config.h
+++ b/keyboards/adelheid/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0002
#define MANUFACTURER floookay
#define PRODUCT adelheid
-#define DESCRIPTION 75% alice-like keyboard based on the arisu
/* key matrix size */
#define MATRIX_ROWS 7
diff --git a/keyboards/adkb96/rev1/config.h b/keyboards/adkb96/rev1/config.h
index 42685123b17..c5b768721c3 100644
--- a/keyboards/adkb96/rev1/config.h
+++ b/keyboards/adkb96/rev1/config.h
@@ -22,7 +22,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Bit Trade One
#define PRODUCT ADKB96
-#define DESCRIPTION
/* key matrix size */
// Rows are doubled-up
diff --git a/keyboards/aeboards/aegis/config.h b/keyboards/aeboards/aegis/config.h
index 5836f02bc0a..7f59c520059 100644
--- a/keyboards/aeboards/aegis/config.h
+++ b/keyboards/aeboards/aegis/config.h
@@ -24,7 +24,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER AEboards
#define PRODUCT AEboards Aegis
-#define DESCRIPTION AEboards Aegis
/* key matrix size */
#define MATRIX_ROWS 12
diff --git a/keyboards/ai03/equinox/config.h b/keyboards/ai03/equinox/config.h
index 862b63b2b3a..1441dc16ec5 100644
--- a/keyboards/ai03/equinox/config.h
+++ b/keyboards/ai03/equinox/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER ai03 Design Studio
#define PRODUCT Equinox
-#define DESCRIPTION Compact PCB-mount keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/ai03/lunar/config.h b/keyboards/ai03/lunar/config.h
index 5e23ec55af8..a48d319268f 100644
--- a/keyboards/ai03/lunar/config.h
+++ b/keyboards/ai03/lunar/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Switchplate Peripherals
#define PRODUCT Lunar
-#define DESCRIPTION 65% AEK keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/ai03/orbit/config.h b/keyboards/ai03/orbit/config.h
index be209f83d44..2fc0a168557 100644
--- a/keyboards/ai03/orbit/config.h
+++ b/keyboards/ai03/orbit/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0003
#define MANUFACTURER ai03 Keyboard Designs
#define PRODUCT Orbit
-#define DESCRIPTION Split ergonomic keyboard
/* key matrix size */
#define MATRIX_ROWS 10 // Double rows for split keyboards. Orbit has 5, so define 10
diff --git a/keyboards/ai03/orbit_x/config.h b/keyboards/ai03/orbit_x/config.h
index c21e3e8f65e..aafc53728c6 100644
--- a/keyboards/ai03/orbit_x/config.h
+++ b/keyboards/ai03/orbit_x/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER ai03 Design Studio
#define PRODUCT OrbitX
-#define DESCRIPTION High-end compact ergonomic keyboard
/* key matrix size */
#define MATRIX_ROWS 8 // Double the rows for split
diff --git a/keyboards/ai03/polaris/config.h b/keyboards/ai03/polaris/config.h
index bb3307d97ce..a4d7f945d97 100644
--- a/keyboards/ai03/polaris/config.h
+++ b/keyboards/ai03/polaris/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER ai03 Design Studio
#define PRODUCT Polaris
-#define DESCRIPTION Basic 60% keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/ai03/quasar/config.h b/keyboards/ai03/quasar/config.h
index 077ca3a9faa..67f98a56f12 100644
--- a/keyboards/ai03/quasar/config.h
+++ b/keyboards/ai03/quasar/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Ryota Goto
#define PRODUCT Quasar
-#define DESCRIPTION SSK Controller
/* key matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/akb/eb46/config.h b/keyboards/akb/eb46/config.h
index 965f769ccfc..644cd97305c 100644
--- a/keyboards/akb/eb46/config.h
+++ b/keyboards/akb/eb46/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Elliot Powell
#define PRODUCT eb46
-#define DESCRIPTION eb46 running qmk
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/akb/raine/config.h b/keyboards/akb/raine/config.h
index f5a8b84b6ca..e0377514e25 100644
--- a/keyboards/akb/raine/config.h
+++ b/keyboards/akb/raine/config.h
@@ -24,7 +24,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER AKB
#define PRODUCT Raine
-#define DESCRIPTION Raine
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/al1/config.h b/keyboards/al1/config.h
index 6a59afae7a8..820cbf37f84 100644
--- a/keyboards/al1/config.h
+++ b/keyboards/al1/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0104
#define MANUFACTURER Alsoran
#define PRODUCT AL1
-#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 7
diff --git a/keyboards/alf/dc60/config.h b/keyboards/alf/dc60/config.h
index 098891eee05..15f4a86a4ff 100644
--- a/keyboards/alf/dc60/config.h
+++ b/keyboards/alf/dc60/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Alf
#define PRODUCT dc60
-#define DESCRIPTION custom 60% keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/alf/x11/config.h b/keyboards/alf/x11/config.h
index cd989350904..7fe27b330a1 100644
--- a/keyboards/alf/x11/config.h
+++ b/keyboards/alf/x11/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Alf
#define PRODUCT x11
-#define DESCRIPTION A TKL custom keyboard
/* key matrix size */
#define MATRIX_ROWS 7
diff --git a/keyboards/alf/x2/config.h b/keyboards/alf/x2/config.h
index 205fa358fca..6c9a139c3a8 100644
--- a/keyboards/alf/x2/config.h
+++ b/keyboards/alf/x2/config.h
@@ -9,7 +9,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER ALF
#define PRODUCT X2
-#define DESCRIPTION ALF X2 60
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/allison/config.h b/keyboards/allison/config.h
index 34e3989805b..6e41488fddf 100644
--- a/keyboards/allison/config.h
+++ b/keyboards/allison/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER protoTypist
#define PRODUCT Allison
-#define DESCRIPTION A custom luxurious 60 with F-row and Macro
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/allison_numpad/config.h b/keyboards/allison_numpad/config.h
index 624b96471b3..7824f64d989 100644
--- a/keyboards/allison_numpad/config.h
+++ b/keyboards/allison_numpad/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER protoTypist
#define PRODUCT Allison Numpad
-#define DESCRIPTION A custom luxurious numpad to match Allison
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/alpha/config.h b/keyboards/alpha/config.h
index b7348bef17f..8c7edd57989 100755
--- a/keyboards/alpha/config.h
+++ b/keyboards/alpha/config.h
@@ -9,7 +9,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER PyroL
#define PRODUCT alpha
-#define DESCRIPTION 28-key keyboard by PyroL
/* key matrix size */
#define MATRIX_ROWS 3
diff --git a/keyboards/alps64/config.h b/keyboards/alps64/config.h
index 15903818b9e..31837b3a9ee 100644
--- a/keyboards/alps64/config.h
+++ b/keyboards/alps64/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Hasu
#define PRODUCT Alps64
-#define DESCRIPTION TMK keyboard firmware for Alps64
/* key matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/alu84/config.h b/keyboards/alu84/config.h
index 130e2f1b405..9ebc1569e30 100755
--- a/keyboards/alu84/config.h
+++ b/keyboards/alu84/config.h
@@ -25,7 +25,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER MECHKEYS
#define PRODUCT ALU84
-#define DESCRIPTION 75% keyboard
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/amj40/config.h b/keyboards/amj40/config.h
index 5534dbf10c0..f445107eee1 100755
--- a/keyboards/amj40/config.h
+++ b/keyboards/amj40/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0002
#define MANUFACTURER Han Chen
#define PRODUCT AMJ40
-#define DESCRIPTION qmk port of AMJ40 v2 PCB
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/amj60/config.h b/keyboards/amj60/config.h
index 79cfbe59e41..008539368dc 100644
--- a/keyboards/amj60/config.h
+++ b/keyboards/amj60/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Han Chen
#define PRODUCT AMJ60
-#define DESCRIPTION qmk port of AMJ60 PCB
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/amj96/config.h b/keyboards/amj96/config.h
index 8b56aaf7f87..6ddba90c79c 100644
--- a/keyboards/amj96/config.h
+++ b/keyboards/amj96/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0002
#define MANUFACTURER Han Chen
#define PRODUCT AMJ96
-#define DESCRIPTION 96 key custom keyboard
/* key matrix size */
#define MATRIX_ROWS 7
diff --git a/keyboards/amjkeyboard/amj66/config.h b/keyboards/amjkeyboard/amj66/config.h
index ac10f7e35e8..1f8a930a6ac 100644
--- a/keyboards/amjkeyboard/amj66/config.h
+++ b/keyboards/amjkeyboard/amj66/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER AMJKeyboard
#define PRODUCT AMJ66
-#define DESCRIPTION QMK keyboard firmware for AMJ66
/* Key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/amjpad/config.h b/keyboards/amjpad/config.h
index dd579be5f23..6bac897e73d 100644
--- a/keyboards/amjpad/config.h
+++ b/keyboards/amjpad/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0003
#define MANUFACTURER AMJ
#define PRODUCT PAD
-#define DESCRIPTION QMK keyboard firmware for AMJ PAD
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/anavi/macropad8/config.h b/keyboards/anavi/macropad8/config.h
index e517d909d8d..fd9d6e35712 100644
--- a/keyboards/anavi/macropad8/config.h
+++ b/keyboards/anavi/macropad8/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER ANAVI
#define PRODUCT Macro Pad 8
-#define DESCRIPTION 8-key mechanical keyboard/keypad/macropad with backlit, mini OLED display and RGB LED strip
/* key matrix size */
#define MATRIX_ROWS 2
diff --git a/keyboards/angel17/alpha/config.h b/keyboards/angel17/alpha/config.h
index abc42d0d277..ee759bbf4dc 100644
--- a/keyboards/angel17/alpha/config.h
+++ b/keyboards/angel17/alpha/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER kakunpc
#define PRODUCT angel17
-#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/angel17/rev1/config.h b/keyboards/angel17/rev1/config.h
index 711790ab083..9c1132a2e3b 100644
--- a/keyboards/angel17/rev1/config.h
+++ b/keyboards/angel17/rev1/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER kakunpc
#define PRODUCT angel17
-#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/angel64/alpha/config.h b/keyboards/angel64/alpha/config.h
index 07dae8952df..0216725b742 100644
--- a/keyboards/angel64/alpha/config.h
+++ b/keyboards/angel64/alpha/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER kakunpc
#define PRODUCT angel64
-#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 12
diff --git a/keyboards/angel64/rev1/config.h b/keyboards/angel64/rev1/config.h
index 07dae8952df..0216725b742 100644
--- a/keyboards/angel64/rev1/config.h
+++ b/keyboards/angel64/rev1/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER kakunpc
#define PRODUCT angel64
-#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 12
diff --git a/keyboards/aos/tkl/config.h b/keyboards/aos/tkl/config.h
index 5a4b93f6448..de408455075 100644
--- a/keyboards/aos/tkl/config.h
+++ b/keyboards/aos/tkl/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Ace of Spades
#define PRODUCT Ace of Spades TKL
-#define DESCRIPTION Ace of Spades TKL
/* key matrix size */
#define MATRIX_ROWS 6
diff --git a/keyboards/arabica37/rev1/config.h b/keyboards/arabica37/rev1/config.h
index 5db7e32fc6f..7951bc49ea6 100644
--- a/keyboards/arabica37/rev1/config.h
+++ b/keyboards/arabica37/rev1/config.h
@@ -24,7 +24,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER CalciumNitride
#define PRODUCT Arabica3/7
-#define DESCRIPTION A split keyboard with 3x6 column staggered keys, 1 pinkie key and 3 thumb keys
#define USE_SERIAL
#define SOFT_SERIAL_PIN D2
diff --git a/keyboards/arisu/config.h b/keyboards/arisu/config.h
index d23cf9102bf..73ccc45378d 100644
--- a/keyboards/arisu/config.h
+++ b/keyboards/arisu/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Fate
#define PRODUCT arisu
-#define DESCRIPTION alice counterpart keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/ash1800/config.h b/keyboards/ash1800/config.h
index b46a966c80d..376247d8532 100644
--- a/keyboards/ash1800/config.h
+++ b/keyboards/ash1800/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Hasyim Ashari
#define PRODUCT ASH-1800
-#define DESCRIPTION An attempt to make a cherry g80/g81 clone
/* key matrix size */
#define MATRIX_ROWS 12
diff --git a/keyboards/ashpil/modelm_usbc/config.h b/keyboards/ashpil/modelm_usbc/config.h
index df4ed32277f..4738124ee7b 100644
--- a/keyboards/ashpil/modelm_usbc/config.h
+++ b/keyboards/ashpil/modelm_usbc/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER ashpil
#define PRODUCT IBM Model M 101/102
-#define DESCRIPTION Controlled by AVR chip
/* key matrix size */
#define MATRIX_ROWS 8
diff --git a/keyboards/at101_bh/config.h b/keyboards/at101_bh/config.h
index 6928118b796..8c81fab9162 100644
--- a/keyboards/at101_bh/config.h
+++ b/keyboards/at101_bh/config.h
@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER blindassassin111
#define PRODUCT AT101_BH PCB
-#define DESCRIPTION Replacement AT101 PCB
/* key matrix size */
#define MATRIX_ROWS 12
diff --git a/keyboards/at_at/660m/config.h b/keyboards/at_at/660m/config.h
index c876e0d1aa1..41443f8ae62 100644
--- a/keyboards/at_at/660m/config.h
+++ b/keyboards/at_at/660m/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER AT-AT
#define PRODUCT 660M
-#define DESCRIPTION 660M Keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/atomic/config.h b/keyboards/atomic/config.h
index 045f8672772..06019dd5436 100644
--- a/keyboards/atomic/config.h
+++ b/keyboards/atomic/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Ortholinear Keyboards
#define PRODUCT The Atomic Keyboard
-#define DESCRIPTION A compact ortholinear keyboard
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h
index d1820144336..07f4d7f15a2 100644
--- a/keyboards/atreus/config.h
+++ b/keyboards/atreus/config.h
@@ -25,7 +25,6 @@
#define DEVICE_VER 0x0008
#define MANUFACTURER Technomancy
#define PRODUCT Atreus
-#define DESCRIPTION QMK keyboard firmware for Atreus
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/atreus62/config.h b/keyboards/atreus62/config.h
index a7fe5f35429..2d4ab99c627 100644
--- a/keyboards/atreus62/config.h
+++ b/keyboards/atreus62/config.h
@@ -27,7 +27,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER Profet
#define PRODUCT Atreus62
-#define DESCRIPTION q.m.k. keyboard firmware for Atreus62
/* key matrix size */
// Rows are doubled-up
diff --git a/keyboards/atreus62/keymaps/atreus52/config.h b/keyboards/atreus62/keymaps/atreus52/config.h
index ba0eaf0dbbb..91b626b5608 100644
--- a/keyboards/atreus62/keymaps/atreus52/config.h
+++ b/keyboards/atreus62/keymaps/atreus52/config.h
@@ -2,7 +2,6 @@
#undef MANUFACTURER
#undef PRODUCT
-#undef DESCRIPTION
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
#undef DIODE_DIRECTION
@@ -10,7 +9,6 @@
/* USB Device descriptor parameter */
#define MANUFACTURER Mesh Industries
#define PRODUCT Atreus52 Treeboard
-#define DESCRIPTION q.m.k. keyboard firmware for Atreus52
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { B2, B1, F7, F6, F5, F4, B6, D3, D2, D1, D0, D4, B3 }
diff --git a/keyboards/atxkb/1894/config.h b/keyboards/atxkb/1894/config.h
index 27acb8afba7..ce2b87ed619 100644
--- a/keyboards/atxkb/1894/config.h
+++ b/keyboards/atxkb/1894/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER atxkb
#define PRODUCT 1894
-#define DESCRIPTION atxkb 1894
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/aves65/config.h b/keyboards/aves65/config.h
index 033100b549b..5ae386512c6 100644
--- a/keyboards/aves65/config.h
+++ b/keyboards/aves65/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see .
#define DEVICE_VER 0x0001
#define MANUFACTURER I/O Keyboards
#define PRODUCT Aves65
-#define DESCRIPTION A 65% keyboard with underglow.
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/tmk_core/common/report.h b/tmk_core/common/report.h
index 610addf4319..5d7c5b3b28f 100644
--- a/tmk_core/common/report.h
+++ b/tmk_core/common/report.h
@@ -123,12 +123,6 @@ enum desktop_usages {
#define KEYBOARD_REPORT_KEYS 6
-/* VUSB hardcodes keyboard and mouse+extrakey only */
-#if defined(PROTOCOL_VUSB)
-# undef KEYBOARD_SHARED_EP
-# undef MOUSE_SHARED_EP
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index 9ce75334a5b..a422903ccf2 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -46,19 +46,28 @@ along with this program. If not, see .
* Interface indexes
*/
enum usb_interfaces {
+#ifndef KEYBOARD_SHARED_EP
KEYBOARD_INTERFACE = NEXT_INTERFACE,
+#else
+ SHARED_INTERFACE = NEXT_INTERFACE,
+# define KEYBOARD_INTERFACE SHARED_INTERFACE
+#endif
+
// It is important that the Raw HID interface is at a constant
// interface number, to support Linux/OSX platforms and chrome.hid
// If Raw HID is enabled, let it be always 1.
#ifdef RAW_ENABLE
RAW_INTERFACE = NEXT_INTERFACE,
#endif
-#if (defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE))
- MOUSE_EXTRA_INTERFACE = NEXT_INTERFACE,
+
+#if defined(SHARED_EP_ENABLE) && !defined(KEYBOARD_SHARED_EP)
+ SHARED_INTERFACE = NEXT_INTERFACE,
#endif
+
#ifdef CONSOLE_ENABLE
CONSOLE_INTERFACE = NEXT_INTERFACE,
#endif
+
TOTAL_INTERFACES = NEXT_INTERFACE
};
@@ -90,7 +99,16 @@ void vusb_transfer_keyboard(void) {
for (int i = 0; i < VUSB_TRANSFER_KEYBOARD_MAX_TRIES; i++) {
if (usbInterruptIsReady()) {
if (kbuf_head != kbuf_tail) {
+#ifndef KEYBOARD_SHARED_EP
usbSetInterrupt((void *)&kbuf[kbuf_tail], sizeof(report_keyboard_t));
+#else
+ // Ugly hack! :(
+ usbSetInterrupt((void *)&kbuf[kbuf_tail], sizeof(report_keyboard_t) - 1);
+ while (!usbInterruptIsReady()) {
+ usbPoll();
+ }
+ usbSetInterrupt((void *)(&(kbuf[kbuf_tail].keys[5])), 1);
+#endif
kbuf_tail = (kbuf_tail + 1) % KBUF_SIZE;
if (debug_keyboard) {
dprintf("V-USB: kbuf[%d->%d](%02X)\n", kbuf_tail, kbuf_head, (kbuf_head < kbuf_tail) ? (KBUF_SIZE - kbuf_tail + kbuf_head) : (kbuf_head - kbuf_tail));
@@ -230,16 +248,18 @@ static void send_keyboard(report_keyboard_t *report) {
keyboard_report_sent = *report;
}
-typedef struct {
- uint8_t report_id;
- report_mouse_t report;
-} __attribute__((packed)) vusb_mouse_report_t;
+#ifndef KEYBOARD_SHARED_EP
+# define usbInterruptIsReadyShared usbInterruptIsReady3
+# define usbSetInterruptShared usbSetInterrupt3
+#else
+# define usbInterruptIsReadyShared usbInterruptIsReady
+# define usbSetInterruptShared usbSetInterrupt
+#endif
static void send_mouse(report_mouse_t *report) {
#ifdef MOUSE_ENABLE
- vusb_mouse_report_t r = {.report_id = REPORT_ID_MOUSE, .report = *report};
- if (usbInterruptIsReady3()) {
- usbSetInterrupt3((void *)&r, sizeof(vusb_mouse_report_t));
+ if (usbInterruptIsReadyShared()) {
+ usbSetInterruptShared((void *)report, sizeof(report_mouse_t));
}
#endif
}
@@ -253,8 +273,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {
last_data = data;
report_extra_t report = {.report_id = report_id, .usage = data};
- if (usbInterruptIsReady3()) {
- usbSetInterrupt3((void *)&report, sizeof(report));
+ if (usbInterruptIsReadyShared()) {
+ usbSetInterruptShared((void *)&report, sizeof(report_extra_t));
}
}
#endif
@@ -360,10 +380,18 @@ void usbFunctionWriteOut(uchar *data, uchar len) {
* Descriptors *
*------------------------------------------------------------------*/
+#ifdef KEYBOARD_SHARED_EP
+const PROGMEM uchar shared_hid_report[] = {
+# define SHARED_REPORT_STARTED
+#else
const PROGMEM uchar keyboard_hid_report[] = {
+#endif
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x06, // Usage (Keyboard)
0xA1, 0x01, // Collection (Application)
+#ifdef KEYBOARD_SHARED_EP
+ 0x85, REPORT_ID_KEYBOARD, // Report ID
+#endif
// Modifiers (8 bits)
0x05, 0x07, // Usage Page (Keyboard/Keypad)
0x19, 0xE0, // Usage Minimum (Keyboard Left Control)
@@ -398,12 +426,17 @@ const PROGMEM uchar keyboard_hid_report[] = {
0x95, 0x01, // Report Count (1)
0x75, 0x03, // Report Size (3)
0x91, 0x03, // Output (Constant)
- 0xC0 // End Collection
+ 0xC0, // End Collection
+#ifndef KEYBOARD_SHARED_EP
};
+#endif
-#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
-const PROGMEM uchar mouse_extra_hid_report[] = {
-# ifdef MOUSE_ENABLE
+#if defined(SHARED_EP_ENABLE) && !defined(SHARED_REPORT_STARTED)
+const PROGMEM uchar shared_hid_report[] = {
+# define SHARED_REPORT_STARTED
+#endif
+
+#ifdef MOUSE_ENABLE
// Mouse report descriptor
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x02, // Usage (Mouse)
@@ -452,9 +485,9 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
0x81, 0x06, // Input (Data, Variable, Relative)
0xC0, // End Collection
0xC0, // End Collection
-# endif
+#endif
-# ifdef EXTRAKEY_ENABLE
+#ifdef EXTRAKEY_ENABLE
// Extrakeys report descriptor
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x80, // Usage (System Control)
@@ -481,7 +514,8 @@ const PROGMEM uchar mouse_extra_hid_report[] = {
0x75, 0x10, // Report Size (16)
0x81, 0x00, // Input (Data, Array, Absolute)
0xC0 // End Collection
-# endif
+#endif
+#ifdef SHARED_EP_ENABLE
};
#endif
@@ -618,6 +652,7 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bMaxPower = USB_MAX_POWER_CONSUMPTION / 2
},
+# ifndef KEYBOARD_SHARED_EP
/*
* Keyboard
*/
@@ -655,6 +690,7 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.wMaxPacketSize = 8,
.bInterval = USB_POLLING_INTERVAL_MS
},
+# endif
# if defined(RAW_ENABLE)
/*
@@ -705,24 +741,30 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bInterval = USB_POLLING_INTERVAL_MS
},
# endif
-# if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
+
+# ifdef SHARED_EP_ENABLE
/*
- * Mouse/Extrakeys
+ * Shared
*/
- .mouseExtraInterface = {
+ .sharedInterface = {
.header = {
.bLength = sizeof(usbInterfaceDescriptor_t),
.bDescriptorType = USBDESCR_INTERFACE
},
- .bInterfaceNumber = MOUSE_EXTRA_INTERFACE,
+ .bInterfaceNumber = SHARED_INTERFACE,
.bAlternateSetting = 0x00,
.bNumEndpoints = 1,
.bInterfaceClass = 0x03,
+# ifdef KEYBOARD_SHARED_EP
+ .bInterfaceSubClass = 0x01,
+ .bInterfaceProtocol = 0x01,
+# else
.bInterfaceSubClass = 0x00,
.bInterfaceProtocol = 0x00,
+# endif
.iInterface = 0x00
},
- .mouseExtraHID = {
+ .sharedHID = {
.header = {
.bLength = sizeof(usbHIDDescriptor_t),
.bDescriptorType = USBDESCR_HID
@@ -731,19 +773,24 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bCountryCode = 0x00,
.bNumDescriptors = 1,
.bDescriptorType = USBDESCR_HID_REPORT,
- .wDescriptorLength = sizeof(mouse_extra_hid_report)
+ .wDescriptorLength = sizeof(shared_hid_report)
},
- .mouseExtraINEndpoint = {
+ .sharedINEndpoint = {
.header = {
.bLength = sizeof(usbEndpointDescriptor_t),
.bDescriptorType = USBDESCR_ENDPOINT
},
+# ifdef KEYBOARD_SHARED_EP
+ .bEndpointAddress = (USBRQ_DIR_DEVICE_TO_HOST | 1),
+# else
.bEndpointAddress = (USBRQ_DIR_DEVICE_TO_HOST | USB_CFG_EP3_NUMBER),
+# endif
.bmAttributes = 0x03,
.wMaxPacketSize = 8,
.bInterval = USB_POLLING_INTERVAL_MS
},
# endif
+
# if defined(CONSOLE_ENABLE)
/*
* Console
@@ -791,7 +838,7 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.bmAttributes = 0x03,
.wMaxPacketSize = CONSOLE_EPSIZE,
.bInterval = 0x01
- },
+ }
# endif
};
@@ -833,22 +880,27 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
break;
case USBDESCR_HID:
switch (rq->wValue.bytes[0]) {
+#ifndef KEYBOARD_SHARED_EP
case KEYBOARD_INTERFACE:
usbMsgPtr = (usbMsgPtr_t)&usbConfigurationDescriptor.keyboardHID;
len = sizeof(usbHIDDescriptor_t);
break;
+#endif
+
#if defined(RAW_ENABLE)
case RAW_INTERFACE:
usbMsgPtr = (usbMsgPtr_t)&usbConfigurationDescriptor.rawHID;
len = sizeof(usbHIDDescriptor_t);
break;
#endif
-#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
- case MOUSE_EXTRA_INTERFACE:
- usbMsgPtr = (usbMsgPtr_t)&usbConfigurationDescriptor.mouseExtraHID;
+
+#ifdef SHARED_EP_ENABLE
+ case SHARED_INTERFACE:
+ usbMsgPtr = (usbMsgPtr_t)&usbConfigurationDescriptor.sharedHID;
len = sizeof(usbHIDDescriptor_t);
break;
#endif
+
#if defined(CONSOLE_ENABLE)
case CONSOLE_INTERFACE:
usbMsgPtr = (usbMsgPtr_t)&usbConfigurationDescriptor.consoleHID;
@@ -860,22 +912,27 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) {
case USBDESCR_HID_REPORT:
/* interface index */
switch (rq->wIndex.word) {
+#ifndef KEYBOARD_SHARED_EP
case KEYBOARD_INTERFACE:
usbMsgPtr = (usbMsgPtr_t)keyboard_hid_report;
len = sizeof(keyboard_hid_report);
break;
+#endif
+
#if defined(RAW_ENABLE)
case RAW_INTERFACE:
usbMsgPtr = (usbMsgPtr_t)raw_hid_report;
len = sizeof(raw_hid_report);
break;
#endif
-#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
- case MOUSE_EXTRA_INTERFACE:
- usbMsgPtr = (usbMsgPtr_t)mouse_extra_hid_report;
- len = sizeof(mouse_extra_hid_report);
+
+#ifdef SHARED_EP_ENABLE
+ case SHARED_INTERFACE:
+ usbMsgPtr = (usbMsgPtr_t)shared_hid_report;
+ len = sizeof(shared_hid_report);
break;
#endif
+
#if defined(CONSOLE_ENABLE)
case CONSOLE_INTERFACE:
usbMsgPtr = (usbMsgPtr_t)console_hid_report;
diff --git a/tmk_core/protocol/vusb/vusb.h b/tmk_core/protocol/vusb/vusb.h
index 828960fc351..b4c73aabaef 100644
--- a/tmk_core/protocol/vusb/vusb.h
+++ b/tmk_core/protocol/vusb/vusb.h
@@ -85,9 +85,16 @@ typedef struct usbHIDDescriptor {
typedef struct usbConfigurationDescriptor {
usbConfigurationDescriptorHeader_t header;
- usbInterfaceDescriptor_t keyboardInterface;
- usbHIDDescriptor_t keyboardHID;
- usbEndpointDescriptor_t keyboardINEndpoint;
+
+#ifndef KEYBOARD_SHARED_EP
+ usbInterfaceDescriptor_t keyboardInterface;
+ usbHIDDescriptor_t keyboardHID;
+ usbEndpointDescriptor_t keyboardINEndpoint;
+#else
+ usbInterfaceDescriptor_t sharedInterface;
+ usbHIDDescriptor_t sharedHID;
+ usbEndpointDescriptor_t sharedINEndpoint;
+#endif
#if defined(RAW_ENABLE)
usbInterfaceDescriptor_t rawInterface;
@@ -96,10 +103,10 @@ typedef struct usbConfigurationDescriptor {
usbEndpointDescriptor_t rawOUTEndpoint;
#endif
-#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
- usbInterfaceDescriptor_t mouseExtraInterface;
- usbHIDDescriptor_t mouseExtraHID;
- usbEndpointDescriptor_t mouseExtraINEndpoint;
+#if defined(SHARED_EP_ENABLE) && !defined(KEYBOARD_SHARED_EP)
+ usbInterfaceDescriptor_t sharedInterface;
+ usbHIDDescriptor_t sharedHID;
+ usbEndpointDescriptor_t sharedINEndpoint;
#endif
#if defined(CONSOLE_ENABLE)