)]}'
{
  "commit": "b5d8ed7e285029d4e91e96122dba076cf9ebeebf",
  "tree": "6f0f7153a1722f94b54ffa502a24563d7dcbf951",
  "parents": [
    "f4c3a01470289d450dbe437fdfb1e85309459374"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Tue Jan 26 20:46:57 2021 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Tue Jan 26 21:05:37 2021 +0000"
  },
  "message": "[efi] Use EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL if available\n\nThe original EFI_SIMPLE_TEXT_INPUT_PROTOCOL is not technically\nrequired to handle the use of the Ctrl key, and the long-obsolete EFI\n1.10 specification lists only backspace, tab, linefeed, and carriage\nreturn as required.  Some particularly brain-dead vendor UEFI firmware\nimplementations dutifully put in the extra effort of ensuring that all\nother control characters (such as Ctrl-C) are impossible to type via\nEFI_SIMPLE_TEXT_INPUT_PROTOCOL.\n\nCurrent versions of the UEFI specification mandate that the console\ninput handle must support both EFI_SIMPLE_TEXT_INPUT_PROTOCOL and\nEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL, the latter of which at least\nprovides access to modifier key state.\n\nUnlike EFI_SIMPLE_TEXT_INPUT_PROTOCOL, the pointer to the\nEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance does not appear within the\nEFI system table and must therefore be opened explicitly.  The UEFI\nspecification provides no safe way to do so, since we cannot open the\nhandle BY_DRIVER or BY_CHILD_CONTROLLER and so nothing guarantees that\nthis pointer will remain valid for the lifetime of iPXE.  We must\nsimply hope that no UEFI firmware implementation ever discovers a\nmotivation for reinstalling the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL\ninstance.\n\nUse EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL if available, falling back to\nthe existing EFI_SIMPLE_TEXT_PROTOCOL otherwise.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "047baed479d9eb3690e98d7050f4b72de24343c1",
      "old_mode": 33188,
      "old_path": "src/interface/efi/efi_console.c",
      "new_id": "98ebbf3acd5d223b605ac73e0c44c177469365fa",
      "new_mode": 33188,
      "new_path": "src/interface/efi/efi_console.c"
    }
  ]
}
