我目前的问题是:在我的 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 品牌的关注相同的事情。我认为这可能会有所帮助,将看到。
但是,当我尝试时xev
,没有打印任何内容,这让我认为 X Server 无法识别 Nitro 按键事件。我想我应该寻找文档来编写一个模块来将 Nitro 关键事件发送到 X 服务器?
我试图进入 GNOME 控制中心的键盘设置以尝试添加键盘快捷键,但它也无法识别 Nitro 键 - 可能是因为 GNOME 在 X Server 上运行而 X Server 无法识别 Nitro 键事件?
我还查看了我在 UPD2 中提到的 repo,所以作者所做的也是通过不断地grep
从日志中轮询evtest
以查看是否按下了键 - 查看这个 shell 命令https://github.com/kphanipavan/PredatorNonSense/blob /master/PNS.sh。
我想我还可以做的是编写一个简单的 systemd 服务来轮询键盘设备文件并检查 Nitro 是否被按下。但是,有人提到这可能会浪费大量资源。对此有何建议?