The program uses a lot of cpu when simply waiting for user input. This is probably because the program keeps updating the lighting every 10ms, even when nothing happens.
This should be throttled down when nothing happens, so that the controller waits for longer between updates. Also, don't send packet if there hasn't been any update to the LEDs.