这是一个关于C编程语言的问题。
我该如何直接读取键盘缓冲区中的数据?
我想直接访问数据并将其存储在变量中。这个变量应该是什么数据类型?
我需要它用于我们学院目前正在开发的操作系统。它叫做ICS-OS,我不太确定具体情况。它运行在x86、32位机器上(我们在Linux箱中使用QEMU运行它)。下面是Google Code的链接:http://code.google.com/p/ics-os/。希望这足够了解。
操作系统不支持conio.h库,因此kbhit不是一个选项。
这是一个关于C编程语言的问题。
我该如何直接读取键盘缓冲区中的数据?
我想直接访问数据并将其存储在变量中。这个变量应该是什么数据类型?
我需要它用于我们学院目前正在开发的操作系统。它叫做ICS-OS,我不太确定具体情况。它运行在x86、32位机器上(我们在Linux箱中使用QEMU运行它)。下面是Google Code的链接:http://code.google.com/p/ics-os/。希望这足够了解。
操作系统不支持conio.h库,因此kbhit不是一个选项。
这真的取决于平台。
如果是针对Windows,最直接访问“键盘缓冲区”的方法是使用WM_INPUT和GetRawInputData。请参见使用原始输入,其中包括键盘和鼠标示例。
另一种DOS / Windows特定的方式是conio.h函数getch() / kbhit()。
可移植库称为Curses,并且适用于Linux和Windows。
但是,由于您正在针对特定的操作系统,因此需要查看该操作系统的文档。
最直接的跨平台方法是使用getchar/scanf或任何从标准输入读取数据的方式,但是标准输入是行缓冲的,因此只有在按下回车键后才能获取到数据。你可能可以更改缓冲设置,但这又涉及到平台依赖性,在某些平台上可能不可行。请参见相关讨论of setbuf(stdin,NULL)。你尝试过查看Linux内核的源代码以获取键盘驱动程序吗?请看一下/drivers/input/keyboard/xtkbd.*
,这是一个简单的XT键盘驱动程序。
此外,这里有一篇文章简要介绍了如何完成这项工作。
这是从键盘缓冲区读取的内容
scanf("%d",&myvariable);