grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Non-functional at_keyboard


From: Renaud Métrich
Subject: Non-functional at_keyboard
Date: Mon, 2 Nov 2020 10:52:30 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1

Hi there,

A french Red Hat customer reported that in Legacy mode (the code isn't used with UEFI), immediately after switching terminal_input to at_keyboard, the keyboard was just not usable due to invalid key mappings.
This happens on various laptop models from various manufacturers with French keyboards, but should also happen with any keyboard layout.

I could reproduce this as well on my Lenovo T460 which has a French keyboard, but not on a QEMU/KVM.

After adding debugging, I could find out that the value ps2_state.current_set is hardcoded to 1 due to having the following piece of code with USE_SCANCODE_SET set to 0:


#if !USE_SCANCODE_SET
   grub_dprintf ("atkeyb", "set_scancodes: forcing current_set = 1\n");
   ps2_state.current_set = 1;
   return;
#else
 

The USE_SCANCODE_SET is set to 0 due to this:


#if defined (GRUB_MACHINE_MIPS_LOONGSON) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS)
#define USE_SCANCODE_SET 1
#else
#define USE_SCANCODE_SET 0

#endif


If I make sure USE_SCANCODE_SET is always defined to 1, causing the rest of the set_scancodes() function to execute, which I understand is some kind of "auto-detection" of the set to use, I can see that on my laptop the current_set should be set to 2, and this effectively fixes the issue:
Keys pressed map to expected keys (e.g. without loading a FR keymap, a maps to q, z to w, e is kept as is, etc.).

After loading the FR keymap, a maps to a, etc., as expected.

Could someone explain why this USE_SCANCODE_SET is set to 0, hence current_set hardcoded for real x86_64 hardware?

See also https://github.com/rhboot/grub2/pull/74 implementing the debugging and hack to force detecting the current set in set_scancodes().

Best regards,

Renaud METRICH

Attachment: OpenPGP_0x5D129094FB6E4326.asc
Description: application/pgp-keys

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]