use a data structure to record keyboard scan codes
rename keyboard scan state enum
remove unnecessary statement
rename keyboard scan state names
rename state name
implement scan buffer with a circular linked list