從核心模組啟動圖形應用程序?
我目前的問題是:在我的 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文件,並找出如何為某個按鍵啟動程序。