Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Brand ©   (2001-12-13 23:25:00) 

Есть такая информация : Для того, чтобы можно было записать в буфер 15 элементов необходимо, чтобы был 16-ый элемент с кодом клавиши <Enter>. Этот элемент располагается перед указателем головы буфера.
В своей программе я показываю постоянно буфер клавиатуры. Видно как он заполняется как-раз до этой позиции с кодом <Enter> Дальнейший ввод блокируется. Казалось-бы, что этот <Enter> необходим для идентификации конца буфера, однако, прочитав пару символов, указатель хвоста сдвигается, а код с клавишей <Enter> остается на месте. Более того потом можно еще нажимать клавиши и это поле с <Enter> портится.
Так для чего нужно это поле с <Enter>???


MBo   (2001-12-19 09:52:00) [1]

>но зачем, незнает никто
нелепо. Ты его нажал - вот он там и остался, пока не затрется следующим вводом (~16 нажатий спустя). Почему остался - см. устройство буфера.


Someone   (2001-12-19 02:05:00) [2]

> И еще, если запускаю прогу из компилятора то там совсем не Enter.
Ну так компилятор же не нажимает на кнопки, а запускает программу другим способом.


Brand   (2001-12-18 23:52:00) [3]

Ничего я эмулировать не хочу. Просто в институте училка попросила вывести буфер клавиатуры на экран, типа там должен быть Enter. И действительно там он есть при каждом запуске *.exe файла на том месте где я писал. Так вот училка мне и говорит, что все знают, что он там есть, но зачем, незнает никто. Может это просто совпадение, потому-что запускается экзешник клавишей Enter и при запуске проги он получается самый последний.
И еще, если запускаю прогу из компилятора то там совсем не Enter.


MBo   (2001-12-14 09:29:00) [4]

>Для того, чтобы можно было записать в буфер 15 элементов необходимо
Enter тут ни при чем
в $41a и $41c содержатся адреса начала и конца буфера
(32 байта с $41e по $43d - коды нажатых-отпущенных клавиш)
буфер, насколько помню, кольцевой. При заполнении пищит.
при чтении буфера указатели сдвигаются, совпали - пусто.
если ты каким-то левым образом записал код Enter-а, не внеся его в очередь, то буфер о нем и не знает и считать его не сможешь.
(насколько я понимаю, хочешь эмулировать ввод команды с клавы)
для правильной работы, думаю, надо ввести код нажатия и отпускания Enter и сдвинуть указатель на 2 байта.



Наверх

Титульная страница Поиск, карта сайта Написать письмо