21 1 月 2013

讓int接收固定鍵盤組合去執行指令

作者:Ben哥|發布日期:2007/06/07

如何讓 int 接收固定鍵盤組合去執行指令?

如果我們想讓init接收固定的鍵盤組合,而去執行任何指令的話,以下為幾個步驟來瞭解如何找出系統上掌管鍵盤的檔案及指令:

1. 找出系統上對於鍵盤定義的相關套件,以CentOS5為例,其套件應該為:kbd-1.12-19.el5。
2. 瞭解/etc/inittab中kbrequest的動作行為。
3. 改變鍵盤對應內容。
4. 使用指令loadkeys -d啟動更改內容。

每個系統上都有鍵盤對應的檔案,其內包含了每個鍵盤的定義及代號,在CentOS5 的系統中,存在於目錄/lib/kbd/keymaps/i386下。

我們可以使用指令loadkeys來知道目前系統的預設鍵盤設定檔是那個:

接下來,在/etc/inittab中有一個action叫kbrequest,他可以捕捉 KeyboardSignal來執行指令,因此,我們就可以在/etc/inittab中加入下列一行:
kb::kbrequest:/sbin/shutdown -t3 -r now

然後,修改檔案defkeymap.map.gz的內容,在Insert鍵的定義處,加入以下內容:
keycode 110 = Insert
altgr control keycode 110 = KeyboardSignal
control alt keycode 110 = KeyboardSignal

如此一來,每當有Alt+Ctrl+Ins的鍵盤組合時,就會送出KeyboardSignal。

再來就是啟動所有的設定更改。
重新啟動init,指令init q即可達成,指令loadkeys -d可以把新增的鍵盤組合載入,如此,便完成了所有設定了。