检测/读取按键,跨平台的PHP CLI

DeD*_*Dee 7 php keyboard cross-platform input command-line-interface

我正在尝试编写一个跨平台的PHP实用程序供个人使用,而不是重新发明任何东西.代码将在或多或少内运行

while (true) {
    $key = null;
    $key = check_key_pressed();
    if ($key) do_relevant_magic($key);
    usleep(250000);
}
Run Code Online (Sandbox Code Playgroud)

我需要一些东西check_key_pressed(),它将返回一个按下的键的值,而不是等待EOF/EOL,直到实际按下任何键才明确要求输入.

必须*nix和windows上工作所以ncurses不是一个选项.我也不想exec调用外部vbs或bash脚本,它必须纯粹用PHP完成,希望我不要太多.

编辑:当然我检查了其他SO解决方案,但它们似乎都不是真正的跨平台.Ncrurses并且readline在Windows上不可用,这必须在linux和windows上拦截keydownkeypress输入就绪.

Sz.*_*Sz. 3

不幸的是,如果没有类似的 Windows 特定于平台的扩展(例如 *n*x ( readline, ncurses) 的扩展),这是不可能的(直到今天)。

更糟糕的是,即使您放弃跨平台要求,我也怀疑 Windows 上是否有任何此类(相当知名的)扩展。(人们倾向于建议自己编写pdcurses(至少本身是跨平台的)之类的绑定,因为显然还没有人完全完成并发布绑定。)

不过事情进展缓慢,至少该readline扩展现在可用于 Windows(自 7.1 起),但它恰好缺少无缓冲字符读取功能......