Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Ввод с клавиатуры

Автор: Archvingel 31.05.2006 15:10

Вот такой вот вопрос появился, точнее даже три, но по одной теме:
во-первых, как сделать, чтобы при зажатии клавиши комп считывал бы ее непрерывно, пока ее не отпустят? Дело в том, что при обычно он сперва считывает ее код а потом около секунды думает, хотя клавиша зажата. Даже если я делаю

uses
crt;
var
key:char;
begin
...
while keypressed do key:=readkey;
...

он все равно делает существенный перерыв между первым символом и последующими. При выводе кода на экран это выглядит примерно так:
а (пауза) ааааааааааааааа... При написании игр это жутко мешает, потому что зачастую нет времени ждать, пока он закончит эту паузу;
во-вторых: как сделать так, чтобы комп считывал несколько зажатых клавиш одновременно - я имею в виду не стандартные комбинации типа Alt+F1, а именно буквенные или специальные, потому что при обычном readkey он считывает ту, которая зажата позже; и, наконец,
в-третьих: как считывать клавиши типа shift, ctrl, alt и все прочие такие же.
Заранее спасибо.

Автор: volvo 31.05.2006 15:17

Поиском пользоваться не пробовал (я насчет Ctrl / Alt / Shift) ?

Насчет задержки после первого символа - есть возможность ее УМЕНЬШИТЬ, но не убрать совсем, так что навряд ли тебе это поможет.

Ну, а насчет нескольких клавиш одновременно - вешай свой обработчик прерывания клавиатуры и работай со скан-кодами (через массив состояний нужных тебе клавиш, нажата = True, отпущена = False)... Это тоже уже рассматривалось, "Поиск" тебе поможет...

Автор: Archvingel 31.05.2006 16:10

Спасибо большое, видимо плохо искал.