![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
ДенисС |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Репутация: ![]() ![]() ![]() |
Стал вот потихоньку разбираться с паскалем, вроде что то получается. Вот возникла проблема: как задействовать стрелки и прочии несимвольные клавиши? С буквами-цифирьками вроде все просто, пишешь например C:=readln, а потом разными способами опредиляешь, что надо сделать с этой клавишей. А вот как быть со стрелками - как то непойму. Они вроде таким способом в строковую переменную ничего не записывают. Где-то краем уха услышал, что используется запись каким-то сложным шифром, а вот как его после этого опредилять, и какие кнопки каким шифром опредиляются - не слышал. Может здесь кто подскажет, как это все надо делать?
|
![]() ![]() |
P@sh@ |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
не забывайте также, что седьмой бит значения scancode:=Port[$60] - это флаг нажатия/отпускания клавиши... т.е. если scancode and $80>0, то клавишу отпустили, если 0 - нажали...
также есть некоторые клавиши (Pause, WinKeys, дополнительная цифровая клавиатура - т.н. GreyPad), которые выдают несколько кодов за раз (до четырех) и на нажатие и на отпускание пример: Код var scancode: byte; keyup: boolean; {false - нажатие} shift: boolean; {индикатор нажатия клавиши "Shift"} ... scancode:=Port[$60]; {последнее событие клавиатуры} keyup:=scancode and $80>0; {выцепляем 7-й бит} scancode:=scancode and $7F; {убираем 7-й бит} if scancode=$2B then shift:=not keyup; {шифт нажат или отпущен} ... далее можно проверять флаг shift при обработке обычных клавиш... но этот код лучше всего использовать в составе обработчика прерывания клавиатуры (как например сделано в моей игрушке "танки", кое-какие исходники которой выложены на форуме). Если же нужна вся клавиатура, а обработчик делать влом (таблицы офигенные набивать), есть еще вариант, небольшая процедурка, потом запишу сюда, если надо |
![]() ![]() |
![]() |
Текстовая версия | 28.04.2025 12:42 |