PHP中的键盘输入

blu*_*ral 2 php keyboard-events

我试图用键盘输入控制PHP的东西.我目前检测击键的方式是:

 function read() {
    $fp1=fopen("/dev/stdin", "r");
    $input=fgets($fp1, 255);
    fclose($fp1);

    return $input;
}
print("What is your first name? ");
    $first_name = read();
Run Code Online (Sandbox Code Playgroud)

问题在于它没有读取"实时"击键.我不知道使用这种方法是否可行,我想这也不是最有效的方法.我的问题是1)如果这是一个很好的方法,那么我怎么能让它工作,这样当你在页面上键入时,它将捕获击键,2)如果这是一个不好的方法,我怎样才能更好地实现它(可能使用ajax或其他东西)?

编辑:我使用PHP作为网页,而不是命令行.

And*_*gan 5

我假设您使用PHP作为Web脚本语言(而不是命令行)...

从我所看到的,你将希望在客户端使用Javascript来读取关键输入.一旦服务器将页面传递给客户端,就没有PHP交互.因此,使用AJAX读取客户端密钥输入并回调服务器是可行的方法.

有JavaScript的一些详细信息和检测按键位置以及如何使用AJAX一些信息在这里.

jQuery的一个简洁选项是使用delayedObserver之类的东西

  • 每个按键的ajax调用可能都是不可取的 - 这会导致大量的HTTP请求和UI延迟.相反,你真的想要在javascript中解释一组按键,并在必要时进行一次调用. (2认同)

rod*_*ion 5

如果您正在编写 CLI 应用程序(而不是 Web 应用程序),您可以使用ncurses 的 getch()函数来获取单个按键。祝你好运!

如果您不是在编写 CLI 应用程序,我建议您遵循 Andrew 的回答。