【问题标题】:Detect/read key pressed, cross-platform PHP CLI检测/读取按键,跨平台 PHP CLI
【发布时间】: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 解决方案,但它们似乎都不是真正的跨平台。 Ncrursesreadline 在 windows 上不可用,这必须在 linux 和 windows 上拦截 keydownkeypressinput ready .

【问题讨论】:

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


【解决方案1】:

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

更糟糕的是,即使您放弃了跨平台要求,我怀疑在 Windows 上是否存在任何此类(相当知名的)扩展。 (People tend to recommend 自己为 pdcurses (至少它本身是跨平台的)之类的东西编写绑定,因为显然还没有人完成并发布过。)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多