我正在尝试编写一个跨平台的
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开始),但它恰好只是short of the unbuffered char read功能……