Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Буфер клавиатуры

1.9K
21 июня 2006 года
Nigger
71 / / 09.04.2005
Есть такое задание: имитировать ввод команды MASM при нажатии на клав. F1.
Я написал резидент, перехватываю 09h , а вот как имитировать ввод команды при обработке клавиши не пойму, ведь в обработчике аппаратного прерывания нельзя испльзовать функции ДОС.
Думаю записывать коды символов в буфер клавиатуры. Но тут такой вопрос, что мне надо записать после символов "MASM" скан-код или расширенный код клавиши Enter и воспримет ли это ДОС как обычный ввод команды ?
14K
22 июня 2006 года
shoorick
48 / / 07.06.2006
может, перехватывая прерывание 09 посылать оригинальному обработчику вместо скан-кода F1 скан-коды клавиш 'M','A','S','M','enter', но тогда при переключении в русский регистр будет неверный результат. а вообще может лучше перехватить 21Н и 09) и подменой заниматься только тогда, когда интерпретатор запрашивает ввод строки - тогда по Ф1 в буфер записать 'masm' и вернуть управление (так, вольное теоретизирование - надо пробовать)
1.8K
23 июня 2006 года
LM(AL/M)
332 / / 20.12.2005
[QUOTE=Nigger]Есть такое задание: имитировать ввод команды MASM при нажатии на клав. F1.
Я написал резидент, перехватываю 09h , а вот как имитировать ввод команды при обработке клавиши не пойму, ведь в обработчике аппаратного прерывания нельзя испльзовать функции ДОС.
Думаю записывать коды символов в буфер клавиатуры. Но тут такой вопрос, что мне надо записать после символов "MASM" скан-код или расширенный код клавиши Enter и воспримет ли это ДОС как обычный ввод команды ?[/QUOTE]

для того что бы симитировать нажатие клавиши есть специальная функция в досе -- см прерывания 21h & 16h + можно в ручную заполнить буфер клавиатуры

один нюанс: в случае с резидентом перед тем как писать что то в буфер клавиатуры нужно его содержимое сохранть или писать данные в начало буфера, при этом нада помнить что размер буфера -- только 16 байт

[QUOTE=shoorick]может, перехватывая прерывание 09 посылать оригинальному обработчику вместо скан-кода F1 скан-коды клавиш 'M','A','S','M','enter', но тогда при переключении в русский регистр будет неверный результат. а вообще может лучше перехватить 21Н и 09) и подменой заниматься только тогда, когда интерпретатор запрашивает ввод строки - тогда по Ф1 в буфер записать 'masm' и вернуть управление (так, вольное теоретизирование - надо пробовать)[/QUOTE]

все бы вам прерывания перехватывать )))
на самом деле -- плохой вариант потому что родной обработчик читает данные из портов клавиатуры и "послать" ему ничего не удастся + куча естественно возникающих сложностей с написанием и отладкой самого резидента
14K
26 июня 2006 года
shoorick
48 / / 07.06.2006
все бы вам прерывания перехватывать ))) - а можно без? ;)
на самом деле -- гнилой вариант потому что родной обработчик - насчет прерывания 9 - согласен, но по нему можно узнать момент нажатия ф1.
на самом деле задача скорее сложнее чем кажется - что если пользователь уже ввел что-то перед ф1?
45K
21 ноября 2008 года
nexus88
1 / / 21.11.2008
Использовать буфер клавиатуры для фиксирования последней нажатой
клавиши.
пока что выводятся все символы, как сделаться чтоб только последний
язык Си под дос
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог