Mirror of edk2.
Go to file
Ruiyu Ni dd190645eb MdeModulePkg/UsbKb: fix shell edit cannot read '!@#$%^&*' characters
Commit 5563281fa2
* ShellPkg/[hex]edit: use SimpleTextInEx to read console
changes shell edit and hexedit to read input through SimpleTextInEx.

It exposes a issue in UsbKeyboard driver:
Per UEFI Spec,
When interpreting the data from this function (ReadKeyStrokeEx), it
should be noted that if a class of printable characters that are
normally adjusted by shift modifiers (e.g. Shift Key + "f" key) would
be presented solely as a KeyData.Key.UnicodeChar without the
associated shift state. So in the previous example of a Shift Key +
"f" key being pressed, the only pertinent data returned would be
KeyData.Key.UnicodeChar with the value of "F".

UsbKeyboard driver does convert Shift Key + "f" to "F" without the
shift state. But it doesn't do the conversion for all printable
characters, e.g.: Shift Key + "1" --> "!".

The root cause is today's logic to check whether a character is
printable or not is as below:
  if ((KeyDescriptor->AffectedAttribute & EFI_AFFECTED_BY_CAPS_LOCK)
      != 0) {

So it only converts Shift + "a"-"z", but doesn't for Shift + "0"-"9",
and Shift + "["...

The patch updates the check logic as below to fix the issue:
  if ((KeyDescriptor->Unicode != CHAR_NULL) &&
      (KeyDescriptor->ShiftedUnicode != CHAR_NULL) &&
      (KeyDescriptor->Unicode != KeyDescriptor->ShiftedUnicode)) {

The above check is TRUE when the character is printable and
it's *really* affected by Shift key.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
2018-03-26 09:28:58 +08:00
AppPkg
ArmPkg ArmPkg/TimerDxe: Add ISB for timer compare value reload 2018-03-15 08:07:14 +00:00
ArmPlatformPkg ArmPlatformPkg/MemoryInitPeiLib: reserve rather than remove FV memory 2018-02-28 16:10:58 +00:00
ArmVirtPkg ArmVirtPkg/PlatformBootManagerLib: return to "-kernel before boot devices" 2018-03-16 19:57:32 +01:00
BaseTools BaseTool/VfrCompile: Fix potential memory leak issue 2018-03-23 14:59:01 +08:00
BeagleBoardPkg BeagleBoardPkg: drop unused PcdCacheEnabled dependency 2018-02-09 09:40:11 +00:00
Conf
CorebootModulePkg CorebootModulePkg/CbSupportDxe: Remove duplicated IO Space addition 2017-11-16 10:52:00 +08:00
CorebootPayloadPkg CorebootPayloadPkg/PciHostBridgeLib: clear aperture vars for (re)init 2018-03-15 08:25:56 +00:00
CryptoPkg CryptoPkg: Update package version to 0.98 2018-01-23 08:56:27 +08:00
DuetPkg DuetPkg: Add SafeIntLib and BmpSupportLib to DSC files 2018-02-11 16:06:31 -08:00
EdkCompatibilityPkg
EdkShellBinPkg
EdkShellPkg
EmbeddedPkg EmbeddedPkg: Correct the way of handling sections with a large size 2018-03-13 15:26:09 +00:00
EmulatorPkg EmulatorPkg: Undefine CR3 macro in Host.h 2018-02-27 18:33:51 +08:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2017-12-22 09:40:18 +08:00
FatPkg
IntelFrameworkModulePkg IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes 2018-02-12 11:36:15 +08:00
IntelFrameworkPkg IntelFrameworkPkg/FrameworkUefiLib: Sync with MdePkg/UefiLib 2018-02-11 15:10:17 -08:00
IntelFsp2Pkg
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Update BaseFspWrapperApiLib to pass XCODE5 build 2018-01-18 15:39:54 +08:00
IntelFspPkg
IntelFspWrapperPkg
IntelSiliconPkg IntelSiliconPkg/Vtd: Add more debug info. 2018-03-20 08:51:54 +08:00
MdeModulePkg MdeModulePkg/UsbKb: fix shell edit cannot read '!@#$%^&*' characters 2018-03-26 09:28:58 +08:00
MdePkg MdePkg/Tls1.h: Add TLS record header length and max payload length. 2018-03-22 08:24:45 +08:00
NetworkPkg NetworkPkg/UefiPxeBcDxe: Configure the ARP Instance/RouteTable with new address 2018-03-22 08:25:20 +08:00
Nt32Pkg Nt32Pkg/Nt32Pkg.fdf: Increase the size of FLASH Device. 2018-02-08 08:23:26 +08:00
Omap35xxPkg Omap35xxPkg: add GetTimeInNanoSecond implementation 2017-11-30 14:32:30 +00:00
OptionRomPkg
OvmfPkg OvmfPkg/PlatformBootManagerLib: process "-kernel" before boot devices 2018-03-16 19:58:30 +01:00
PcAtChipsetPkg PcAtChipsetPkg PeiAcpiTimerLib: Add the missing DebugLib header file 2018-02-07 09:16:15 +08:00
QuarkPlatformPkg QuarkPlatformPkg: remove TrEE reference. 2018-03-16 14:19:43 +08:00
QuarkSocPkg
SecurityPkg SecurityPkg Tpm12CommandLib: Fix TPM12 GetCapability response error 2018-03-21 16:43:35 +08:00
ShellBinPkg ShellBinPkg: Update ReadMe.txt 2018-03-19 14:39:02 +08:00
ShellPkg ShellPkg/UefiHandleParsingLib: remove TrEE reference. 2018-03-16 14:19:42 +08:00
SignedCapsulePkg SignedCapsulePkg: Update EdkiiSystemCapsuleLib to check PCD value 2017-12-08 13:31:00 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg DebugCommUsb3: Return error when debug cap is reset 2018-03-20 20:23:53 +08:00
StdLib StdLib/BsdSocketLib: Remove unused variables 2017-11-13 07:39:06 -08:00
StdLibPrivateInternalFiles
UefiCpuPkg UefiCpuPkg/MpInitLib: Disable interrupt at ExitBootServices AP Mwait 2018-03-20 15:53:25 +08:00
UnixPkg
Vlv2DeviceRefCodePkg
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Remove DxeTcg2PhysicalPresenceLibNull 2018-03-21 21:04:23 -07:00
.gitignore
.gitmodules CryptoPkg: Adding OpenSSL as one submodule of EDKII repo 2018-01-18 14:06:15 +08:00
BuildNotes2.txt
Contributions.txt
License.txt
Maintainers.txt Maintainers.txt: Add StandaloneMmPkg and maintainers 2018-03-21 01:13:40 +00:00
Readme.md
StandaloneMmPkg Maintainers.txt: Add StandaloneMmPkg and maintainers 2018-03-21 01:13:40 +00:00
edksetup.bat
edksetup.sh

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources