![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
4epenOK |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Максим Репутация: ![]() ![]() ![]() |
Прошу прощенья, если такая тема уже существует. Искал искал, но не нашёл то, что мне нужно. А нужно мне вот что: Как обрабатывать одновременное нажатие нескольких клавиш (от 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 |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я вот скачал __IV.PAS и что-то она стрелочки неправильно показывает...
Могу предложить свой модуль KEYS.PAS. Для его использования надо его подключить, в начале программы написать InitKeys, в конце - DoneKeys. И в процессе работы использовать функцию Pressed. Программа, демонстрирующая работу модуля и одновременно помогающая понять, какой клавише какой код соответствует там же в архиве. В модуль специально вставлен код, вырубающий программу при нажатии CTRL+C, даже если программа занята другими делами. Типа защита от зависаний. А если требуется, например, чтобы программа при таком выходе закрывала графику, то надо присвоить процедурной переменной HaltProc процедуру, закрывающую графику. Если ничего не присваивать, то при таком вырубании программа просто прерывания на место вернёт и надпись выведет, что типа нажато было CTRL+C. Ещё модуль не занимается очисткой клавиатурного буфера, поэтому либо он засоряется, либо его очищает сама программа, использующая модуль. И определить одновременное нажатие трёх буквенных клавиш она не может. По-моему, тут уже дело в конструкции клавиатуры. Прикрепленные файлы ![]() -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 15:58 |