Здравствуйте,
> Ну прежде вы именно это исключали. Иными словами, в предыдущем сообщении вы
рассуждали
> о том, о чем не имеете представления?
Вы очень некрасиво передёргиваете, что свойственно Вам когда Вы чувствуете свою
неправоту, а признаться страшно. Я утверждал, что форточки не используют вызовы
БИОС. Где Вы видите в моём утверждении хоть слово о драйверах. Если следовать
Вашей логике, то форточки пишут все кому не лень, включая даже фирму Фридом Саентифик.
Даже Вы или я могут стать автором форточек если напишут вшивый драйверок, почувствуй
себя сотрудником Майкрософт!
> В драйвере клавиатуры этого нет (см. ниже).
Удивительно, я думал Вы и здесь со мной не согласитесь.
> Сам себя не похвалишь -- никто не похвалит. Верно?
Ну это уж совсем беспонтовый наезд не по делу явно. Сказать больше нечего?
> А BIOS'ы с тех пор сильно изменились...
Безусловно, и новые БИОСы я не изучал, времени уже нет. Но вот что странно форточки
даже на старых изученных мной БИОСах обрабатывают нажатие клавиши на уровне БИОС,
даже на USB клавиатурах. Я в шоке, как так, я даже об этом не догадывался, явно
Майкрософт перешила БИОСы, ой простите, перепаяла, во времена тех БИОСов ещё
не было флеш-ПЗУ.
> Несложно сообразить, что эта спецификация от 1997 года.
> В нынешних BIOS включить что-нибудь типа USB Keyboard support,USB Legacy Support,
> USB Keyboard via.., etc. и поддержка USB-клавиатуры будет осуществляться BIOS'ом.
> В зависимости от BIOS, возможно, еще кое-что придется включить/отключить в
настройках.
> Разумеется, чем более "свежее" железо, тем меньше проблем с этой поддержкой.
Не вопрос, у меня мать EPOX из ене дешёвых, выпуска 2004 года, приезжайте настройте
мне работу USB клавиатуры в БИОС-сетуп. Если Вам это удастся, то я не премину
об этом написать здесь. Но что-то я в этом сомневаюсь.
> Ну, в общем случае, вы мыслите в правильном направлении, только для этого существует
> известный и более цивилизованный способ -- заменить обработчик прерывания на
> свой (что и делает Windows).
> Верно лишь то, что выражение "на уровне BIOS" было неудачным (двусмысленным),
> а подразумевалось, что ОС работает с аппаратурой на том уровне, на котором
изначально
> работает BIOS (то есть спортами контроллера клавиатуры) -- лень было разжевывать.
> Но сути дела это не меняет, а суть дела в том, что переключение состояния NumLock
Ага, в моих постах Вы придираетесь к каждому слову, к каждой запятой, требуя
абсолютной точности, а сами допускаете настолько расширительное толкование, меняющее
смысл кардинально, а потом выкручиваетесь как уж на сковороде. Чем кумушек считать
трудится, не лучше ли на себя кума оборотиться (с) Крылов.
Перехват прерывания имеет отношение к БИОС только то, что это прерывание по умолчанию
обрабатывается БИОСом, а всё остальное никакого отношения к БИОСу не имеет. Ваше
выражение обрабатывается на уровне БИОСа означает, что в форточках БИОС обрабатывает
нажатие клавиш и уже передаёт обработанное форточкам. Не говоря уже о том, что
понятие уровень БИОСа вообще не существует.
Иначе говоря если следовать Вашей логике любая клавиша обрабатывается на уровне
БИОСа, которого не существует.
> Так что если в самом приложении нет специального кода, обрабатывающего WM_KEYDOWN
> с VK_NUMLOCK (а этого нет в подавляющем большинстве приложений), то это сообщение
> будет проигнорировано.
Либо если не установлен перехватчик события, посылки сообщения, который это обработает
в любом приложении. Учите мат. часть.
> Соответственно, если по сути сказать нечего, но есть желание придраться, то
[... разглагольствования о том что надо делать всем вокруг и что не надо поскипаны
...]
> том, что Windows не использует DIOS.
> Зафиксируем тот момент, что вы сказали "два скан-кода", из чего можно сделать
> вывод, что речь-таки идет о расширенных скан-кодах (тогда корректнее говорить
> не "два скан-кода", а двухбайтовый скан-код). Во всех иных случаях микроконтроллер
> посылает либо меньше двух байтов, либо больше, так что "два скан-кода" -- это
> расширенный скан-код.
Иногда это называют и так. На самом деле это два скан-кода, поскольку после получения
каждого скан-кода необходимо отдельно накормить микросхему или её вырождение
в чипсете обработчика прерывания кодом 20h иначе второй скан-код получить просто
невозможно поскольку обработчик запроса на прерывание его просто не отдаст до
получения знаменитого кода 20h и генерации второго прерывания. Если бы это был
один скан-код, то он отдвался бы без переинициализации микросхемы обработчика
прерывания и без генерации второго прерывания для его получения.
И ещё два байта посылается ещё в одной ситуации после того как был разработан
PC AT и вплоть до сегодняшнего дня при отпускании клавиши генерится тоже два
скан-кода - первый указывающий на то, что клавишу отпустили, второй скан-код
клавиши. Опять же неплохо бы подучить мат. часть
> Думаю, я правильно истолковал ваши слова.
Думаю, что Вы как обычно когда Вас зажали в угол аргументами, просто пытаетесь
выкрутится.
> Не надо путать посылку сообщения и эмуляцию работы аппаратных устройств. Ваше
> сообщение получит только то приложение (а точнее тот поток), которому принадлежит
> окно . Если это сообщение не обрабатывается оконной процедурой самого окна
и
> не обрабатывается оконной процедурой по умолчанию, то никакой реакции вы не
получите.
Вы как обычно забыли о многих интересностях в фоточках. Например есть сообщения
недокументированные и наверное нигде официально не описанные, называемые системными,
оени проходят во всей системе и по всем доступным окнам одновременно и часто
реализуют какие-либо системные вещи. И как правило они не имею привязки к конкретному
окну, обычно эти сообщения имеют значения с установленными битами в старшем слове
кода сообщения и их обработка производится не оконной системой и не DefWindowProc,
а где-то там в глубинах форточек. Если Вы не будете передавать управление DefWindowProc
эти сообщения всё равно будут обработаны, можете сами проверить. Иногда даже
посылка ради эксперимента этих сообщений даёт интересные результаты.
До свидания.
***
Это сообщение No 8289
было разослано для 469 участников дискуссионного листа
[JFWRus] Re[9]: Переключение NUMLOCK