USB is a far more elegant approach, here.
Rather than spam the computer with keystrokes, it just sends one make code, one break code. If the OS wants fast repeat, it can do fast repeat. If the OS wants slow repeat, it can do slow repeat. If the OS wants no repeat at all, the OS can do no repeat at all.