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/grubsetGRUB_TERMINAL_INPUT=at_keyboard In
/etc/grub.d/40_customadd:insmod keylayouts keymap /boot/grub/layout/us-dvorak-alt-intl.gkbRun:
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 LOCALEfrom/etc/default/grub@GRUB_CMDLINE_LINUX="along with agrub2-mkconfig. It's not impossible both of these are needed..gl