1. 编辑框中支持SHIFT
ShellPkg\Library\UefiShellDebug1CommandsLib\Edit\MainTextEditor.c中不知道出于什么原因,把SHIFT按键过滤掉了。
在MainEditorKeyInput ()函数中添加对SHIFT键的处理。
在 else{
StatusBarSetStatusString (L"Unknown Command");
FileBufferMouseNeedRefresh = FALSE;
}
前添加一个else if 语句:
else if ( !NoShiftState && ((KeyData.Key.UnicodeChar >=0x21) && (KeyData.Key.UnicodeChar <=0x7E))) {
DEBUG((DEBUG_INFO,"NoShiftState=%d\n",NoShiftState));
Status = FileBufferHandleInput (&KeyData.Key);
2. 搜索框中支持SHIFT
ShellPkg\Library\UefiShellDebug1CommandsLib\EditInputBar.c
在InputBarRefresh()函数中,将过滤SHIFT的代码块中的continue注释掉。
原来为:
if (((KeyData.KeyState.KeyShiftState & EFI_SHIFT_STATE_VALID) != 0) &&
(KeyData.KeyState.KeyShiftState != EFI_SHIFT_STATE_VALID)) {
//
// Shift key pressed.
//
continue;
}
修改后:
if (((KeyData.KeyState.KeyShiftState & EFI_SHIFT_STATE_VALID) != 0) &&
(KeyData.KeyState.KeyShiftState != EFI_SHIFT_STATE_VALID)) {
//
// Shift key pressed.
//
DEBUG((DEBUG_INFO,"KeyData.KeyState.KeyShiftState=%X,KeyData.Key.ScanCode=%X,KeyData.Key.UnicodeChar=%X\n", KeyData.KeyState.KeyShiftState,KeyData.Key.ScanCode,KeyData.Key.UnicodeChar));
KeyData.KeyState.KeyShiftState &= ~EFI_SHIFT_STATE_VALID;
DEBUG((DEBUG_INFO,"KeyData.KeyState.KeyShiftState=%X\n", KeyData.KeyState.KeyShiftState));
//continue;
}