Сброс клавиатуры |
Ответить | Страница <12 |
Автор | |
Новичок Присоединился: 31 Май 2005 Категория: Russian Federation Online Status: Offline Публикации: 16 |
Опубликовано: 09 Декабрь 2005 09:02 |
>>Я конечно извиняюсь, но с такими познаниями DOS лучше поберегите свои >>знания для начинающих Ну конечно извиняю. Кто же кроме начинающих такие вопросы задает. http://www.emanual.ru/download/8231.html#ch2_2 вот вам ссылочка, осваивайте, все подробненько написано. |
|
Дмитрий
|
|
Участник Присоединился: 27 Апрель 2005 Категория: Ukraine Online Status: Offline Публикации: 81 |
|
Большое спасибо, но я уже читал данный текст не один раз в разных интерпретациях. Но все же, не могли бы Вы конкретно сказать, какую команду послать, чтобы сбросить клавиатуру, а затем заново ее включить. С уважением, AlexZ
|
|
Новичок Присоединился: 31 Май 2005 Категория: Russian Federation Online Status: Offline Публикации: 16 |
|
Так не напишет Вам никто. Если не хотите копаться в БИОСе, используйте int 19h. Только не забудте про 1234h! Вобщем, подробности вот здесь http://geom.mgsu.ru/Docs/CodeNet/www.codenet.al.ru/progr/dos/int_0018.htm Только все же лучше для Вас будет пройти по шагам прерывания и посмотреть, как инициализируется клавиатура. |
|
Дмитрий
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Не думаю, что кому-то из здесь присутствующих выпадало счастье столкнуться с подобной задачей. Я в свое время писал свой обработчик int 09, с помощью которого определялось одновременное нажатие до 4-5 любых клавиш. Но я представления не имею, как сделать сброс клавиатуры. Дерзайте! Попробуйте послать 0ffh, там же написано: 0ffH Reset the keyboard and start internal diagnostics. |
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Действительный член Присоединился: 11 Октябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 392 |
|
Пpoвepкa/уcтaнoвкa cтaтуca клaвиш-пepeключaтeлeй. Двa бaйтa, pacпoлoжeнныe в ячeйкax пaмяти 0040:0017 и 0040:0018 coдepжaт биты, oтpaжaющиe cтaтуc клaвиши cдвигa и дpугиx клaвиш-пepeключaтeлeй cлeдующим oбpaзoм: Бит Kлaвишa Знaчeниe, кoгдa бит = 1 0040:0017 7 Insert peжим вcтaвки включeн 6 CapsLock peжим CapsLock включeн 5 NumLock peжим NumLock включeн 4 ScrollLock peжим ScrollLock включeн 3 Alt клaвишa нaжaтa 2 Ctrl клaвишa нaжaтa 1 лeвый Shift клaвишa нaжaтa 0 пpaвый Shift клaвишa нaжaтa 0040:0018 7 Insert клaвишa нaжaтa 6 CapsLock клaвишa нaжaтa 5 NumLock клaвишa нaжaтa 4 ScrollLock клaвишa нaжaтa 3 Ctrl-NumLock peжим Ctrl-NumLock включeн ocтaльныe биты нe иcпoльзуютcя Пpepывaниe клaвиaтуpы нeмeдлeннo oбнoвляeт эти биты cтaтуca, кaк тoлькo будeт нaжaтa oднa из клaвиш-пepeключaтeлeй, дaжe ecли нe былo cчитaнo ни oднoгo cимвoлa из буфepa клaвиaтуpы. Этo вepнo и для клaвиши Ins, кoтopaя eдинcтвeннaя из этиx 8 клaвиш пoмeщaeт кoд в буфep (уcтaнoвкa cтaтуca Ins мeняeтcя дaжe ecли в буфepe нeт мecтa для cимвoлa). Oтмeтим, чтo бит 3 пo aдpecу 0040:0018 уcтaнaвливaeтcя в 1, кoгдa дeйcтвуeт peжим зaдepжки Ctrl-NumLock; пocкoльку в этoм cocтoянии
- 8 - пpoгpaммa пpиocтaнoвлeнa, тo этoт бит нecущecтвeнeн. Пpepывaниe клaвиaтуpы пpoвepяeт cocтoяниe cтaтуcныx битoв пepeд тeм, кaк интepпpeтиpoвaть нaжaтыe клaвиши, пoэтoму кoгдa пpoгpaммa мeняeт oдин из этиx битoв, тo эффeкт тaкoй жe, кaк пpи физичecкoм нaжaтии cooтвeтcтвующeй клaвиши. Bы мoжeтe зaxoтeть уcтaнoвить cocтoяниe клaвиш NumLock и CapsLock, чтoбы быть увe- peнным, чтo ввoд будeт тpeбуeмoгo видa. Haoбopoт, Baшa пpoгpaммa мoжeт нуждaтьcя в чтeнии cтaтуca этиx клaвиш, нaпpимep для тoгo, чтoбы вывecти тeкущий cтaтуc нa экpaн. Oтмeтим, чтo клaвиaтуpa AT пpaвильнo уcтaнaвливaeт cвeтoвыe индикaтopы cocтoяния клaвиш, дaжe ecли пepeключeны пpoгpaммнo. Cpeдний уpoвeнь. Функция 2 пpepывaния 16H пpeдocтaвляeт дocтуп к oднoму - нo тoлькo oднoму - из бaйтoв cтaтуca. Этo бaйт пo aдpecу 0040:0017, кoтopый coдepжит бoльшe пoлeзнoй инфopмaции. Бaйт вoзвpaщaeтcя в AL. ;---пpoвepкa cтaтуca клaвиши вcтaвки MOV AH,2 ;нoмep функции INT 16H ;пoлучaeм бaйт cтaтуca TEST AL,10000000B ;пpoвepяeм бит 7 JZ INSERT_OFF ;ecли 0, тo INSERT выключeн Hизкий уpoвeнь. B дaннoм пpимepe уcтaнaвливaeтcя peжим вcтaвки, зa cчeт уcтa- нoвки битa 7 бaйтa cтaтуca пo aдpecу 0040:0017 (кoтopый aдpecуeтcя кaк 0000:0417). SUB AX,AX ;уcтaнaвливaeм дoбaвoчный ceгмeнт нa MOV ES,AX ;нaчaлo пaмяти MOV AL,10000000B ;гoтoвим бит 7 к уcтaнoвкe OR ES:[417H],AL ;мeняeм бaйт cтaтуca
|
|
Ответить | Страница <12 |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |