从edk2 编译shell,edit编辑器不支持shift键处理

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;
    }

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值