【问题标题】:Get linux input devices获取linux输入设备
【发布时间】:2013-10-22 06:15:11
【问题描述】:

我需要获取 Linux 操作系统上的输入设备列表。类似于解析 /proc/bus/input/devices 的东西,但我实际上不想重新发明轮子。我相信应该有一些系统功能来枚举设备和类似的东西。它是嵌入式 Linux,所以我可以使用的库有限。

【问题讨论】:

  • 你真正想做什么?一般来说,“解析/proc/bus/input/devices”确实是您想要获取输入设备列表的方法。格式本身通常很容易解析...
  • 我想移动鼠标。 XWarpPointer 不起作用,因为我没有带有 arm-linux-gnueabi-gcc 的 -lX11。我将事件直接写入 /dev/input/event3 并且它可以工作,但是我需要确切地知道应该将事件写入哪个输入文件。所以我需要找到鼠标输入设备或以其他方式移动鼠标。
  • 您可以考虑配置udev 以简化您的流程。并且解析/proc/ 文件确实是在许多主题上与内核交互的首选方式。

标签: c++ linux device input-devices


【解决方案1】:

听起来你想要这个命令:

libinput list-devices

【讨论】:

  • 嗨@solanum,不幸的是,这个命令在我的设备上不起作用 (5.10.0-7-amd64 #1 SMP Debian 5.10.40-1 (2021-05-28) x86_64 GNU/ Linux)。我尝试了$ whereis libinput,结果libinput: /usr/share/libinput /usr/share/man/man4/libinput.4.gz,这似乎是一个目录。你能帮帮我吗?
【解决方案2】:

因此,要查找鼠标事件处理程序,您需要搜索以“H:”开头并带有“mouseN”的行。然后它将在同一行上有一个“eventM”。应该可以用大约六行左右的代码来打开 /proc/bus/input/devices,读取一行,检查它是否是“H:”开始,如果是,则将其余部分解析为“鼠标”和“事件”位。

【讨论】:

  • 我在 H: 部分找到了 9 行带有 mouseN 条目的行,例如查看这两个 H: Handlers=mouse0 event3 H: Handlers=mouse1 event4 它在我将事件写入 /dev/input/event3 时有效,但没有为 /dev/input/event4 工作。那么我应该如何理解哪种设备是正确的呢?
  • 奇怪。您的系统是否连接了多个“指向”类型的设备?我只有这样一条线...
  • 这是我运行 ubuntu 的 VM 的另一个输出。 H: Handlers=kbd event0 H: Handlers=kbd event1 H: Handlers=sysrq kbd event2 H: Handlers=mouse0 event3 js0 H: Handlers=mouse1 event4 H: Handlers=event5
  • 是的,但我仍然不明白为什么写一个有效而写另一个无效
  • 大概是因为只有一个实际连接到您的“鼠标光标”实际出现在(您的 GUI)上。恐怕我不知道您如何确定实际使用的是哪个 - 很可能是 GUI 代码本身中的某种配置/检测代码处理这个问题。
猜你喜欢
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2011-06-02
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
相关资源
最近更新 更多