Reveal & hide behavior
The virtual keyboard is needed in two places, which are somewhat different:
- inside apps (e.g. to write a text message)
- as part of the shell (e.g. to type a shell search query)
These two cases are somewhat different because in the former case, the keyboard is "part of the app", and e.g. needs to scale down with the app window in the app switcher, while in the latter it's part of the shell, so there is no swipe-from-bottom gesture.
In GTK apps, the virtual keyboard is shown when an input gets focus. Hiding can be done with the button on the right side of the bottom bar. To illustrate the movement:
The keyboard moves up from behind the bottom bar, while the buttons on the left and right side of the bottom bar "scale up" in-place.
For toolkits that don't support showing the keyboard automatically on focus, we could have a mirrored version of the "hide keyboard" button in the bottom right that's constantly visible and shows the keyboard. That said, long-term we should focus on getting toolkits to support the necessary protocols rather than work around them.
In the Shell there is no bottom bar, but the behavior is the same: The keyboard comes from the bottom, though in this case a pseudo bottom bar bar with the keyboard buttons comes up with it. The buttons on the left and right are the same as in the in-app case, but of course there is no drag arrow in the middle, and no swipe-up gesture, since you're already in the Overview.