I've been planning on doing this for a long time :D This is mostly based on the SDL2 backend but there are a bunch of fixes