Возвращает строку, представляющую первую клавишу в буфере клавиатуры
Синтаксис
Использование
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.
См. также