我正在玩 D 编程语言,想知道如何在不要求用户按 Enter 的情况下获取字符。
我想要的伪代码示例:
while(true){
if(userHasPressedChar()){
writeln(getChar());
}
}
在 C++ 中,我可以使用 conio.h 的“getch()”,但我还没有在这里找到类似的东西。
编辑:我使用的是 Windows 7。
编辑 2:我在这个论坛上找到了一个解决方案,我可以更改它以供自己使用。主模块;
import std.stdio;
import core.sys.windows.windows;
void main() {
auto hCon = GetStdHandle(STD_INPUT_HANDLE);
FlushConsoleInputBuffer(hCon);
for(;;) { // in default console mode, ctrl-C will terminate
INPUT_RECORD inrec;
DWORD numread;
while(inrec.EventType != KEY_EVENT) {
WaitForSingleObject(hCon, INFINITE);
ReadConsoleInputW(hCon, &inrec, 1, &numread);
}
auto keyEvent = inrec.KeyEvent;
writefln("VK: %x \tChar: %x \tState: %x",
keyEvent.wVirtualKeyCode,
keyEvent.UnicodeChar,
keyEvent.dwControlKeyState);
}
}