HootLoader2 allows you to customize the ATMega16u2 USB-Serial bridge on Arduino Uno
We know that the newer Arduino Uno boards have two programmable microcontrollers: one is Atmega328, which is an actual Arduino processor, and the second one is Atmega16U2, which is flashed to operate as an USB-Serial converter. Nico’s HootLoader2 allows you to reprogram the Atmega16U2 with your custom sketches to add more functionalities. HoodLoader2 replaces the DFU bootloader with a CDC bootloader and comes with full Arduino compatible USB-HID core, and CDC Serial. You can also use the 7 i/o pins of the Atmega16u2 on board.