-/**
- Dispatch input to different handler\r
-\r
- @param[in] Key The input key:\r
- the keys can be:\r
- ASCII KEY\r
- Backspace/Delete\r
- Direction key: up/down/left/right/pgup/pgdn\r
- Home/End\r
- INS\r
-\r
- @retval EFI_SUCCESS The operation was successful.\r
- @retval EFI_LOAD_ERROR A load error occured.\r
- @retval EFI_OUT_OF_RESOURCES A Memory allocation failed.\r
-**/\r
-EFI_STATUS\r
-HBufferImageHandleInput (\r
- IN EFI_INPUT_KEY *Key\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = EFI_SUCCESS;\r
-\r
- switch (Key->ScanCode) {\r
- //\r
- // ordinary key\r
- //\r
- case SCAN_NULL:\r
- Status = HBufferImageDoCharInput (Key->UnicodeChar);\r
- break;\r
-\r
- //\r
- // up arrow\r
- //\r
- case SCAN_UP:\r
- Status = HBufferImageScrollUp ();\r
- break;\r
-\r
- //\r
- // down arrow\r
- //\r
- case SCAN_DOWN:\r
- Status = HBufferImageScrollDown ();\r
- break;\r
-\r
- //\r
- // right arrow\r
- //\r
- case SCAN_RIGHT:\r
- Status = HBufferImageScrollRight ();\r
- break;\r
-\r
- //\r
- // left arrow\r
- //\r
- case SCAN_LEFT:\r
- Status = HBufferImageScrollLeft ();\r
- break;\r
-\r
- //\r
- // page up\r
- //\r
- case SCAN_PAGE_UP:\r
- Status = HBufferImagePageUp ();\r
- break;\r
-\r
- //\r
- // page down\r
- //\r
- case SCAN_PAGE_DOWN:\r
- Status = HBufferImagePageDown ();\r
- break;\r
-\r
- //\r
- // delete\r
- //\r
- case SCAN_DELETE:\r
- Status = HBufferImageDoDelete ();\r
- break;\r
-\r
- //\r
- // home\r
- //\r
- case SCAN_HOME:\r
- Status = HBufferImageHome ();\r
- break;\r
-\r
- //\r
- // end\r
- //\r
- case SCAN_END:\r
- Status = HBufferImageEnd ();\r
- break;\r
-\r
- default:\r
- Status = StatusBarSetStatusString (L"Unknown Command");\r
- break;\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-/**
- ASCII key + Backspace + return.\r
-\r
- @param[in] Char The input char.\r
-\r
- @retval EFI_SUCCESS The operation was successful.\r
- @retval EFI_LOAD_ERROR A load error occured.\r
- @retval EFI_OUT_OF_RESOURCES A memory allocation failed.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HBufferImageDoCharInput (\r
- IN CHAR16 Char\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = EFI_SUCCESS;\r
-\r
- switch (Char) {\r
- case 0:\r
- break;\r
-\r
- case 0x08:\r
- Status = HBufferImageDoBackspace ();\r
- break;\r
-\r
- case 0x09:\r
- case 0x0a:\r
- case 0x0d:\r
- //\r
- // Tabs, Returns are thought as nothing\r
- //\r
- break;\r
-\r
- default:\r
- //\r
- // DEAL WITH ASCII CHAR, filter out thing like ctrl+f\r
- //\r
- if (Char > 127 || Char < 32) {\r
- Status = StatusBarSetStatusString (L"Unknown Command");\r
- } else {\r
- Status = HBufferImageAddChar (Char);\r
- }\r
-\r
- break;\r
- }\r
-\r
- return Status;\r
-}\r
-\r