Я знаю, что консоль MS-DOS в венде, это какое-то очень специальное окно, которое чуть ли не в ядре реализовано. Но и всё же, а нельзя ли просто отправлять этому окну то, что хочется, и не париться? Ну, русские буквы, вперемешку с английскими. Каким-нибудь там SendMessage, с параметром, например, WM_CHAR...
А, хм, нельзя. Загуглил в мсдн, там есть WM_CHAR -- это key-release-event декодированный в char, чего маловато, поскольку хочется, как я думаю, и keyup, и keydown эвенты отсылать. А WM_KEYUP/KEYDOWN -- это именно коды клавиш, и коды клавиши в русской раскладке ничем не отличаются от кода той же клавиши в английской. Это коды физических клавиш. То есть тупо перехватить весь клавиатурный ввод и перекодировать его в последовательность событий той раскладки какой хочется -- не выйдет. То есть вся эта груда кода, начиная с драйвера клавиатуры и выше вплоть до win32api, весь этот код, который избавляет прикладное приложение от работы с портами ввода/вывода и обработки исключений, на самом деле абсолютно бесполезная груда кода, которая нихрена не делает. Эта груда кода не повышает уровень абстракции от железа. В скан-кодах физических клавиш я мыслил о клавиатуре когда программы под дос на ассемблере писал. Во всех остальных местах, если я и имел дело с кодами клавиш, то коды эти были уже проявлением более высокого уровня абстракции, речь шла о "виртуальных" клавишах, и если посчитать количество разных кодов, которые прилетают с клавиатуры, то запросто можно было бы придти к выводу, что на клавиатуре сотни клавиш. Если учесть японский и китайских "алфавиты", то может быть даже и тысячи.
Нет, ну вот каждый взгляд на венду, обязательно ставит передо мной вопрос: как можно было написать такую дебильную систему?
Блин, Венда до того недокументированная система, особенно сам "Сеанс MS-DOS", что поковыряться было даже интересно...
Но вопросов всегда остаётся больше, чем ответов.
Я бы на месте MS, тоже бы постыдился такое документировать. Я бы даже msdn, в котором я только что выяснил про вендовые сообщения с клавиатуры, даже msdn я бы постыдился создавать.