~ruther/qmk_firmware

3bc436988d0a58fdd735495f07aa741660ab8e71 — QMK Bot 4 years ago 5193a8d + d8b9825
Merge remote-tracking branch 'origin/master' into develop
87 files changed, 104 insertions(+), 136 deletions(-)

M keyboards/1upkeyboards/1up60hse/config.h
M keyboards/1upkeyboards/1up60hte/config.h
M keyboards/1upkeyboards/1up60rgb/config.h
M keyboards/1upkeyboards/super16/config.h
M keyboards/1upkeyboards/sweet16/config.h
M keyboards/2key2crawl/config.h
M keyboards/30wer/config.h
M keyboards/40percentclub/25/config.h
M keyboards/40percentclub/4pack/config.h
M keyboards/40percentclub/4x4/config.h
M keyboards/40percentclub/5x5/config.h
M keyboards/40percentclub/6lit/config.h
M keyboards/40percentclub/foobar/config.h
M keyboards/40percentclub/gherkin/config.h
M keyboards/40percentclub/gherkin/keymaps/mjt/config.h
M keyboards/40percentclub/half_n_half/config.h
M keyboards/40percentclub/i75/config.h
M keyboards/40percentclub/luddite/config.h
M keyboards/40percentclub/mf68/config.h
M keyboards/40percentclub/mf68/keymaps/68keys/config.h
M keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
M keyboards/40percentclub/nano/config.h
M keyboards/40percentclub/nein/config.h
M keyboards/40percentclub/nori/config.h
M keyboards/40percentclub/tomato/config.h
M keyboards/40percentclub/ut47/config.h
M keyboards/4by3/config.h
M keyboards/4pplet/aekiso60/rev_a/config.h
M keyboards/4pplet/steezy60/rev_a/config.h
M keyboards/4pplet/waffling60/rev_a/config.h
M keyboards/6ball/config.h
M keyboards/7skb/rev1/config.h
M keyboards/9key/config.h
M keyboards/abacus/config.h
M keyboards/absinthe/config.h
M keyboards/abstract/ellipse/rev1/config.h
M keyboards/acheron/austin/config.h
M keyboards/acheron/elongate/config.h
M keyboards/acheron/keebspcb/config.h
M keyboards/acheron/shark/config.h
M keyboards/acr60/config.h
M keyboards/adelheid/config.h
M keyboards/adkb96/rev1/config.h
M keyboards/aeboards/aegis/config.h
M keyboards/ai03/equinox/config.h
M keyboards/ai03/lunar/config.h
M keyboards/ai03/orbit/config.h
M keyboards/ai03/orbit_x/config.h
M keyboards/ai03/polaris/config.h
M keyboards/ai03/quasar/config.h
M keyboards/akb/eb46/config.h
M keyboards/akb/raine/config.h
M keyboards/al1/config.h
M keyboards/alf/dc60/config.h
M keyboards/alf/x11/config.h
M keyboards/alf/x2/config.h
M keyboards/allison/config.h
M keyboards/allison_numpad/config.h
M keyboards/alpha/config.h
M keyboards/alps64/config.h
M keyboards/alu84/config.h
M keyboards/amj40/config.h
M keyboards/amj60/config.h
M keyboards/amj96/config.h
M keyboards/amjkeyboard/amj66/config.h
M keyboards/amjpad/config.h
M keyboards/anavi/macropad8/config.h
M keyboards/angel17/alpha/config.h
M keyboards/angel17/rev1/config.h
M keyboards/angel64/alpha/config.h
M keyboards/angel64/rev1/config.h
M keyboards/aos/tkl/config.h
M keyboards/arabica37/rev1/config.h
M keyboards/arisu/config.h
M keyboards/ash1800/config.h
M keyboards/ashpil/modelm_usbc/config.h
M keyboards/at101_bh/config.h
M keyboards/at_at/660m/config.h
M keyboards/atomic/config.h
M keyboards/atreus/config.h
M keyboards/atreus62/config.h
M keyboards/atreus62/keymaps/atreus52/config.h
M keyboards/atxkb/1894/config.h
M keyboards/aves65/config.h
M tmk_core/common/report.h
M tmk_core/protocol/vusb/vusb.c
M tmk_core/protocol/vusb/vusb.h
M keyboards/1upkeyboards/1up60hse/config.h => keyboards/1upkeyboards/1up60hse/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    1upkeyboards
#define PRODUCT         1up60hse
#define DESCRIPTION     A custom 60% keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/1upkeyboards/1up60hte/config.h => keyboards/1upkeyboards/1up60hte/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    1upkeyboards
#define PRODUCT         1up60hte
#define DESCRIPTION     A custom 60% keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/1upkeyboards/1up60rgb/config.h => keyboards/1upkeyboards/1up60rgb/config.h +0 -1
@@ 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

M keyboards/1upkeyboards/super16/config.h => keyboards/1upkeyboards/super16/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    1upkeyboards
#define PRODUCT         super16
#define DESCRIPTION     A 4x4 custom macropad

/* key matrix size */
#define MATRIX_ROWS 4

M keyboards/1upkeyboards/sweet16/config.h => keyboards/1upkeyboards/sweet16/config.h +0 -1
@@ 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

M keyboards/2key2crawl/config.h => keyboards/2key2crawl/config.h +0 -1
@@ 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

M keyboards/30wer/config.h => keyboards/30wer/config.h +0 -1
@@ 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

M keyboards/40percentclub/25/config.h => keyboards/40percentclub/25/config.h +0 -1
@@ 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 */

M keyboards/40percentclub/4pack/config.h => keyboards/40percentclub/4pack/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER 0x0001
#define MANUFACTURER 40percentclub
#define PRODUCT 4pack
#define DESCRIPTION A 1x4 custom macropad

/* key matrix size */
#define MATRIX_ROWS 1

M keyboards/40percentclub/4x4/config.h => keyboards/40percentclub/4x4/config.h +0 -1
@@ 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

M keyboards/40percentclub/5x5/config.h => keyboards/40percentclub/5x5/config.h +0 -1
@@ 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

M keyboards/40percentclub/6lit/config.h => keyboards/40percentclub/6lit/config.h +0 -1
@@ 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


M keyboards/40percentclub/foobar/config.h => keyboards/40percentclub/foobar/config.h +0 -1
@@ 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


M keyboards/40percentclub/gherkin/config.h => keyboards/40percentclub/gherkin/config.h +0 -1
@@ 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

M keyboards/40percentclub/gherkin/keymaps/mjt/config.h => keyboards/40percentclub/gherkin/keymaps/mjt/config.h +0 -2
@@ 2,6 2,4 @@

/* USB Device descriptor parameter */
#undef MANUFACTURER
#undef DESCRIPTION
#define MANUFACTURER    Some Guy
#define DESCRIPTION     30 percent disaster

M keyboards/40percentclub/half_n_half/config.h => keyboards/40percentclub/half_n_half/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/40percentclub/i75/config.h => keyboards/40percentclub/i75/config.h +0 -1
@@ 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

M keyboards/40percentclub/luddite/config.h => keyboards/40percentclub/luddite/config.h +0 -1
@@ 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

M keyboards/40percentclub/mf68/config.h => keyboards/40percentclub/mf68/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/40percentclub/mf68/keymaps/68keys/config.h => keyboards/40percentclub/mf68/keymaps/68keys/config.h +0 -2
@@ 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

M keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h => keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h +0 -4
@@ 21,10 21,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* Overrides for Feather 32u4 Bluefruit */

/* USB Device descriptor parameter */
#undef DESCRIPTION
#define DESCRIPTION     Magicforce 68 BLE

/*
 * Keyboard Matrix Assignments
 *

M keyboards/40percentclub/nano/config.h => keyboards/40percentclub/nano/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    di0ib
#define PRODUCT         Nano
#define DESCRIPTION     8 key microswitch board

/* key matrix size */
#define MATRIX_ROWS 2

M keyboards/40percentclub/nein/config.h => keyboards/40percentclub/nein/config.h +0 -1
@@ 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

M keyboards/40percentclub/nori/config.h => keyboards/40percentclub/nori/config.h +0 -1
@@ 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

M keyboards/40percentclub/tomato/config.h => keyboards/40percentclub/tomato/config.h +0 -1
@@ 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

M keyboards/40percentclub/ut47/config.h => keyboards/40percentclub/ut47/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    40percent.club
#define PRODUCT         ut47
#define DESCRIPTION     An awesome 40% keyboard

/* key matrix size */
#define MATRIX_ROWS 4

M keyboards/4by3/config.h => keyboards/4by3/config.h +0 -1
@@ 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

M keyboards/4pplet/aekiso60/rev_a/config.h => keyboards/4pplet/aekiso60/rev_a/config.h +0 -1
@@ 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

M keyboards/4pplet/steezy60/rev_a/config.h => keyboards/4pplet/steezy60/rev_a/config.h +0 -1
@@ 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

M keyboards/4pplet/waffling60/rev_a/config.h => keyboards/4pplet/waffling60/rev_a/config.h +0 -1
@@ 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

M keyboards/6ball/config.h => keyboards/6ball/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    That-Canadian
#define PRODUCT         6-Ball
#define DESCRIPTION     6-Ball Macropuck

/* key matrix size */
#define MATRIX_ROWS 1

M keyboards/7skb/rev1/config.h => keyboards/7skb/rev1/config.h +0 -1
@@ 24,7 24,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0007
#define MANUFACTURER    Salicylic_Acid
#define PRODUCT         7skb
#define DESCRIPTION     A custom keyboard

/* key matrix size */
#define MATRIX_ROWS 10

M keyboards/9key/config.h => keyboards/9key/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/abacus/config.h => keyboards/abacus/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/absinthe/config.h => keyboards/absinthe/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER 0x0001
#define MANUFACTURER cfbender
#define PRODUCT absinthe
#define DESCRIPTION An F-row-less TKL

/* key matrix size */
#define MATRIX_ROWS 9

M keyboards/abstract/ellipse/rev1/config.h => keyboards/abstract/ellipse/rev1/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    AbstractKB
#define PRODUCT         EllipseRev1
#define DESCRIPTION     The Ellipse Macropad

/* key matrix size */
#define MATRIX_ROWS 2

M keyboards/acheron/austin/config.h => keyboards/acheron/austin/config.h +0 -1
@@ 23,7 23,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    DriftMechanics
#define PRODUCT         Austin
#define DESCRIPTION     Austin Keyboard

/* key matrix size */
#define MATRIX_ROWS 6

M keyboards/acheron/elongate/config.h => keyboards/acheron/elongate/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER 0x0001
#define MANUFACTURER Acheron Project
#define PRODUCT Elongate
#define DESCRIPTION Acheron Project Elongate

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/acheron/keebspcb/config.h => keyboards/acheron/keebspcb/config.h +0 -1
@@ 23,7 23,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001 // Revision pre-Alpha
#define MANUFACTURER    AcheronProject
#define PRODUCT         KeebsPCB
#define DESCRIPTION     AcheronProject KeebsPCB

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/acheron/shark/config.h => keyboards/acheron/shark/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    AcheronProject
#define PRODUCT         SharkPCB
#define DESCRIPTION     Ortho 40 PCB

/* key matrix size */
#define MATRIX_ROWS 4

M keyboards/acr60/config.h => keyboards/acr60/config.h +0 -1
@@ 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

M keyboards/adelheid/config.h => keyboards/adelheid/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/adkb96/rev1/config.h => keyboards/adkb96/rev1/config.h +0 -1
@@ 22,7 22,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Bit Trade One
#define PRODUCT         ADKB96
#define DESCRIPTION

/* key matrix size */
// Rows are doubled-up

M keyboards/aeboards/aegis/config.h => keyboards/aeboards/aegis/config.h +0 -1
@@ 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

M keyboards/ai03/equinox/config.h => keyboards/ai03/equinox/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/ai03/lunar/config.h => keyboards/ai03/lunar/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Switchplate Peripherals
#define PRODUCT         Lunar
#define DESCRIPTION     65% AEK keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/ai03/orbit/config.h => keyboards/ai03/orbit/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/ai03/orbit_x/config.h => keyboards/ai03/orbit_x/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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 

M keyboards/ai03/polaris/config.h => keyboards/ai03/polaris/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    ai03 Design Studio
#define PRODUCT         Polaris
#define DESCRIPTION     Basic 60% keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/ai03/quasar/config.h => keyboards/ai03/quasar/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Ryota Goto
#define PRODUCT         Quasar
#define DESCRIPTION     SSK Controller

/* key matrix size */
#define MATRIX_ROWS 8

M keyboards/akb/eb46/config.h => keyboards/akb/eb46/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/akb/raine/config.h => keyboards/akb/raine/config.h +0 -1
@@ 24,7 24,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER 0x0001
#define MANUFACTURER AKB
#define PRODUCT Raine
#define DESCRIPTION Raine

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/al1/config.h => keyboards/al1/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0104
#define MANUFACTURER    Alsoran
#define PRODUCT         AL1
#define DESCRIPTION     A custom keyboard

/* key matrix size */
#define MATRIX_ROWS 7

M keyboards/alf/dc60/config.h => keyboards/alf/dc60/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Alf
#define PRODUCT         dc60
#define DESCRIPTION     custom 60% keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/alf/x11/config.h => keyboards/alf/x11/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Alf
#define PRODUCT         x11
#define DESCRIPTION     A TKL custom keyboard

/* key matrix size */
#define MATRIX_ROWS 7

M keyboards/alf/x2/config.h => keyboards/alf/x2/config.h +0 -1
@@ 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

M keyboards/allison/config.h => keyboards/allison/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/allison_numpad/config.h => keyboards/allison_numpad/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/alpha/config.h => keyboards/alpha/config.h +0 -1
@@ 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

M keyboards/alps64/config.h => keyboards/alps64/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Hasu
#define PRODUCT         Alps64
#define DESCRIPTION     TMK keyboard firmware for Alps64

/* key matrix size */
#define MATRIX_ROWS 8

M keyboards/alu84/config.h => keyboards/alu84/config.h +0 -1
@@ 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

M keyboards/amj40/config.h => keyboards/amj40/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/amj60/config.h => keyboards/amj60/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/amj96/config.h => keyboards/amj96/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0002
#define MANUFACTURER    Han Chen
#define PRODUCT         AMJ96
#define DESCRIPTION     96 key custom keyboard

/* key matrix size */
#define MATRIX_ROWS 7

M keyboards/amjkeyboard/amj66/config.h => keyboards/amjkeyboard/amj66/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    AMJKeyboard
#define PRODUCT         AMJ66
#define DESCRIPTION     QMK keyboard firmware for AMJ66

/* Key matrix size */
#define MATRIX_ROWS 5

M keyboards/amjpad/config.h => keyboards/amjpad/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/anavi/macropad8/config.h => keyboards/anavi/macropad8/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/angel17/alpha/config.h => keyboards/angel17/alpha/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    kakunpc
#define PRODUCT         angel17
#define DESCRIPTION     A custom keyboard

/* key matrix size */
#define MATRIX_ROWS 4

M keyboards/angel17/rev1/config.h => keyboards/angel17/rev1/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    kakunpc
#define PRODUCT         angel17
#define DESCRIPTION     A custom keyboard

/* key matrix size */
#define MATRIX_ROWS 4

M keyboards/angel64/alpha/config.h => keyboards/angel64/alpha/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    kakunpc
#define PRODUCT         angel64
#define DESCRIPTION     A custom keyboard

/* key matrix size */
#define MATRIX_ROWS 12

M keyboards/angel64/rev1/config.h => keyboards/angel64/rev1/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    kakunpc
#define PRODUCT         angel64
#define DESCRIPTION     A custom keyboard

/* key matrix size */
#define MATRIX_ROWS 12

M keyboards/aos/tkl/config.h => keyboards/aos/tkl/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/arabica37/rev1/config.h => keyboards/arabica37/rev1/config.h +0 -1
@@ 24,7 24,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/arisu/config.h => keyboards/arisu/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    Fate
#define PRODUCT         arisu
#define DESCRIPTION     alice counterpart keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/ash1800/config.h => keyboards/ash1800/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/ashpil/modelm_usbc/config.h => keyboards/ashpil/modelm_usbc/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/at101_bh/config.h => keyboards/at101_bh/config.h +0 -1
@@ 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

M keyboards/at_at/660m/config.h => keyboards/at_at/660m/config.h +0 -1
@@ 29,7 29,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    AT-AT
#define PRODUCT         660M
#define DESCRIPTION     660M Keyboard

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/atomic/config.h => keyboards/atomic/config.h +0 -1
@@ 26,7 26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/atreus/config.h => keyboards/atreus/config.h +0 -1
@@ 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

M keyboards/atreus62/config.h => keyboards/atreus62/config.h +0 -1
@@ 27,7 27,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M keyboards/atreus62/keymaps/atreus52/config.h => keyboards/atreus62/keymaps/atreus52/config.h +0 -2
@@ 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 }

M keyboards/atxkb/1894/config.h => keyboards/atxkb/1894/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEVICE_VER      0x0001
#define MANUFACTURER    atxkb
#define PRODUCT         1894
#define DESCRIPTION     atxkb 1894

/* key matrix size */
#define MATRIX_ROWS 5

M keyboards/aves65/config.h => keyboards/aves65/config.h +0 -1
@@ 25,7 25,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#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

M tmk_core/common/report.h => tmk_core/common/report.h +0 -6
@@ 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

M tmk_core/protocol/vusb/vusb.c => tmk_core/protocol/vusb/vusb.c +90 -33
@@ 46,19 46,28 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 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;

M tmk_core/protocol/vusb/vusb.h => tmk_core/protocol/vusb/vusb.h +14 -7
@@ 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)