написал это приложение, которое читает ввод с консоли.
for(; ; )
{
GetNumberOfConsoleInputEvents(stdinInput, &numEvents);
if (numEvents != 0) {
INPUT_RECORD eventBuffer;
ReadConsoleInput(stdinInput, &eventBuffer, 1, &numEventsRead);
if (eventBuffer.EventType == KEY_EVENT) {
if(eventBuffer.Event.KeyEvent.bKeyDown)
{
printf("%c",eventBuffer.Event.KeyEvent.uChar.AsciiChar);
dataBuffer[bufferLen++] = eventBuffer.Event.KeyEvent.uChar.AsciiChar;
dataBuffer[bufferLen] = '\0';
if ( dataBuffer[bufferLen] == 99 || eventBuffer.Event.KeyEvent.uChar.AsciiChar == '\r' ) {
printf("User Wrote: %s\n",dataBuffer);
memset(dataBuffer,0,sizeof(dataBuffer));
bufferLen = 0;
}
}
}
}
}
Он помещает данные в буфер, а затем распечатывает буфер. Проблема возникает, когда я использую Shift
или CapsLock
для написания заглавных букв или ! @ # $ %
символов. Тогда он ничего не печатает.
Я пробовал что-то с кодом VK_LSHIFT
, но не сработало.
Также, если попытаться написать что-то на другом языке, кроме английского, он напечатает что-то вроде этого ▒├╞▒├╞▒├│▒├│
Он не сможет распознать другой язык.
Может кто-нибудь дать мне подсказку о том, как исправить эти проблемы?
Спасибо!