Implement basic translation with hardcoded key in actions fk_translate(char *) -> char * "qwe" -> A_UP, A_LEFT, A_PLAY
Use config file instead of hardcoded translation DEFAULT = SILENT 'q' = A_UP 'w' = A_LEFT fk_translate(char *) -> char * "qw" -> A_UP, A_LEFT
Implement translation interruption fk_pause() fk_translate(char *) -> char * "qwerty" -> "qwerty" fk_resume()
Implement sequence of keys in translation table 'q+w' = A_UP fk_translate(char *) -> char * "qw" -> A_UP
Implement modal state for the keys DEFAULT_MODE = '' [mode a] 'q' = jump:b [mode b] 'w' = A_UP 'e' = A_LEFT fk_translate(char *) -> char * "weqwe" -> A_UP, A_LEFT
Implement mixed state (text and action) Only modal can give action
Implement stacked modal state [mode a] 'q' = stack:b [mode b] DEFAULT = POP 'q' = stack:b
Implement action filtering allow(A_UP) 'q' = A_UP 'w' = A_LEFT fk_translate(char *) -> char * "qw" -> A_UP
Implement group filtering To easy switching between filtered keys
Implement key direct input No more wait of of the key
Implement special combinate keys '-q' = A_UP '-q' = A_LEFT
Implement common combinate key