Axiom Справочник языка

Встроенная функция

Функция 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 не забирает события из очереди.

Запускаемые примеры

См. также