Figure 2: UML state diagram representing the keyboard state machine