Inkey
 
Возвращает строку, представляющую первую клавишу в буфере клавиатуры

Синтаксис
Использование

result = Inkey[$]

Возвращаемое значение

Первый символ , найденный в буфере клавиатуры, или пустую строку ("") если не найдено.

Описание

Просматривает буфер клавиатуры и возвращает String(строковое) представление первого символа, если таковой имеется. После этого клавиша удаляется из буфера и не отображается на экране. Если буфер клавиатуры является пустым, пустая строка ("") немедленно возвращается без ожидания клавиши.

Если клавиша находится в наборе символов ASCII, один символ String , состоящий из этого символа возвращается . Если клавиша является "расширенной" одна из (цифровая клавиатура, курсоры, функциональные F1...) два символа String возвращаются, первый из которых является расширенным символом (см. различия диалектов ниже)

Клавиши Shift, Ctrl, Alt, и AltGr не могут быть прочитаны этой функцией, так как они никогда не входят в буфер клавиатуры (Хотя, возможно Shift-A будет сообщено по Inkey иначе, чем Control-A и так далее; Alt-A является расширенной клавишей, а-ля вышеупомянутое).

Смотрите также Input() или GetKey, или Sleep для ожидания нажатия клавиши, если буфер клавиатуры пустой.

Пример

Print "press q to quit"
Do
    Sleep 1, 1
Loop Until Inkey = "q"

#if __FB_LANG__ = "qb"
#define EXTCHAR Chr$(0)
#else
#define EXTCHAR Chr(255)
#endif

Dim k As String

Print "Press a key, or Escape to end"
Do

    k = Inkey$

    Select Case k

        Case "A" To "Z", "a" To "z": Print "Letter: " & k
        Case "1" To "9":             Print "Number: " & k

        Case Chr$(32): Print "Space"

        Case Chr$(27): Print "Escape"

        Case Chr$(9): Print "Tab"

        Case Chr$(8): Print "Backspace"

        Case Chr$(32) To Chr$(127)
            Print "Printable character: " & k

        Case EXTCHAR & "G": Print "Up Left / Home"
        Case EXTCHAR & "H": Print "Up"
        Case EXTCHAR & "I": Print "Up Right / PgUp"

        Case EXTCHAR & "K": Print "Left"
        Case EXTCHAR & "L": Print "Center"
        Case EXTCHAR & "M": Print "Right"

        Case EXTCHAR & "O": Print "Down Left / End"
        Case EXTCHAR & "P": Print "Down"
        Case EXTCHAR & "Q": Print "Down Right / PgDn"

        Case EXTCHAR & "R": Print "Insert"
        Case EXTCHAR & "S": Print "Delete"


        Case EXTCHAR & "k": Print "Close window / Alt-F4"

        Case EXTCHAR & Chr$(59) To EXTCHAR & Chr$(68)
            Print "Function key: F" & Asc(k, 2) - 58

        Case EXTCHAR & Chr$(133) To EXTCHAR & Chr$(134)
            Print "Function key: F" & Asc(k, 2) - 122

        Case Else
            If Len(k) = 2 Then
                Print Using "Extended character: chr$(###, ###)"; Asc(k, 1); Asc(k, 2)
            ElseIf Len(k) = 1 Then
                Print Using "Character chr$(###)"; Asc(k)
            End If

    End Select

    If k = Chr$(27) Then Exit Do

    Sleep 1, 1

Loop


Различия диалектов

  • Расширенный символ Chr(255) в диалектах -lang fb и -lang fblite.
    • В диалекте -lang qb, расширенный символ зависит от того, как записывается ключевое слово. Если используется форма QB Inkey$, расширенный символ будет Chr(0). Если он упоминается как __Inkey, расширенной символ будет Chr(255).
    • В всех других диалектах расширенный символ всегда Chr(255).
  • Суффикс строкового типа $ является необязательным в диалектах -lang fblite и -lang fb, но требуется в диалекте -lang qb.

Отличия от QB

  • Нет различий в диалекте -lang qb.
  • QBasic возвращает Chr(0) в качестве первого символа для расширенной клавиши, но FreeBASIC возвращает Chr(255) как первый символ в диалектах -lang fb и -lang fblite.

См. также