Встроенная функция
Функция KEYDOWN
Непрерывное управление, например движение при удержании стрелки, требует знать не о прошлом нажатии, а о том, нажата ли клавиша прямо сейчас. Функцию KEYDOWN вызывают повторно, чтобы проверить текущее удержание клавиши или сочетания клавиш; очередь ввода при этом не изменяется.
Где берётся состояние
Состояние поступает от активной поверхности ввода: текстовой области IDE либо открытого окна SCREEN 0 или SCREEN 1..10. Правила фокуса и очистки состояния описаны в разделе ввода.
Синтаксис и аргумент
KEYDOWN(<клавиша>)
Передайте STRING с именем клавиши либо сочетанием, например "CTRL+LEFT".
| Аргумент | Тип | Описание |
|---|---|---|
<клавиша> | STRING | Имя клавиши. Обычные буквенно-цифровые клавиши можно указывать как "A" или "1"; специальные клавиши задаются именами вроде "LEFT", "ESC", "F5". |
Что возвращает функция
Функция возвращает значение типа BOOLEAN и не извлекает события.
TRUE, если указанная клавиша сейчас удерживается.FALSE, если клавиша не удерживается, имя пустое или среда выполнения не предоставляет состояние клавиатуры.
Для пустой строки или строки из пробелов возвращается FALSE; неподдержанное имя не обозначает физическую клавишу и не создаёт ошибку аргумента.
Имена клавиш
Функция KEYDOWN принимает канонические имена клавиш и алиасы. Полная таблица имён и правила их записи приведены в разделе «Имена клавиш».
Сочетания клавиш
В строке сочетания части разделяются знаком +. Каждая из перечисленных клавиш должна удерживаться в момент вызова.
Например, KEYDOWN("CTRL+ALT+DELETE") проверяет одновременное удержание всех трёх клавиш. События их нажатия остаются в очереди.
IF KEYDOWN("CTRL+LEFT") THEN
PRINT "CTRL+LEFT"
END IF
Диагностика
MB2004: вызов встроенной функцииKEYDOWNполучен без аргумента или с лишними аргументами.MB2003: аргумент встроенной функцииKEYDOWNнельзя связать как строку.
Пример проверки сочетания клавиш
FOR i = 1 TO 20000
IF KEYDOWN("SHIFT+A") THEN
PRINT "SHIFT+A"
EXIT FOR
END IF
NEXT
Цикл многократно проверяет удержание и завершается досрочно при первом совпадении. Повторные вызовы безопасны именно потому, что KEYDOWN не забирает события из очереди.