INKEY: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''INKEY''' — стандартное слово [[Каллисто]]. Опрос состояния клавиатуры. | '''INKEY''' (опрос клавиши) — стандартное слово [[Каллисто]]. Опрос состояния клавиатуры. | ||
Посылает в [[Стек данных|стек]] [[Код клавиши|код нажатой клавиши]] или −1, если нет нажатой клавиши. | Посылает в [[Стек данных|стек]] [[Код клавиши|код нажатой клавиши]] или −1, если нет нажатой клавиши. |
Версия от 23:57, 23 февраля 2016
INKEY (опрос клавиши) — стандартное слово Каллисто. Опрос состояния клавиатуры.
Посылает в стек код нажатой клавиши или −1, если нет нажатой клавиши.
Ввод слова INKEY
В режиме ЛАТ последовательно нажмите клавиши 7 4 9 ИП ,
EKEY? и KEY? в стандарте ANS Forth
10.6.2.1307 EKEY? "e-key-question" FACILITY EXT ( -- flag ) Если событие клавиатуры доступно, возвращает true. Иначе возвращает false. Событие должно быть возвращено следующим выполнением EKEY.
После возвращения EKEY? со значением true, последующее выполнение EKEY? до выполнения KEY, KEY? или EKEY также возвращает true, ссылаясь на то же самое событие.
10.6.1.1755 KEY? "key-question" FACILITY ( -- flag ) Если символ доступен, возвращает true. Иначе, возвращает false. Если не символьные события клавиатуры доступны перед первым допустимым символом, они будут отвергнуты и впоследствии недоступны. Символ должен быть возвращен следующим выполнением KEY.
После возвращения KEY? со значением true, последующие выполнения KEY? до выполнения KEY или EKEY также возвращают true, без отмены событий клавиатуры.
A.10.6.1.1755 KEY? Технический Комитет ходил по кругу некоторое время по поводу стекового эффекта. Любое решение нарушит чью-то практику и накажет некоторую машину. Этот путь не касается опережающего ввода с клавиатуры на некоторых системах, когда требуется реализация односимвольного буфера на машинах, где опрос клавиатуры неизбежно оканчивается разрушением символа.
Использование KEY или KEY? указывает, что приложение не желает беспокоиться о не символьных событиях, так что они отвергаются в ожидании, в конечном счете, получения допустимого символа. Приложения, желающие обработать не символьные события, должны использовать EKEY и EKEY?. Возможно смешивать использование KEY? / KEY и EKEY? / EKEY в пределах отдельного приложения, но приложение должно использовать KEY? и KEY только, когда оно желает удалить не символьные события до получения допустимого символа.
История
Слово INKEY получило своё название от оператора INKEY$, выполнявшего в MSX-Бейсике «Ямах» схожую функцию опроса клавиатуры без остановки программы.
В MMSFORTH было слово INKEY$ — которое возвращало адрес расположенной в PAD односимвольной счётной строки, пустой или с кодом нажатой клавиши.
Ссылки
- См. слова EKEY, KEY
- Слово EKEY? в стандарте ANS Forth (англ.)
- Слово KEY? и комментарий к нему в стандарте ANS Forth (англ.)
- Слово EKEY? в черновике Forth 200x (англ.)
- Слово KEY? и комментарий к нему в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |