はじめに
Arduino Uno R4 WiFiの互換機でKeyboard.hを使い、HID(Human Interface Device)開発をしていると、突然書き込みができなくなりました。
普通はすぐに書き込みが終わりますが、かなり時間がかかり、以下のようなエラーが出ました。

Cannot perform port reset: 1200-bps touch: opening port at 1200bps: Invalid serial port
No device found on COM5
Failed uploading: uploading error: exit status 1
右下に表示されているのでArduino IDEに認識自体はされており、シリアル通信は正常にできている状態でした。

原因
通常、Upload時にはマイコンが自動で書き込みモードに切り替わります。
しかし、Keyboard.begin()関数が実行されることによりマイコンがHIDとして認識され、自動で書き込みモードに切り替わらないことが原因です。
※厳密にはこの言い方は正しくないかもしれません。
Mouse.hのMouse.begin()でも同様のことが起こります。
解決方法
手動で書き込みモードにすることにより、新しいデバイスと認識され、ポートに新たに出てきます。(私の場合COM7)

これを選択すると、正常に書き込むことができます。

書き込みモードにする方法
公式ドキュメントに以下のような記述があります。

この通り、RESETボタンを2回押すと書き込みモードにできるようです。
私の場合、1回→2回と押すとできました。
おまけ Keyboard.end()を実行しても書き込めない
KeyboardのドキュメントにKeyboard.end()関数があったので実行してみたが、書き込めるようにはなりませんでした。
