| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Как правильно отлавливать все нажатия клавиш? |
| Автор: karataev 28.1.2006, 01:20 |
| Люди добрые, подскжите пожалуйста, как правильно отловить в Паскале нажатия клавиш, например стрелок и т.п. У меня получается отлавливать только клавиши со значениями таблицы ASCII а всякие там управляющие клавиши не получается... |
| Автор: Snowy 28.1.2006, 02:03 | ||
Если речь идет о TP7, то здесь 3 варианта: 1. Читать данные с порта клавиатуры. 2. Через ассемблерные вставки, используя прерывание клавиатуры. 3. Через чтение области памяти BIOS. Только вот пример привести не могу - всего не упомнишь, а тут конкретные цифры нужны. Уж лет 10 на TP не кодил - не помню. Даже прерывание клавы не помню. Вроде $16... |
| Автор: karataev 28.1.2006, 10:12 | ||||
Спасибо большое, с этим я разобрался
А вот тут не могу объявить переменную, чтобы лежала по этому адресу. Не напомните как это сделать? |
| Автор: volvo877 28.1.2006, 12:59 | ||||
|
| Автор: Zero 28.1.2006, 13:18 | ||||||
| Нажатие контрол и остальных клавиш отдельно не фиксируется, а если их нажимать в сочетании, то определить код легко можно так: С начала напиши такой код:
А дальше в отладчике, в пошаговом режиме смотри за изменением, при выполнении строки
Потом в пошаговом режиме посмотри, если нажать одну любую обычную клавишу (например 'q'), то в для неё кодовый символ так и будет 'q' в вочлисте, а если перед этим удерживать клавишу CTRL, а потом нажать 'q', то там будет код #17 Вот пример кода, который выдаст сообщение если нажата комбинация CTRL+<q>:
|
| Автор: volvo877 28.1.2006, 13:28 | ||
Уверен? Тогда запусти вот это:
(для выхода - любая обычная клавиша) |
| Автор: karataev 28.1.2006, 14:08 | ||||
Я ее и использую, только у меня Free Pascal и он говорит что "Error: absolute can only be associated with a var or const"... |
| Автор: UpL1nK 28.1.2006, 14:50 | ||
| Может в FP нельзя задавать абсолютный адрес, а только делать наложение на ранее определенную переменную ?
|
| Автор: karataev 28.1.2006, 15:34 | ||
Ну тогда нужно чтобы у переменной t был нужный мне адрес - это какой то замкнутый круг получается... |
| Автор: UpL1nK 28.1.2006, 16:02 |
| Просто у меня BPW и абсолютный адрес и наложение работает, хотя я не думаю что есть чтото возможное в BPW , но невозможное в FP |
| Автор: volvo877 28.1.2006, 18:08 | ||
karataev, под какой ОС сидишь? Если под Windows, так пользуйся модулем Windows (какая разница, ты же можешь получить доступ к его функциям и из консольной программы):
Понажимай Ctrl и Shift, и посмотри как меняется текст... |
| Автор: karataev 28.1.2006, 18:41 |
| Все, спасибо, я поставил себе Turbo Pascal 7.0 и все заработало. |