Revert "Revert "add support for user-selectable alternate keyboard layouts""

This reverts commit 746a0b5de4e3bb44afb9e5fac2a4d70e8ccb187e.