diff --git a/Readme.md b/Readme.md index 1e45f36..64d0a68 100644 --- a/Readme.md +++ b/Readme.md @@ -131,16 +131,17 @@ Install HoodLoader2 and flash the hex file. If it works please leave me some inf Troubleshoot ============ -Switching the HID-Core might confuse the OS since the USB device changes completely from one second to the other. +**Switching the HID-Core** might confuse the OS since the USB device changes completely from one second to the other. Therefore go to Printers and Devices on Windows and select remove. Reconnect your Arduino and maybe remove it again if its not working properly. Alternatively you can also restart your PC or use another USB PID (in the boards.txt) to see if its a Windows problem or not. If you change the USB PID the CDC Driver wont be loaded but you can always reupload a sketch in bootloader mode. ![remove usb device](pictures/remove-device.png) -Gamepads had several problems over the time. The first thing I'd like to mention is that the calibration windows only updates if you focus it. +**Gamepads** had several problems over the time. The first thing I'd like to mention is that the calibration windows only updates if you focus it. Windows only supports gamepads with up to 7 axis and 32 buttons and has problems with more than one Gamepad in a multireport. Linux has problems when gamepads are in multi reports with a system device for example. It may occur that it display immense axis/buttons or none at all. +The current gamepad setting was tested under windows and ubuntu and seems to work. Feel free to extend the gamepad report at your own risk. ![gamepad](pictures/gamepad.png) @@ -193,7 +194,6 @@ update Burning via ISP (advanced) Test with Android phone (HL1) "Emulate" HL1 protocol test no usb function with leonardo (usb workaround?) -test gamepad under linux, maybe remove keyboard? remove dev HL2 link ``` diff --git a/avr/boards.txt b/avr/boards.txt index f1c22bf..1b8b409 100644 --- a/avr/boards.txt +++ b/avr/boards.txt @@ -28,6 +28,7 @@ leonardoExtended.bootloader.lock_bits=0x2F leonardoExtended.build.mcu=atmega32u4 leonardoExtended.build.f_cpu=16000000L +leonardoExtended.build.core=HID:hid leonardoExtended.build.vid=0x2341 leonardoExtended.build.pid=0x8036 leonardoExtended.build.usb_product="Arduino Leonardo" @@ -38,19 +39,14 @@ leonardoExtended.build.extra_flags={build.usb_flags} #HID Project needs to be installed https://github.com/NicoHood/HID leonardoExtended.menu.usbcore.hid=Serial + Extended HID leonardoExtended.menu.usbcore.hid.build.variant=leonardo_hid -leonardoExtended.menu.usbcore.hid.build.core=HID:hid leonardoExtended.menu.usbcore.gamepad=Serial + Gamepad HID leonardoExtended.menu.usbcore.gamepad.build.variant=leonardo_gamepad -leonardoExtended.menu.usbcore.gamepad.build.core=HID:hid leonardoExtended.menu.usbcore.custom=Serial + Custom HID leonardoExtended.menu.usbcore.custom.build.variant=leonardo_custom -leonardoExtended.menu.usbcore.custom.build.core=HID:hid leonardoExtended.menu.usbcore.USB_CORE=Default Core -leonardoExtended.menu.usbcore.USB_CORE.build.variant=arduino:leonardo -leonardoExtended.menu.usbcore.USB_CORE.build.core=arduino:arduino +leonardoExtended.menu.usbcore.USB_CORE.build.variant=leonardo leonardoExtended.menu.usbcore.NO_USB=No USB functions leonardoExtended.menu.usbcore.NO_USB.build.variant=leonardo_no_usb -leonardoExtended.menu.usbcore.NO_USB.build.core=HID:hid ############################################################## @@ -74,6 +70,7 @@ microExtended.bootloader.lock_bits=0x2F microExtended.build.mcu=atmega32u4 microExtended.build.f_cpu=16000000L +microExtended.build.core=HID:hid microExtended.build.vid=0x2341 microExtended.build.pid=0x8037 microExtended.build.usb_product="Arduino Micro" @@ -84,19 +81,14 @@ microExtended.build.extra_flags={build.usb_flags} #HID Project needs to be installed https://github.com/NicoHood/HID microExtended.menu.usbcore.hid=Serial + Extended HID microExtended.menu.usbcore.hid.build.variant=micro_hid -microExtended.menu.usbcore.hid.build.core=HID:hid microExtended.menu.usbcore.gamepad=Serial + Gamepad HID microExtended.menu.usbcore.gamepad.build.variant=micro_gamepad -microExtended.menu.usbcore.gamepad.build.core=HID:hid microExtended.menu.usbcore.custom=Serial + Custom HID microExtended.menu.usbcore.custom.build.variant=micro_custom -microExtended.menu.usbcore.custom.build.core=HID:hid microExtended.menu.usbcore.USB_CORE=Default Core -microExtended.menu.usbcore.USB_CORE.build.variant=arduino:micro -microExtended.menu.usbcore.USB_CORE.build.core=arduino:arduino +microExtended.menu.usbcore.USB_CORE.build.variant=micro microExtended.menu.usbcore.NO_USB=No USB functions microExtended.menu.usbcore.NO_USB.build.variant=micro_no_usb -microExtended.menu.usbcore.NO_USB.build.core=HID:hid ############################################################## diff --git a/avr/cores/hid/USB-Core/HID.h b/avr/cores/hid/USB-Core/HID.h index 020f2ec..2d652e9 100644 --- a/avr/cores/hid/USB-Core/HID.h +++ b/avr/cores/hid/USB-Core/HID.h @@ -48,7 +48,9 @@ THE SOFTWARE. // for the extern HID descriptors + settings #include "pins_arduino.h" -#ifndef EXTERN_HID_REPORT +#if !defined(EXTERN_HID_REPORT) && !defined(HID_MOUSE_ENABLE) && !defined(HID_KEYBOARD_KEYS_ENABLE) \ +&& !defined(HID_KEYBOARD_LEDS_ENABLE) && !defined(HID_MOUSE_ABSOLUTE_ENABLE) && !defined(HID_RAWHID_ENABLE) \ +&& !defined(HID_CONSUMER_ENABLE) && !defined(HID_SYSTEM_ENABLE) && !defined(HID_GAMEPAD_ENABLE) // by default enable mouse + keyboard api #define HID_MOUSE_ENABLE #define HID_KEYBOARD_KEYS_ENABLE