从内核模块启动图形应用程序?

唐培

我目前的问题是:在我的 Acer Nitro 笔记本电脑键盘上,有一个 Nitro 键 - 这是其他笔记本电脑品牌没有的特殊键。您在下图中看到,退格键旁边有一个奇怪的 N 键 - 那是 Nitro 键。

硝基键

我想开发一个 GUI 应用程序,这样每当按下 Nitro 按钮时,我的应用程序就会出现。我正在使用 Ubuntu 22.04。

根据我的发现,我想我必须编写一个 LKM 来捕获 Nitro 按键事件并从那里启动应用程序。我在这里关注答案(https://stackoverflow.com/questions/33836541/linux-kernel-how-to-capture-a-key-press-and-replace-it-with-another-key)来捕获按键事件。

我想知道是否可以在 LKM 中启动 GTK 应用程序 - 换句话说,将示例代码放在这里(https://www.gtk.org/docs/getting-started/hello-world)在我的内核模块代码中. 另外,我想知道我是否在正确的轨道上实现我的目标。

提前致谢!

[UPD]澄清我想要什么:Acer Nitro 笔记本电脑通常有一个名为 Nitrosense 的应用程序,它提供了一个 GUI 来更改键盘颜色和风扇速度。Nitro 键在按下时向用户显示 GUI。但是,Nitrosense 应用程序仅适用于 Windows - 我想为 Ubuntu 编写相同的东西。到目前为止,我发现了各种关于更改键盘颜色和风扇速度的存储库,但是当我按下 Nitro 键时打开的应用程序没有存储库,所以我想构建这样的东西。我在 Ubuntu 22.04 上使用 GNOME 42。我想要的是每当用户(已经登录)按下 Nitro 键时,一个 GUI 会自动显示让我做一些事情。

[UPD2]我还发现了这个 repo https://github.com/kphanipavan/PredatorNonSense,它似乎试图做与我对另一个 Acer 品牌的关注相同的事情。我认为这可能会有所帮助,将看到。

直接的

我想开发一个 GUI 应用程序,这样每当按下 Nitro 按钮时,我的应用程序就会出现。

因此,您需要将 Nitro 按钮公开为例如内核输入层事件。然后一些用户空间应用程序可以对其进行操作并启动您的 UI 应用程序。

请记住,Linux 是多用户的,该系统是为您拥有一台机器和数十人使用具有不同帐户的 GUI 的情况而设计的。所以你不能只是“启动一个应用程序”,你需要找到合适的用户。但是内核与用户无关。

这意味着这个特定用户必须采取行动。最简单的放置位置是该特定用户的窗口管理器配置(我假设是你)。

我想知道是否可以在 LKM 中启动 GTK 应用程序

这不好,而且它不会工作。


资源:

用于evtest查看是否Nitro已经产生了按键事件。如果是这样,您不必编写内核模块。然后使用xev它来查看它是否已经被转换为 X 事件。

如果它不产生按键事件,那么对实际事件的搜索将会变得有趣......

最后,找出您的桌面使用的窗口管理器,然后为您的窗口管理器搜索谷歌文档,并了解如何为某个按键启动程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章