【问题标题】:How to write key input in assembly?如何在汇编中编写键输入?
【发布时间】:2018-10-23 04:09:17
【问题描述】:

我正在尝试为 windows 和 linux 制作一个键盘驱动程序作为一个项目,我正在寻找模拟写一个键的实际过程(意味着不使用任何诸如 windows 消息之类的东西),然后继续等待从键盘输入,我找到了很多教程。 任何人都知道在 Windows 和 Linux 上这样做很热吗? (运行 intel proc win10 64bit & kali linux amd proc 64bit)

【问题讨论】:

  • 为什么要写键盘驱动?您需要它具备哪些附加功能?请edit您的问题通过添加更多背景和动力并解释您的目标来改进它
  • 您是否在问如何制作一个汇编程序,以便在计算机接收到键盘输入时读取 键盘输入或从计算机获取 键盘输入?第一个很简单,我可以回答。后者极其困难。我敢说这甚至是相对不可能的。试想一下,您必须阅读所有文档才能找到,这些文档可能甚至在 Windows 的情况下都不可用。这不是程序员真正需要做的事情,除非他正在从事操作系统开发。

标签: linux windows assembly


【解决方案1】:

您不能在 Windows 和 Linux 上拥有相同的驱动程序。您需要制作两个不同的、不相关的程序,并且必须以不同的方式设计它们(因为 Windows 和 Linux 的驱动程序架构不同)。

顺便说一句,在具有图形桌面的 Linux 上,display server(例如 XorgWayland)正在运行。该服务器是唯一处理物理键盘的程序。您可以考虑使用它。

键盘驱动程序的实际概念过于宽泛,无法具体理解。在 Linux 上,您可以修补内核、修补显示服务器、改进window manager 等等……没有必要,也没有太多兴趣在汇编程序中编写这些东西。

请注意,在具有图形桌面的 Linux 上,键盘布局是在显示服务器中处理的,而不是在内核代码中(因此内核正在发送键码接近 scancodes 的键事件,而不是字符;Xorg 服务器发送具有与例如窗口管理器类似的键码的键盘事件)。阅读更多关于X Window System protocols and architecture 和例如EWMH。图形层非常复杂(在 Linux 和 Windows 上),有数百万行代码。

【讨论】:

  • 我想在汇编中编写代码,因为我不能用 C++ 编写代码,并不是说我知道一种方法,至少不会变得非常复杂,我知道这并不有趣,但我确实想做它,我知道我必须制作 2 个不同的程序,所以我想我在这里寻找 2 个答案,一个用于 windows,一个用于 linux。只是书写过程,键盘是比较容易的部分。
  • 您是否意识到这可能需要您至少 的工作,甚至可能超过您的一生?
  • 为我的特定 Windows 和 linux 操作系统创建驱动程序多年的工作?这听起来不对,有没有什么办法可以让我只写密钥,就好像它是从真正的驱动程序输入的一样,而不会使它变得非常复杂?
  • 阅读我给你的链接的更多信息......你无法想象你想要编码的复杂性。你需要了解数百万行源代码(但在 Linux 上,所有这些都是免费软件,所以理论上你可以学习它)
  • 没有简单的方法。而且我们不了解您的实际目标。它是一个键盘欺骗器,还是为了改变键盘布局(例如,能够方便地输入奇怪的 UTF8 字符)等等...... BTW Linux 是完全开源的,所以你为什么不开始研究源代码(Xorg ,内核,窗口管理器等...)并提出有关它的重点问题
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多