【发布时间】:2015-01-24 18:29:28
【问题描述】:
我正在尝试编写一个供个人使用的跨平台 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 或 input ready .
【问题讨论】:
-
第一个解决方案需要在 *nix 上进行 TTY 调用,第二个解决方案需要在 windows 平台上不可用的 readline 库。
-
另外一个是关于 TTY 的(甚至是这样标记的),所以“ab ovo”不是一个跨平台的问题。因此,那个有一个解决方案(甚至不仅仅是一个),而这个真正的痛点却没有。
标签: php input keyboard cross-platform command-line-interface