Just need two tabs: keyboard and settings
where user types
1-9 hide behind q row
For better UX, layout should be similar to Gboard shown below.
where user adjust the feedback speed and etc.
| Setting |
|---|
| Feedback style: flash/sound/vibration(strength); |
| Feedback per: char/word/sentence |
| WPM adjuster: slider 0 - 18 and 18 - |
< 18 WPM: Farnsworth timing
>= 18 WPM: standard
dit = 1 unit
dah = 3 units
Intra-character space (the gap between dits and dahs within a character): 1 unit
Inter-character space (the gap between the characters of a word): 3 Farnsworth-units
Word space (the gap between two words): 7 Farnsworth-units
! KeybaordView deprecated in API 29
set each key as buttons -> bind all keys to onClick() -> transfer the content to input
exception: backspace, shift, switch to numpad, setting, done, emoji, (?)space
Translator.java: convert string to morse code, vice versa.
Feedback.java: output morse code into visual/audio/haptic. Tune timing if output speed is lower 18 WPM.
MorseCode.java: Wrap Signal into SignalSequence, similar to CharSequence.