这是C编程语言中的一个问题。
如何直接读取键盘缓冲区中的数据?
我想直接访问数据并将其存储在变量中。 变量应该是什么数据类型?
我需要它用于我们研究所正在开发的操作系统。 它被称为ICS-OS,我不太清楚具体细节。 它运行在x86,32位机器上(我们在Linux机器上的QEMU上运行它)。 以下是Google Code https://code.google.com/p/ics-os/的链接。 我希望这些信息足够充分。
操作系统不支持conio.h库,因此kbhit不是一个选项。
这实际上取决于平台。
如果这是针对Windows的,则最直接访问“键盘缓冲区”的方法是使用WM_INPUT和GetRawInputData。 有关键盘和鼠标的信息,请参阅使用原始输入和示例 。
另一种DOS / Windows特定方式是conio.h函数getch()/ kbhit()。
可移植库称为Curses ,具有Linux和Windows的端口。
但是,由于您的目标是非常特定的操作系统,因此需要检查该操作系统的文档。
最直接的平台独立方式是getchar / scanf /从stdin读取的任何东西,但是stdin是行缓冲的,因此在按下enter之前你将得不到任何数据。 您可以更改缓冲设置,但同样,这取决于平台,在某些平台上可能无法实现。 请参阅setbuf(stdin,NULL)的相关讨论。
您是否尝试过查看Linux内核的源代码以获取键盘驱动程序? 查看/drivers/input/keyboard/xtkbd.*
以获取简单的XT键盘驱动程序。
此外, 这篇文章简要介绍了它是如何完成的。
如果你想直接从键盘缓冲区读取数据,那么你可以使用getchar或getc!
这是从键盘缓冲区读取的
scanf("%d",&myvariable);
但你必须使用“%d”代表int,“%f”代表浮点数,%e代表double,“%c”代表char,“%s”代表字符串代表必须匹配变量类型的类型。
以上就是c/c++开发分享C – 直接从键盘缓冲区读取相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562664.html