Linux

虛擬終端中的鍵盤快捷鍵

  • August 19, 2018

有沒有辦法在 Linux 虛擬控制台中配置鍵盤快捷鍵?

例如,如果我轉到 tty1 然後按組合鍵++ Ctrl,我希望執行腳本。Alt``H``/usr/bin/hello.sh


理想情況下,該快捷方式甚至在登錄之前就可用(在這種情況下,它將以我指定的使用者權限執行)。我也不介意修改核心,如果這是完成此任務的唯一方法。此外,它不必是 shell 腳本,也可以是普通的 ELF 二進製文件,甚至可以是進行系統呼叫的核心模組。


範例案例

  1. 我在控制台中瀏覽網頁,links我想調低螢幕亮度。我按下Fn+ End,它恰好是亮度降低鍵並產生一個鍵碼,然後執行一個程序,通過在/sys文件中寫入一些內容來降低亮度。
  2. 我在控制台文本編輯器中,正在聽一些正在播放的背景音樂mpd。我按下(播放/暫停)鍵,它再次產生一個鍵碼,它的效果是執行一個程序,該程序發送一個信號mpd來暫停目前歌曲。

解決方案

遵循dirkt 的using的想法/dev/input,我為此創建了evd (事件守護程序)。該應用程序可以在後台啟動,無論您在哪裡,包括在登錄之前和在 X 中,都將接管鍵盤。

部分答案(因為它只是一個大綱,未經測試):

編寫一個監聽/dev/input與您的主鍵盤對應的任何設備的惡魔(有符號連結,看看它們)。以您指定的使用者身份啟動該惡魔,使用您擁有的任何初始化系統(systemd、sysv 等)。

惡魔處理input-events-codes.h中定義的關鍵事件(或查看原始碼evtest)。它有一個狀態機,可以辨識您想要的鍵序列,並在此類序列完成時生成您指定的任何程序。

這應該在您登錄之前可用,並且始終以同一使用者身份執行,無論您在虛擬控制台上登錄的是哪個使用者。它也將在 X 下執行,再次以同一使用者身份執行。


或者,如果您想在 shell 中執行某些操作:使用可以將鍵序列綁定到操作tmux的類似程序。我想它也應該可以在您登錄虛擬控制台時自動啟動並附加到新會話,但我還沒有研究過。tmux

這在登錄之前不起作用,但也適用於具有鍵盤焦點的圖形終端仿真器,並將以登錄使用者的身份執行腳本。

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