Почему INPUT $ и INKEY $ не работают в режиме консоли Linux? - PullRequest
0 голосов
/ 03 января 2019

Я написал код QB64, чтобы опробовать ОСНОВНЫЕ функции INPUT$ и INKEY$.

Эта программа работает хорошо, когда она не работает в режиме консоли Linux, но если мы настроим программу для работы в режиме консоли Linux, эта программа не будет работать правильно. Висит.

Я думаю, что проблема связана с поведением консоли Linux. У вас есть обходной путь?

Вот простой код:

$CONSOLE:ONLY
_DEST _CONSOLE

PRINT "Hit a key"
A$ = INPUT$(1)
PRINT A$
PRINT "Hit a key"

B$ = ""
WHILE B$ = "": B$ = INKEY$: WEND
PRINT B$

PRINT "Hit a key"

C$ = INPUT$(1)

PRINT C$

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Просто запустил этот код: он отказывается перехватывать любые действия клавиатуры в Win10 как Linux.

Возможно, консольный режим предназначен только для вывода!?

$CONSOLE
_DEST _CONSOLE
$SCREENHIDE
FOR L = 1 TO 10
   PRINT L;
NEXT
DO
    x = _KEYHIT
    IF x THEN END
LOOP
END
0 голосов
/ 21 января 2019

Способ получения информации из консоли существует. Мы можем использовать команду INPUT, но это не позволяет нам избежать нажатия клавиши для ввода данных. Мой вопрос касался использования INKEY$ и INPUT$, которые позволили бы нам не нажимать клавишу .

Следующий код работает правильно на консоли Linux, но не является решением этого вопроса.

$CONSOLE:ONLY
_DEST _CONSOLE

INPUT A
PRINT A
0 голосов
/ 19 января 2019

Эта функция keyhit может фактически работать в linux:

PRINT "Hit a key:"
DO UNTIL _KEYHIT
    _LIMIT 20
LOOP
PRINT "Key pressed."

Или тест на ключ:

PRINT "Hit <escape>:"
DO
    _LIMIT 20
    x = _KEYHIT
    IF x = 27 THEN EXIT DO
LOOP
PRINT "Escape pressed."
...