Hi,
It would be even better to clear the cache on a set_address command (to cover the admittedly obscure case of an OS changing a device's address later on).
Additional verification check catches any address change (token address not matching current device address). That fixes the keyboard issue and should also catch the obscure address change case. And also the more likely case of the address flipping back to zero due to a port reset.
cheers, Gerd