Change the SimpleTextInEx implementation to return CTRL+C when CTRL and C are both pressed; SimpleTextIn implementation still returns CTRL+3.

Signed-off-by: niruiyu
Reviewed-by: qianouyang

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12564 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
niruiyu 2011-10-25 06:12:18 +00:00
parent 608817ad71
commit 7ad45baa7d
1 changed files with 10 additions and 10 deletions

View File

@ -362,16 +362,6 @@ GopPrivateAddKey (
GopPrivateAddQ (Private, &Private->QueueForNotify, &KeyData); GopPrivateAddQ (Private, &Private->QueueForNotify, &KeyData);
//
// Convert Ctrl+[A-Z] to Ctrl+[1-26]
//
if (Private->LeftCtrl || Private->RightCtrl) {
if ((KeyData.Key.UnicodeChar >= L'a') && (KeyData.Key.UnicodeChar <= L'z')) {
KeyData.Key.UnicodeChar = (CHAR16)(KeyData.Key.UnicodeChar - L'a' + 1);
} else if ((KeyData.Key.UnicodeChar >= L'A') && (KeyData.Key.UnicodeChar <= L'Z')) {
KeyData.Key.UnicodeChar = (CHAR16)(KeyData.Key.UnicodeChar - L'A' + 1);
}
}
GopPrivateAddQ (Private, &Private->QueueForRead, &KeyData); GopPrivateAddQ (Private, &Private->QueueForRead, &KeyData);
return EFI_SUCCESS; return EFI_SUCCESS;
@ -605,6 +595,16 @@ WinNtGopSimpleTextInReadKeyStroke (
if (KeyData.Key.ScanCode == SCAN_NULL && KeyData.Key.UnicodeChar == CHAR_NULL) { if (KeyData.Key.ScanCode == SCAN_NULL && KeyData.Key.UnicodeChar == CHAR_NULL) {
continue; continue;
} }
//
// Convert Ctrl+[A-Z] to Ctrl+[1-26]
//
if ((KeyData.KeyState.KeyShiftState & (EFI_LEFT_CONTROL_PRESSED | EFI_RIGHT_CONTROL_PRESSED)) != 0) {
if ((KeyData.Key.UnicodeChar >= L'a') && (KeyData.Key.UnicodeChar <= L'z')) {
KeyData.Key.UnicodeChar = (CHAR16) (KeyData.Key.UnicodeChar - L'a' + 1);
} else if ((KeyData.Key.UnicodeChar >= L'A') && (KeyData.Key.UnicodeChar <= L'Z')) {
KeyData.Key.UnicodeChar = (CHAR16) (KeyData.Key.UnicodeChar - L'A' + 1);
}
}
CopyMem (Key, &KeyData.Key, sizeof (EFI_INPUT_KEY)); CopyMem (Key, &KeyData.Key, sizeof (EFI_INPUT_KEY));
return EFI_SUCCESS; return EFI_SUCCESS;
} }