Bash
記錄鍵盤敲擊次數
如何通過 shell 腳本記錄鍵盤點擊?我的目標是在我的 Ubuntu 系統上記錄登錄會話的鍵盤點擊次數。
注意:我不想記錄擊鍵本身,只記錄點擊次數。所以最後它說:
94853 hits today.
僅在 X11(圖形桌面)會話中監控
如果您正在使用 XInput 層(如果您正在執行現代 X,那麼您可能是)然後
xinput test «keyboard-id»
(來自xinput
Debian 上的軟體包)將提供 pey 新聞和發布事件。您可以通過執行獲取鍵盤 IDxinput list
。您也可以使用該名稱。xinput test 'AT Translated Set 2 keyboard' | grep -c 'key press'
請注意,當您使用 pipe 時
xinput
,它有一個相當大的緩衝區。因此,不幸的是,您可能會失去一些擊鍵。您可以直接使用 XI2 API 來避免這種情況,但這在 shell 中並不容易。您可以很容易地將腳本作為桌面環境中的登錄腳本之一或從
.xsession
文件中啟動,具體取決於。xinput
註銷時應該退出,因為它將失去其 X11 連接。因此,很容易跟踪您的會話何時開始和結束。監控系統範圍(所有會話,甚至文本模式)
或者,如果您想監視系統上的所有擊鍵,而不僅僅是 X11 會話中的擊鍵,您可以使用
input-events
(至少是 Debian 上 input-utils 軟體包的一部分)。這必須以 root 身份執行。用於lsinput
查找正確的輸入設備(在我的系統上可能為 0),然後:input-events 0 | grep -c 'EV_KEY.*pressed'
如果你這樣做,你將不得不弄清楚你的會話何時開始和結束(例如,peterph 的 dbus 建議)。