![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Буфер клавиатуры.
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 байта.