Grub2, change keyboard disposition for LUKS passphrase using grub-mkimage

Following this and this i’m trying to change keyboard disposition on Slackware 15.1 (current) (iso) for entering LUKS passphrase with Grub2.

Disk partitions

# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
zram0              251:0    0  31.2G  0 disk  [SWAP]
nvme0n1            259:0    0 238.5G  0 disk  
├─nvme0n1p1        259:1    0   400M  0 part  /boot/efi
└─nvme0n1p2        259:2    0 238.1G  0 part  
  └─luksnvme0n1p2  252:0    0 238.1G  0 crypt 
    ├─cryptvg-root 252:1    0    70G  0 lvm   /
    ├─cryptvg-home 252:2    0   164G  0 lvm   /home
    └─cryptvg-swap 252:3    0     4G  0 lvm   [SWAP]

# cat /etc/fstab 
/dev/cryptvg/swap swap             swap        defaults         0   0
/dev/cryptvg/root /                ext4        defaults         1   1
/dev/cryptvg/home /home            ext4        defaults         1   2
/dev/nvme0n1p1   /boot/efi        vfat        defaults         1   0

Create a keyboard disposition and stored it in memdisk (ckbcomp)

root@darkstar:/boot/grub# grub-kbdcomp -o fr.gkb fr
Unknown keyboard scan identifier dead_kogonek
Unknown keyboard scan identifier Meta_Tab
Unknown keyboard scan identifier Meta_Tab
Unknown keyboard scan identifier dead_abovering
Unknown keyboard scan identifier dead_macron
Unknown keyboard scan identifier dead_hook
Unknown keyboard scan identifier dead_horn
Unknown keyboard scan identifier dead_kcaron
Unknown keyboard scan identifier dead_kbreve
Unknown keyboard scan identifier dead_kdoubleacute
Unknown keyboard scan identifier dead_belowdot
Unknown keyboard scan identifier dead_abovedot
Unknown keyboard scan code 0x54
Unknown keyboard scan code 0x65
Unknown keyboard scan code 0x7f
root@darkstar:/boot/grub# tar cf memdisk.tar fr.gkb

Install grub with default configuration and make shure it boot properly (–verbose display command options used in grub-install)

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Slackware --recheck --verbose
grub-mkconfig -o /boot/grub/grub.cfg

Adapted the grub-mkimage as follow:

grub-mkimage --directory "/usr/lib64/grub/x86_64-efi" 
    --prefix "(lvmid/...../......)/boot/grub" 
    --output "/boot/efi/EFI/Slackware/grubx64.efi" --format x86_64-efi --compression auto 
    --config "/boot/grub/early-grub.cfg" 
    --memdisk "/boot/grub/memdisk.tar" 
    ext2 lvm cryptodisk luks gcry_rijndael gcry_rijndael gcry_sha256 part_gpt 
    memdisk tar at_keyboard usb_keyboard keylayouts configfile 
    usb usbms efi_gop fat pbkdf2

content of early-grub.cfg

set root=(memdisk)
set prefix=($root)/boot/grub

insmod ext2
insmod lvm
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha256
insmod part_gpt
insmod memdisk
insmod tar
insmod at_keyboard
insmod usb_keyboard
insmod keylayouts
insmod configfile
insmod terminal
insmod usb
insmod usbms
insmod efi_gop
insmod fat
insmod pbkdf2
# ehci (USB 2.0) uhci (USB 1.1) ohci (USB 1.1) boot directly to grub rescue, no passphrase prompt

# here changing path and extension confirm Grub try to load if automatically from /layouts folder
keymap (memdisk)/fr.gkb

# From /boot/grub/grub.cfg
cryptomount -u .....-....-....-....-......
set root='lvmid/...../.....'
set prefix=($root)/boot/grub/

configfile grub.cfg

Remove old grub boot entry and add a new one, and update grub.cfg

efibootmgr -B -b 0000 (0000 or whatever is the actual grubx64.efi boot entry)
efibootmgr -c -d /dev/nvme0n1 -p 1 -w -L Slackware -l "EFISlackwaregrubx64.efi"
grub-mkconfig -o /boot/grub/grub.cfg

At this point on reboot everything work as default grub setup described above, but keyboard remain in QWERTY.
I have never been able to make the usb_keyboard module to load, at_keyboard is available but don’t work with my usb azerty keyboard and old simple DELL usb keyboard, also azerty.
I can see with ls (memdisk)/
fr.gkb

I have tested this with two computer, different variations of early-grub.cfg /etc/default/grub and modules with no luck, also endless chat with Claude and DeepSeek

  • Hp Elitdesk 800 G3 35W all usb ports are USB 3, so this should not work, hopefully i finally realized that there is a keyboard disposition option in the BIOS…
  • Lenovo M720T with USB 2

Whatever i try the terminal_input remain console