这是一道C语言的题。
如何直接读取键盘缓冲区中的数据?
我想直接访问数据并将其存储在变量中。变量应该是什么数据类型?
我需要它用于我们研究所目前正在开发的操作系统。它叫做 ICS-OS,我不太确定具体细节。它在 x86、32 位机器上运行(我们在 Linux 机器中的 QEMU 上运行它)。这是 Google 代码的链接 http://code.google.com/p/ics-os/ .我希望这些信息足够了。
操作系统不支持 conio.h 库,因此 kbhit 不是一个选项。
最佳答案
这确实取决于平台。
如果这是针对 Windows,对“键盘缓冲区”的最直接访问是使用 WM_INPUT 和 GetRawInputData。参见 Using raw input与 example for both keyboard and mouse .
另一种 DOS/Windows 特定方式是 conio.h函数 getch()/kbhit()。
可移植库称为 Curses并具有适用于 Linux 和 Windows 的端口。
但是,由于您针对的是非常具体的操作系统,因此您需要查看该操作系统的文档。
最直接的平台独立方式是getchar/scanf/从 stdin 读取的任何内容,但 stdin 是行缓冲的,因此在按下 enter 之前您将不会获得任何数据。您也许可以更改缓冲设置,但同样,这取决于平台并且在某些平台上可能无法实现。查看相关讨论 of setbuf(stdin,NULL) .
关于C - 直接从键盘缓冲区读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322340/