grub4dos icon indicating copy to clipboard operation
grub4dos copied to clipboard

EFI: setkey not working for SHIFT+key combinations on some UEFI implementations

Open 1ras opened this issue 2 years ago • 4 comments
trafficstars

Some UEFI implementations return every SHIFT+key combination with bit 24 set, therefore setkey is not working for this keys. E.g. the uppercase Q returns 0x1000051 instead of 0x0051, the uppercase A returns 0x1000041 instead of 0x0041 and so on. This happens with all SHIFT+key combinations I've tested.

I cleared bit 24 by changing https://github.com/chenall/grub4dos/blob/2b155c93ee0aabe3b7cab21ea9a5da8b4a8cd30e/stage2/builtins.c#L11234 to if (ascii_key_map[i].from_code == (key &= ~(1<<(24))))

Then setkey is working as expected.

I however did not investigate further to understand the function of this bit. If it just stands for the SHIFT key then clearing the bit might be a possible solution.

1ras avatar Aug 07 '23 17:08 1ras