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

时间:2015-01-24 18:29:28

标签: php input keyboard cross-platform command-line-interface

我试图编写一个跨平台的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解决方案,但它们似乎都不是真正的跨平台。 Ncrursesreadline在Windows上不可用,这必须拦截 keydown keypress 输入就绪 linux和windows都有。

1 个答案:

答案 0 :(得分:0)

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

更糟糕的是,即使您放弃了跨平台的要求,我也怀疑Windows上是否存在此类扩展(合理地众所周知)的扩展。 (People tend to recommend自己编写诸如pdcurses(至少是跨平台的)之类的绑定,因为显然还没有人完成并发布过。)

事情进展缓慢,至少readline扩展名是now available for Windows(自7.1开始),但恰好只是short of the unbuffered char read功能...