Linux
虛擬終端中的鍵盤快捷鍵
有沒有辦法在 Linux 虛擬控制台中配置鍵盤快捷鍵?
例如,如果我轉到 tty1 然後按組合鍵++
Ctrl
,我希望執行腳本。Alt``H``/usr/bin/hello.sh
理想情況下,該快捷方式甚至在登錄之前就可用(在這種情況下,它將以我指定的使用者權限執行)。我也不介意修改核心,如果這是完成此任務的唯一方法。此外,它不必是 shell 腳本,也可以是普通的 ELF 二進製文件,甚至可以是進行系統呼叫的核心模組。
範例案例
- 我在控制台中瀏覽網頁,
links
我想調低螢幕亮度。我按下Fn
+End
,它恰好是亮度降低鍵並產生一個鍵碼,然後執行一個程序,通過在/sys
文件中寫入一些內容來降低亮度。- 我在控制台文本編輯器中,正在聽一些正在播放的背景音樂
mpd
。我按下⏯
(播放/暫停)鍵,它再次產生一個鍵碼,它的效果是執行一個程序,該程序發送一個信號mpd
來暫停目前歌曲。解決方案
遵循dirkt 的using的想法
/dev/input
,我為此創建了evd (事件守護程序)。該應用程序可以在後台啟動,無論您在哪裡,包括在登錄之前和在 X 中,都將接管鍵盤。
部分答案(因為它只是一個大綱,未經測試):
編寫一個監聽
/dev/input
與您的主鍵盤對應的任何設備的惡魔(有符號連結,看看它們)。以您指定的使用者身份啟動該惡魔,使用您擁有的任何初始化系統(systemd、sysv 等)。惡魔處理input-events-codes.h中定義的關鍵事件(或查看原始碼
evtest
)。它有一個狀態機,可以辨識您想要的鍵序列,並在此類序列完成時生成您指定的任何程序。這應該在您登錄之前可用,並且始終以同一使用者身份執行,無論您在虛擬控制台上登錄的是哪個使用者。它也將在 X 下執行,再次以同一使用者身份執行。
或者,如果您想在 shell 中執行某些操作:使用可以將鍵序列綁定到操作
tmux
的類似程序。我想它也應該可以在您登錄虛擬控制台時自動啟動並附加到新會話,但我還沒有研究過。tmux
這在登錄之前不起作用,但也適用於具有鍵盤焦點的圖形終端仿真器,並將以登錄使用者的身份執行腳本。