keyboard: Only generate keycodes from an allowlist
Some broken clients (most notably Chromium and its descendants) try to interpret keymaps as if they were input sequences coming from evdev. Workaround that by only using codes that directly produce characters.
Fixes #244