gpt4 book ai didi

input - 如何在 D2(Phobos)中获得单次击键?

转载 作者:行者123 更新时间:2023-12-04 07:10:46 25 4
gpt4 key购买 nike

是否有一种简单的跨平台方法可以使用 Phobos 在 D2 中获得单次击键?

例如,“按任意键继续...”提示或 Brainfuck 解释器。

我尝试过的所有方法都需要在传递输入之前按 Enter 键(例如 getchar())。

最佳答案

在 Windows 上使用 D2 的最简单的解决方案:

import std.stdio : writefln;

extern(C) int kbhit();
extern(C) int getch();

void main()
{
while(!kbhit())
{
// keep polling
// might use Thread.Sleep here to avoid taxing the cpu.
}

writefln("Key hit was %s.", cast(char)getch());
}

它甚至可能适用于 D1,但我还没有尝试过。

这是一个 Linux 版本,修改自 Walter's post :
import std.stdio : writefln;
import std.c.stdio;
import std.c.linux.termios;

extern(C) void cfmakeraw(termios *termios_p);

void main()
{
termios ostate; /* saved tty state */
termios nstate; /* values for editor mode */

// Open stdin in raw mode
/* Adjust output channel */
tcgetattr(1, &ostate); /* save old state */
tcgetattr(1, &nstate); /* get base of new state */
cfmakeraw(&nstate);
tcsetattr(1, TCSADRAIN, &nstate); /* set mode */

// Read characters in raw mode
writefln("The key hit is %s", cast(char)fgetc(stdin));

// Close
tcsetattr(1, TCSADRAIN, &ostate); // return to original mode
}

关于input - 如何在 D2(Phobos)中获得单次击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com