Attempts to Create a new "Software-Designed-Keyer" (from ~2003 or earlier) have been many:

The Various_jpg's are for 2 primary attempts (out of of several), where an Arduino Mega plugs in to the footprint(s) shown.

The latest has a "Logic Module" that provides a "Hardware Capture" of either the DIT or DAH from the paddles, and prestents it to the Arduino. I found that the typical latency has been ~10ms in a tight loop, which I account for. The circuit also provides a toggle of sort that alternates for Iambic.

The Logic Module shown also has a tone generator on the end.

The code given here is for this current model. If you would like, I could see if I can find the code for an earlier model (pics) where I present much of the Code Bites in a teaching mode.

Dave - WA7RSO