Ubuntu

從核心模組啟動圖形應用程序?

  • June 12, 2022

我目前的問題是:在我的 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 事件。

如果它不產生按鍵事件,那麼對實際事件的搜尋將會變得有趣……

最後,找出您的桌面使用的視窗管理器,然後找到您的視窗管理器的Google文件,並找出如何為某個按鍵啟動程序。

引用自:https://unix.stackexchange.com/questions/705865