Gruvw
I built my own keyboard and programmed it to match my functioning.
You can access the source code and the documentation regarding this project on the following GitHub repository: