Move event handling to Rust
WIP because not cleaned up.
Initially intended as a base for some annoying changes needed for the popup, this ended up being a rabbit hole.
The main benefit is handling the lists of pressed/locked keys in Rust.
The secondary immediate benefit is that multiple buttons sharing state will behave correct now.
The tertiary, future benefit is that there's a clear path to implementing a good multi-touch model now (per-touch pressed buttons lists).
Main disadvantage: drawing and state changes are still intertwined, and some naming is confusing :( Needs future work.
Edited by Dorota Czaplejewicz