Must be cross platform ( Linux, Mac and Windows).
Optional support for winkeyer device.
First the program sends a series of K's in CW for 30 seconds while the character K is displayed. Then it repeats the procedure with the character M. When that is complete it sends a four characters group using K and M in random places without displaying the signs.
It then waits for a four characters input using the keyboard or the morse device, shows the characters you have gotten correct in green, the wrong ones in red. That continues until the user has gotten 90 % correct of a number of groups, then a new letter is introduced ( for example X ), it is sent for 30 seconds while the character is displayed.
Then the lesson continues using the new character until 90% of groups is correct, a new character or prosign is introduced and the lessons continues until all characters are learned.
It may also be possible to display the character K and send the character in morse 5 times and wait for 4~10 around seconds for the answer using the morse key or keyboard.
Options and statistics:
It could also display statistics of a users progress and time used. The slowest permitted speed should be 13 WPM. Any speed below this is wasted time. Some of it may be posted to https://lcwo.net/ if an API is available.
Multiple users in the program, but only one at a time.
It could also be possible to adjust the mininum and maximum number of characters in the groups and if they are of random size. It could support Farnsworth timing, characters are sent at the same speed as at higher speeds, while extra spacing is inserted between characters and words to slow the transmission down.
The advantage of this is that you get used to recognising characters at a higher speed,the characters does not "blend together" as easily and thus it will be easier to increase the speed later on.
Morse alphabets that should be used : Primarly International, but the possibility to add regional extras like the Norwegian Æ Ø and Å. Those extras should be possible to add to the characters learned with a option in settings.
Compatibility with a Murmur client that can connect to a murmur server, that enables chatting in morse code with other users. The client is available at: https://www.mumble.info/ Similar low latency open source free software solutions could also be used.
A existing server already exists: http://internetcw.weebly.com/
Suggestion for a plugin for mumble:
Fading,QRM,QRN and white noise should be possible, as this issue seems to be resolved:
mumble-voip/mumble#3743.
Compatible with Hamsphere: http://hamsphere.com/
There is a API, but the developers of hamsphere may have to be contacted.