[ipxe-devel] [PATCH 0/2] Support platforms that do not process the CTRL key

Michael Brown mcb30 at ipxe.org
Mon May 25 07:11:39 UTC 2015


On 24/05/15 21:13, Michael Bazzinotti wrote:
> On Sun May 24 15:31:52 BST 2015, Robin Smidsrød wrote:
>> I'm fairly certain that this patch set will not be accepted. You should
>> instead try to find the root cause for why the CTRL key is not being accepted
>> and fix that. Alternatively (on Mac machines/keyboards) you can use another
>> key (like CMD) and map it to CTRL.
>
>   Fortunately, Grub includes CTRL key shortcuts *and* alternatives *hint
> hint* I
> tested it myself. I took pictures, but I'm failing to upload them. I
> think you
> get the point.
>
> <snip>

Robin is correct.  I'm not going to merge a patch which would have to do 
one of:

- break existing user behaviour (e.g. by changing the existing key usages),

- add behaviour inconsistent with the on-screen instructions (e.g. by 
adding hidden extra key usages besides those mentioned in on-screen 
prompts), or

- generate overly verbose on-screen instructions (e.g. by documenting 
both possible key usages)

without some hard proof that there is a bug in the Apple EFI firmware 
which prohibits the use of Ctrl or any other modifier key.

For example: iPXE currently uses the EFI_SIMPLE_TEXT_INPUT_PROTOCOL to 
read keystrokes, and relies on the UnicodeChar value returned by 
ReadKeyStroke() to obtain the control characters (such as Ctrl-B).  You 
could start by experimenting to find the values returned in both 
UnicodeChar and ScanCode when Ctrl-B is pressed on the Mac.

There is also an EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL which additionally 
provides an EFI_KEY_STATE containing flags for the modifier keys (such 
as Ctrl).  You could use the EFI shell and the "dh" command to see if 
the Apple EFI firmware includes this protocol.

If neither of those approaches gives a usable result, you could 
experiment to see if other modifier keys have some observable effect on 
the values returned by ReadKeyStroke().

Michael



More information about the ipxe-devel mailing list