Самому пытаться программировать USB можно, конечно, но приготовьтесь, что на решение только одной этой задачи у Вас уйдут следующие несколько лет. Проще воспользоваться готовой библиотекой.
В случае, если в микроконтроллере нет встроенного USB-порта, то можно попробовать использовать библиотеку V-USB (виртуальный USB), но как и все чисто софтовые решения, это скорее эмулятор, чем полноценный порт. Требует много процессорного времени, и к тому же качество её работы оставляет желать лучшего. Например, если погрузить компьютер в спящий режим, то V-USB вряд ли это распознает, и придётся каждый раз переподключать микроконтроллер, или нажимать на кнопку сброса.
Так что попробовать стоит, но лично я рекомендую использовать микроконтроллер ATmega32U4, на котором построена плата Arduino Leonardo. Для него поддержка USB HID реализована в самом программном обеспечении Arduino IDE, так что для того, чтобы превратить микроконтроллер в "мышь" и "клавиатуру" (одновременно), достаточно просто загрузить скетч примера.
И наконец, третий вариант. В современных Arduino вместо чипа USB-RS232 используется микроконтроллер ATmega16U2. Это практически тот же Arduino Leonardo, только памяти у него в 2 раза меньше. Можно перепрограммировать в USB HID его, разве что потребуется программатор, потому что он программируется через интерфейс ICSP.