在 Linux 中读取键盘输入

在 Linux 中读取键盘输入

我正在制作一个 Ruby 程序,这样当按下一个键时我可以播放不同的声音。 A 键会发出与 S 键不同的声音,依此类推。我想获得原始输入而不是使用一些红宝石。

例如,我可以读取 /dev/input/mice 来获取所有鼠标事件。我可以在我的代码中使用它,以便它可以根据鼠标移动完成一些工作。

通过打开哪个文件我可以获取所有键盘的事件?

答案1

这里涉及两层:input内核层,它将各种键盘、鼠标、操纵杆等转换为通用框架,并使它们在/dev/input/*设备文件上可用(每个设备一个文件),以及 X(或者,取决于你的发行版(Wayland)层,它读取这些文件,并将它们转换为图形应用程序可以理解的 X 事件。后者组合了输入设备,并使它们可用作“来自任何设备的键盘事件”和“来自任何设备的鼠标事件”(这是一种简化,但可以是第一个近似值)。

应用程序的自然方式是与 X 层交互(我确信 Ruby 对此进行了抽象)。如果您的应用程序不仅播放声音,而且还显示某些内容(即使它不显示任何内容),则特别推荐这样做。

当然,如果您坚持,您也可以打开 中的所有文件/dev/input/*,并解释来自它们的事件,但是当连接新键盘和鼠标时,这将失败,并且您也想对这些事件做出反应。

这种/dev/input/mice抽象只存在于鼠标中,是一种在人们使用单个 PS/2 键盘时发明的遗留解决方案,但已经有各种不同的鼠标设备。该文件可能与 X 层认为的活动鼠标输入设备不匹配,并且键盘没有等效的抽象。

相关内容