Bash

記錄鍵盤敲擊次數

  • March 21, 2020

如何通過 shell 腳本記錄鍵盤點擊?我的目標是在我的 Ubuntu 系統上記錄登錄會話的鍵盤點擊次數。

注意:我不想記錄擊鍵本身,只記錄點擊次數。所以最後它說:

94853 hits today.

僅在 X11(圖形桌面)會話中監控

如果您正在使用 XInput 層(如果您正在執行現代 X,那麼您可能是)然後xinput test «keyboard-id»(來自xinputDebian 上的軟體包)將提供 pey 新聞和發布事件。您可以通過執行獲取鍵盤 ID xinput 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 建議)。

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