Skip to content

Commit

Permalink
Android: rework keycode handling (#2890)
Browse files Browse the repository at this point in the history
The recent overhaul of the keyboard API broke keyboard input on Android.

The recent keyboard changes also broke building against the
game-activity backend of android-activity because it was assumed that
the backend is based on the NDK input API which isn't the case with
with game-activity since it doesn't use the InputQueue API from the NDK.

Any alphanumeric keycodes were being mapped to `Unidentified` Keys
which meant even crude keyboard input support was broken.

We do need to expose `getUnicodeChar` (or the ability to look
up characters based on the current character map and modifiers) but
for now we should at least map alphanumeric keycodes to `Key::Character`
for basic interim support of virtual keyboards.

This moves all the keycode mapping into a separate `keycodes.rs` file
to reduce clutter.

This adds back the mapping from Android key codes to Winit key codes
that we had before the keyboard API overhaul.

Android activity does expose scan codes but key codes currently seem
like the more appropriate mapping to Winit physical key codes.

This removes the gnarly, unsafe cfg() guarded digging into
'native-activity' and 'game-activity' specific implementation details. I
never intended to expose these details in the public API and really
hope to avoid there being a release of Winit that would depend on this.

I'm also hoping/considering if I can get away with sealing this without
necessarily requiring a semver breaking release of android_activity
since this absolutely should never have been possible, and can probably
safely assume this was the only code in the wild that has briefly done
this.

I'm also a bit unclear as to what led to doing this. There is a
`.key_code()` and `.scan_code()` getter and we even already accessed the
keycode in the Android backend so I'm not sure how those APIs were missed.
  • Loading branch information
rib authored Jun 21, 2023
1 parent 7094a22 commit 7929999
Show file tree
Hide file tree
Showing 2 changed files with 534 additions and 409 deletions.
Loading

0 comments on commit 7929999

Please sign in to comment.