I've tried to piece together how to do this from various sources. First approach, based on 1 and 2:
$ grep ^HOOKS /etc/mkinitcpio.conf
HOOKS="base udev autodetect modconf block lvm2 keyboard keymap encrypt filesystems fsck"
$ grep ^KEYMAP /etc/vconsole.conf
KEYMAP=dvorak
Then run sudo mkinitcpio -p linux
successfully and reboot. Result: the password prompt still uses the US layout.
Second approach, based on 3:
- Install ckbcomp
Run:
sudo mkdir /boot/grub/layout sudo grub-kbdcomp -o /boot/grub/layout/us-dvorak-alt-intl.gkb us dvorak-alt-intl
(ignored "Unknown keyboard scan code 0x…" warnings)
- In
/etc/default/grub
setGRUB_TERMINAL_INPUT=at_keyboard
In
/etc/grub.d/40_custom
add:insmod keylayouts keymap /boot/grub/layout/us-dvorak-alt-intl.gkb
Run:
sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub-install --target=i386-pc /dev/sda reboot
Now I can use Dvorak in the GRUB menu, but not on the LUKS prompt.
Other sources mention a similar approach which I don't think can work because the LUKS prompt shows up before the relevant files can even be read. Finally, one source says this can't be done at all.
localectl set-keymap <YOUR KEYMAP>
, or adding (or in my case, removing)rd.vconsole.keymap=<YOUR KEYMAP LOCALE
from/etc/default/grub
@GRUB_CMDLINE_LINUX="
along with agrub2-mkconfig
. It's not impossible both of these are needed..gl – Hashbrown Oct 25 '18 at 5:07