1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
| 4epenOK |
6.05.2007 19:49
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Максим Репутация: 0 |
Прошу прощенья, если такая тема уже существует. Искал искал, но не нашёл то, что мне нужно. А нужно мне вот что: Как обрабатывать одновременное нажатие нескольких клавиш (от 2-х и более). Причём нужно, чтобы можно было использовать любые клавиши в связке с любыми, в том числе Ctrl, F1-F-12, Shift, Tab, Caps Lock, Alt... Например Esc + Alt или Ctrl + 'B'. Коды цифр и букв я знаю, а коды Alt, Ctrl и им подобных-нет. Также хочется знать как Паскаль оперирует с событиями Клавиши_нажата, Клавиша_отпущена. Хочется сделать так, чтобы при одновременном нажатии клавиш программа делала одно, при отпускании обоих клавиш- другое.
P.S. Одновременное нажатие не обязательно значит в одно мгновение. Допускается нажатие одной клаваши и не отпуская её, нажатие другой. Использую Turbo Pascal 7.0 Просветите по этому вопросу Plz Сообщение отредактировано: 4epenOK - 7.05.2007 17:40 -------------------- Работать и создавать, сражаться и побеждать, расчитывать и не ошибаться,
бороться и искать, найти и переработать! |
![]() ![]() |
| TarasBer |
7.05.2007 14:23
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Я вот скачал __IV.PAS и что-то она стрелочки неправильно показывает...
Могу предложить свой модуль KEYS.PAS. Для его использования надо его подключить, в начале программы написать InitKeys, в конце - DoneKeys. И в процессе работы использовать функцию Pressed. Программа, демонстрирующая работу модуля и одновременно помогающая понять, какой клавише какой код соответствует там же в архиве. В модуль специально вставлен код, вырубающий программу при нажатии CTRL+C, даже если программа занята другими делами. Типа защита от зависаний. А если требуется, например, чтобы программа при таком выходе закрывала графику, то надо присвоить процедурной переменной HaltProc процедуру, закрывающую графику. Если ничего не присваивать, то при таком вырубании программа просто прерывания на место вернёт и надпись выведет, что типа нажато было CTRL+C. Ещё модуль не занимается очисткой клавиатурного буфера, поэтому либо он засоряется, либо его очищает сама программа, использующая модуль. И определить одновременное нажатие трёх буквенных клавиш она не может. По-моему, тут уже дело в конструкции клавиатуры. Прикрепленные файлы
keys.rar ( 1.01 килобайт )
Кол-во скачиваний: 271-------------------- |
4epenOK Обработка (одновременного) нажатия клавиш 6.05.2007 19:49
volvo Посмотри здесь: прерывания
При нажатии клавиши ге... 6.05.2007 19:57
4epenOK На счёт твоей программы... Мне непонятно что это з... 6.05.2007 21:28
volvo :) Да что ты? Это как раз будет равно True, если ... 6.05.2007 21:50
4epenOK Значит DEC это то число, которое мы вводим поле #.... 6.05.2007 23:59
volvo Не путай Ascii - код и скан-код... Ascii-код кнопк... 7.05.2007 0:10
4epenOK Спасибо, что разъяснил. А как же тогда работать со... 7.05.2007 0:40
volvo А еще я сказал, что, то есть ответ на предыдущий в... 7.05.2007 0:53
volvo А я вот скачал Keys - так у меня OPOZN.PAS вообще ... 7.05.2007 14:38
TarasBer
А я вот скачал Keys - так у меня OPOZN.PAS вообще... 7.05.2007 14:56![]() ![]() |
|
Текстовая версия | 9.12.2025 4:11 |