IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Обработка (одновременного) нажатия клавиш
сообщение
Сообщение #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 -


--------------------
Работать и создавать, сражаться и побеждать, расчитывать и не ошибаться,
бороться и искать, найти и переработать!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Я вот скачал __IV.PAS и что-то она стрелочки неправильно показывает...
Могу предложить свой модуль KEYS.PAS.
Для его использования надо его подключить, в начале программы написать InitKeys, в конце - DoneKeys. И в процессе работы использовать функцию Pressed.
Программа, демонстрирующая работу модуля и одновременно помогающая понять, какой клавише какой код соответствует там же в архиве.
В модуль специально вставлен код, вырубающий программу при нажатии CTRL+C, даже если программа занята другими делами. Типа защита от зависаний. А если требуется, например, чтобы программа при таком выходе закрывала графику, то надо присвоить процедурной переменной HaltProc процедуру, закрывающую графику. Если ничего не присваивать, то при таком вырубании программа просто прерывания на место вернёт и надпись выведет, что типа нажато было CTRL+C.
Ещё модуль не занимается очисткой клавиатурного буфера, поэтому либо он засоряется, либо его очищает сама программа, использующая модуль.
И определить одновременное нажатие трёх буквенных клавиш она не может. По-моему, тут уже дело в конструкции клавиатуры.


Прикрепленные файлы
Прикрепленный файл  keys.rar ( 1.01 килобайт ) Кол-во скачиваний: 270


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 20:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name