检测/读取按键,跨平台的PHP CLI
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测/读取按键,跨平台的PHP CLI相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个跨平台的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上不可用,它必须在linux和windows上拦截keydown或keypress或输入就绪。
答案
不幸的是,如果没有针对Windows的类似平台特定扩展(例如* n * x(readline
,ncurses
)),这是不可能的(仍然是今天)。
更糟糕的是,即使你放弃了跨平台的要求,我也怀疑在Windows上有这样的(相当熟知的)扩展。 (People tend to recommend自己为pdcurses(至少本身就是跨平台)这样的东西编写绑定,因为显然没有人完成并发布了一个。)
事情正在慢慢地进展,至少readline
扩展是now available for Windows(自7.1),但它恰好只是qazxswpoi功能...
以上是关于检测/读取按键,跨平台的PHP CLI的主要内容,如果未能解决你的问题,请参考以下文章