[JFWRus] Re[7]: Переключение NUMLOCK
Здравствуйте,
> По моему мнению достаточно поисследовать пару-тройку функциональных драйверов
> Windows, чтобы убедиться в том, что они используют вызовы Ke386CallBios() для
> обращения к ROM BIOS.
Возможно кто-то из производителей это и использует, я не берусь утверждать, что
это не так, даже возможно где-то такими вещами страдает и Майкрософт, не исключаю,
хотя это из ряда вон выходящий плохой стиль и я в этом опять же сильно сомневаюсь,
но не думаю, что так сделано в драйвере клавиатуры. Ещё во времена ДОСа я довольно
не плохо знал общую структуру строения обработки клавиш в БИОСЕ и даже не один
раз и не на одном БИОСе изучал обработку клавиатуры. То, что там код БИОСа не
реентерабельный, думаю Вы врядли будете дисскутировать, не говоря уже о том,
что поддержки многих видов клавиатур илди клавиатуро-подобных устройств, типа
видео-мышей и USB-клавиатур просто отсутствует в БИОСе, что кстати до некоторой
степени сдерживает переход полностью на USB клавиатуры - не зайдёшь в setup,
если это не специальная хитрая мать. Очень мне интересно послушать как же по
Вашему мнению обрабатывается клавиша NumLock на USB клавиатуре на уровне БИОСА,
на матери на которой нет поддержки USB клавиатур в БИОСе, а то, что она обрабатывается
я могу Вам гарантировать, видимо хитрые форточки патчат БИОС, прошивая поддержку
USB клавиатур прямо на лету во флеш-память, благо теперь это можно, а на старых
матерях, где стоит ещё не флеш память, просто перепаивают микросхему память простым
паяльником, разве не так?.. Запускаете Вы установку форточек, а они обнаружив,
что у Вас USB клавиатура, и не флеш БИОС вылезают из компьютера и быстро так
открутив крышку системника перепаивают микросхему на специально заготовленную
фирмой Майкрософт, причём делают это так быстро, что Вы даже и ничего заметить
не успеваете, и думаете, что ничего не произошло, а форточки после этого с чувством
выполненного долга обрабатывают нажатия клавиши NumLock на уровне БИОСа - хороша
картинка, разве не так, а главное правдоподобна?
> Это можно сделать и под Windows. В сообщении WM_KEYDOWN в параметре lParam
бит
> с 16 по 23 содержат скан-код нажатой клавиши.
Который помещается туда драйвером клавиатуры, который в свою очередь теоретически
может поместить туда любую информацию. Например, изобразите-ка мне получение
двойного скан-кода от расширенной клавиатуры - ничего более получения установленного
бита 24 Вы от драйвера клавиатуры не добьётесь, а реально при нажатии клавиш
дополнительных блоков клавиатуры микроконтроллер клавиатуры начиная с PC AT посылает
два скан-кода. На этом кстати основана и работа всякого рода клавиатуро-подобных
устройств, типа тех же видео-мышей и прочих извращений. Там как Вы понимаете
такими скан-кодами как в клавиатуре даже и не пахнет, а в сообщениях Вы получаете
как раз скан-коды обычной клавиатуры, помещаемые туда драйвером. Так что предложенный
Вами способ не является сколько-нибудь доказательным, в отличие от проверки из-под
ДОСа, который ничего особо не трогает и можно перехватив прерывание клавиатуры
(не помню сейчас - 12 что-ли?) и преспокойненько читать порт клавиатуры напрямую
получая посылаемые скан-коды.
Челюсти, кстати в функцию KeyPressedEvent получают именно обработанные скан-коды
клавиатуры, что и наводит меня на подозрение, что нажатие клавиши NumLock проходит
через систему сообщений форточек, а значит его можно съемулировать, поскольку
только что проверил, NumLock посылает скан-код в KeyPressedEvent.
О сколько нам открытий чудных готовят просвящения дух и опыт сын ошибок трудных...
(с) Пушкин Александр Сергеевич...
До свидания.
***
Это сообщение No 8275
было разослано для 469 участников дискуссионного листа
[JFWRus] Re[7]: Переключение NUMLOCK