Inkey
 
返回表示键盘缓冲区中等待的第一个键的字符串

语法
用法

result = Inkey[$]

返回值

键盘缓冲区中找到的第一个字符,或空字符串(""))。

说明

进入键盘缓冲区,并返回一个String表示的第一个字符,如果有的话。然后将密钥从缓冲区中删除,并且不会回显到屏幕。如果键盘缓冲区为空,则会立即返回一个空字符串(""),而不必等待键。

如果键在ASCII字符集中,则返回由该字符组成的单字符String.如果键是“扩展”(数字键盘,光标,功能),则返回一个双字符String,其中第一个是扩展字符(See dialect differences below

Shift,Ctrl,Alt和AltGr键不能独立读取,因为它们不会进入键盘缓冲区(尽管显然,Shift-A将以与Control-A等不同的方式报告Inkey; Alt-A是上述的扩展密钥)。

如果键盘缓冲区为空,请参阅Input()GetKeySleep??等待按键。

例子

Print "按q退出"
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 "按一个键,或退出结束"
Do

    k = Inkey$

    Select Case k

        Case "A" To "Z", "a" To "z": Print "信:" & k
        Case "1" To "9":             Print "数:" & k

        Case Chr$(32): Print "空间"

        Case Chr$(27): Print "逃逸"

        Case Chr$(9): Print "标签"

        Case Chr$(8): Print "退格"

        Case Chr$(32) To Chr$(127)
            Print "可打印字符:" & k

        Case EXTCHAR & "G": Print "向左/回家"
        Case EXTCHAR & "H": Print "Up"
        Case EXTCHAR & "I": Print "向右/ PgUp"

        Case EXTCHAR & "K": Print "剩下"
        Case EXTCHAR & "L": Print "中央"
        Case EXTCHAR & "M": Print "对"

        Case EXTCHAR & "O": Print "向左/向下"
        Case EXTCHAR & "P": Print "下"
        Case EXTCHAR & "Q": Print "向右/ PgDn"

        Case EXTCHAR & "R": Print "插"
        Case EXTCHAR & "S": Print "删除"


        Case EXTCHAR & "k": Print "关闭窗口/ Alt-F4"

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

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

        Case Else
            If Len(k) = 2 Then
                Print Using "扩展字符:chr $(###,###)"; Asc(k, 1); Asc(k, 2)
            ElseIf Len(k) = 1 Then
                Print Using "字符chr $(###)"; Asc(k)
            End If

    End Select

    If k = Chr$(27) Then Exit Do

    Sleep 1, 1

Loop


方言差异

  • -lang fb -lang fblite 方言中的扩展字符是CHR(255).
    • -lang qb 方言中,扩展字符取决于关键字的写入方式。如果使用QB表单通过$,则扩展字符为CHR(0).如果引用__inke,扩展字符是CHR(255).
    • 在所有其他方言中,扩展字符始终为CHR(255).
  • 字符串类型后缀$ -lang fblite -lang fb 方言中是可选的,但在-lang qb 方言中是必需的。

与QB差别

  • -lang qb 方言。
  • QBasic返回一个(0)作为扩展密钥的第一个字符,但FreeBASIC返回CHR(255)作为-lang fb 中的第一个字符,-lang fblite 方言。

参考