INKEY
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgInkey
- 最后更新: 2022-06-07
返回代表键盘缓冲区中第一个等待按键的字符串
语法
declare function Inkey ( ) as string用法
result = Inkey[$]返回值
键盘缓冲区中找到的第一个字符,若没有则返回空字符串("")。
说明
查看键盘缓冲区,若有字符则返回代表第一个字符的 String。该按键随后从缓冲区移除,不会回显到屏幕。若键盘缓冲区为空,立即返回空字符串("")而不等待按键。
若按键属于ASCII字符集,返回由该字符组成的单字符 String。
若按键为"扩展"键(数字键盘、光标键、功能键),返回双字符 String,第一个字符为扩展字符(见下方方言差异),第二个字符为键盘原始扫描码。
关于FreeBASIC内置键盘输入功能,请参阅 键盘输入(基础)。
Shift、Ctrl、Alt 和 AltGr 键无法通过此函数单独读取,因为它们从不进入键盘缓冲区(当然,显而易见的是,Shift-A 与 Control-A 等会被 Inkey 以不同方式报告;Alt-A 是上述扩展键)。
另参见 Input() 或 Getkey,或使用 Sleep 在键盘缓冲区为空时等待按键。
示例
start GeSHi
vb
Print "press q to quit"
Do
Sleep 1, 1
Loop Until Inkey = "q"end GeSHi
start GeSHi
vb
'' Compile with -lang fblite or qb
#lang "fblite"
#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
Loopend GeSHi
方言差异
- 在 -lang fb 和 -lang fblite 方言中,扩展字符为
Chr(255)。 - 在 -lang qb 方言中必须使用字符串类型后缀 "$"。
- 在 -lang fblite 方言中字符串类型后缀 "$" 是可选的。
- 在 -lang fb 方言中字符串类型后缀 "$" 被忽略,仅在使用 -w suffix 编译选项(或 -w pedantic 编译选项)时发出警告。
与 QB 的差异
- 在 -lang qb 方言中无差异。
- QBasic 对扩展键的第一个字符返回
Chr(0),但FreeBASIC在 -lang fb 和 -lang fblite 方言中返回Chr(255)作为第一个字符。
另请参阅
返回 目录