I was originally going to make an app the randomly interspersed profanity while you typed. This program could absolutely be modified to do that. Instead, I made it into a global auto-correct.
This is written in dotnetcore. The OSX implementation is coming, I just don't have time tonight. It's running in a console, so I wrote a quick and dirty message-pump.
Clone the repo and run "dotnet build"
dotnet exec BadKeyboard.dll