move into keyboard-specific directory
consistently use header guards
use more meaningful include path
use correct term
handle special keys in the keyboard state transition function
remove unnecessary include directive
obtain frame data directly
separate scan code processing from keyboard state tracking
interpret scan codes directly
move scan code interpretation functions
remove unnecessary frame interpretation functions
correct scan code interpretation functions for keyboard modifiers