https://david-delassus.medium.com/decoupling-input-bindings-from-game-systems-with-c-sdl-74d94a8b008c