Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 直接读取键盘输入_Assembly_Input_Keyboard_Buffer - Fatal编程技术网

Assembly 直接读取键盘输入

Assembly 直接读取键盘输入,assembly,input,keyboard,buffer,Assembly,Input,Keyboard,Buffer,有没有办法直接读取键盘输入 我所说的直接,是指不使用WinAPI函数或任何预先编写的过程。只是我的普通装配 例如,我爸爸给我看了他拆卸的ZX-81操作系统。我们发现了一个名为“INKEY$”的过程,它直接进入内存,复制键盘缓冲区的值,并对它们执行任何需要执行的操作。我知道ZX-81是历史性的,但我想知道是否有直接从缓冲区读取的方法 我已反汇编“user32.dll”,并查找GetAsyncKeyState和GetKeyboardState。下面是一段来自GetAsyncKeyState的代码,它

有没有办法直接读取键盘输入

我所说的直接,是指不使用WinAPI函数或任何预先编写的过程。只是我的普通装配

例如,我爸爸给我看了他拆卸的ZX-81操作系统。我们发现了一个名为“INKEY$”的过程,它直接进入内存,复制键盘缓冲区的值,并对它们执行任何需要执行的操作。我知道ZX-81是历史性的,但我想知道是否有直接从缓冲区读取的方法

我已反汇编“user32.dll”,并查找GetAsyncKeyState和GetKeyboardState。下面是一段来自GetAsyncKeyState的代码,它似乎在执行“从缓冲区读取”操作,并决定在按下或不按下该键时执行什么操作,即使在这两种情况下,它们都跳转到相同的地址

mov edx, [ebp+vKey]
cmp edx, 2
jz loc_7DC73234
cmp edx, 1
jz loc_7DC73234
我爸爸说现在可能不可能做到,因为键盘是用USB连接的,它们有驱动程序和其他东西来做这些低级动作。但是你仍然可以从键盘驱动程序保存按键的地方直接读取


那么,你仍然可以进入内存,用一个简单的“mov”指令复制一个表示按键是否按下的值吗?谢谢。

你查过相关问题了吗?例如:我查过一些问题,不是特别是这一个,但大多数问题都没有我想要的答案。我现在读这个问题。这个问题有一些过时的信息i8042-我认为它不同于核心i7,不是吗?我无法从那里找到一个直截了当的答案。我不想要一个方法,我只想知道它是否可行。如果是,我会继续研究。如果不是。。。好吧,我不会。现代操作系统不会将原始硬件缓冲区暴露给应用程序。你可以编写一个键盘过滤驱动程序,但这可能远远超出你的预期。i8042是一种处理连接到PS/2端口的键盘的芯片。现代主板上没有实际的i8042,而是由超级i/o芯片模拟的。因此,只要键盘连接到PS/2端口或进行模拟,这种方法仍然是可能的,否则情况就完全不同了。你的目标是设计出在windows下运行的软件,还是学习键盘相关硬件的工作原理?