An ongoing project chronicled on YouTube and Hackaday.io features a simple electronic keyer, by kodera2t, with a touchpad paddle and message-sending functionality. While it has been through several iterations, the current version stores messages in a microSD card by simple text format, without needing to launch the Arduino IDE just for message modification. The e-keyer also supports both plus- and minus-keying.
The first version, a combination of Arduino, touch sensor-integrated circuit, and battery all on a single board, did not support minus-keying nor the SD card. The build simply used the touch sensor to generated Morse code and transmitted messages as sound. The second iteration supported minus keying or negative keying, an inversion of the sounding IDs and functionality that is important for the final vacuum tube transceiver. While in a traditional paddle keyer, the polarity does not matter because the output is just controlled by an on/off switch, in an electronic keyer, it is important to consider the polarity of the terminal. Minus-keying in the V2 keyer can be controlled with a switch added to the board.
SD card message sending was included in V3. The stored files can be altered without requiring a firmware upload, as they are stored in a simple text file. On top of functioning as a keyer, the board can now also play stored messages assigned to keys on the board or alert the user in Morse code that an SD card is not detected. The other touch added to V3 is a stored Morse training mode, assigning a key to send a random five characters to train code reception.
The newest version maintains all of these elements and also incorporates a tiny OLED display to aid those learning Morse code and to enable high-speed training. Currently, the display is not set up with a decoder function, but rather shows a random character with the accompanying Morse code as a training supplement. While the display does not work with the message sending function in this model, the touch sensor can be used to stop the display, and its speed can be adjusted via a dial to train the speed at which a user can decipher the code. There seems to be a new function with every update, so check out the project to see what comes next.