我试图编写一个跨平台的PHP实用程序供个人使用,而不是重新发明任何东西。 代码将在或多或少的范围内运行
while (true) {
$key = null;
$key = check_key_pressed();
if ($key) do_relevant_magic($key);
usleep(250000);
}
我需要一些check_key_pressed()
的东西,它会返回一个按下的键的值,而不是等待EOF/EOL
,而不是在实际按下任何键之前明确要求输入。
必须处理 * nix和windows ,因此ncurses
不是一个选项。我也不希望exec
调用外部vbs或bash脚本,它必须纯粹用PHP完成,希望我不要太多。
编辑:当然我检查了其他SO解决方案,但它们似乎都不是真正的跨平台。 Ncrurses
和readline
在Windows上不可用,这必须拦截 keydown 或 keypress 或输入就绪 linux和windows都有。
答案 0 :(得分:0)
不幸的是,如果没有类似Windows的平台特定扩展名,例如* n * x(readline
,ncurses
),这是不可能的(直到今天)。
更糟糕的是,即使您放弃了跨平台的要求,我也怀疑Windows上是否存在此类扩展(合理地众所周知)的扩展。 (People tend to recommend自己编写诸如pdcurses(至少是跨平台的)之类的绑定,因为显然还没有人完成并发布过。)
事情进展缓慢,至少readline
扩展名是now available for Windows(自7.1开始),但恰好只是short of the unbuffered char read功能...