@rbernon In v2 I have expanded the scope of the MR a bit, because I found the changes interacted with a few existing issues.
v2: * More tests to avoid regressions. * Added infrastructure for async key state checking and used it in raw input nolegacy tests. * Fixed pre-existing todos for modifier vkeys used in hooks.