As Tong Ho brought up in 2012 
(http://lists.ipxe.org/pipermail/ipxe-devel/2012-April/001381.html), the 
current code for reading keypresses in EFI appears to break the UEFI spec.  To 
summarize, CheckEvent may (should? must?) clear the checked event.  On my Asus 
Z77, this means that no key presses are actually being read by ReadKeyStroke 
(http://lists.ipxe.org/pipermail/ipxe-devel/2016-February/004676.html).

I've written a patch that works around this by running ReadKeyStroke in 
efi_iskey(), storing it in a global variable, and then working with that 
variable in efi_getchar().

This patch fixes my system to the point where it's reading rougly 60% of the 
keypresses instead of none at all, but I am still losing keypresses, and I have 
no idea why.
You can view, comment on, or merge this pull request online at:

  https://github.com/ipxe/ipxe/pull/44

-- Commit Summary --

  * [efi] Read key each time through iskey to avoid dropping keypresses

-- File Changes --

    M src/interface/efi/efi_console.c (28)

-- Patch Links --

https://github.com/ipxe/ipxe/pull/44.patch
https://github.com/ipxe/ipxe/pull/44.diff

---
Reply to this email directly or view it on GitHub:
https://github.com/ipxe/ipxe/pull/44
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to