タイムスタンプを含むショーキ

タイムスタンプを含むショーキ

タイムスタンプを含むキーボードの動作をコンソールまたはファイルに記録するにはどうすればよいですか?

私のshowkey出力は次のとおりです。

keycode  28 release
keycode  30 press
keycode  30 release
keycode  48 press
keycode  48 release

私はそれになりたいです:

keycode  30 press 1551027529
keycode  30 release 1551027532
keycode  48 press 1551027534
keycode  48 release 1551027536
keycode  46 press 1551027542
keycode  46 release 1551027548
keycode  32 press 1551027549
keycode  32 release 155102751

私が探していますBashコマンドパイプラインで出力を変更する方法そして試みた:

sudo showkey | awk -v date="$(date +%s)" '{print $1 date}'

そしてまったく出力がありません。

私はwhileループを試しました:

echo MY_PASSWORD | 
stdbuf -o0 sudo -S showkey |
while read line; 
do  

    echo "$line":$(date +%s)  >> /home/reedbear/user_scripts/output.txt; 


done

私の出力はキーを押すことを示していますが、whileループがshowkey完了すると完全な出力として評価されると仮定しているので、すべて同じタイムスタンプを持ちます。

stdbuf何かはわかりませんが、昨夜どこか見たようです。それなしで同じことをします。

ベストアンサー1

sudo showkey | awk -v date="$(date +%s)" '{print $1 date}'

date始める前に一度実行すると機能しないため、awkすべての行に同じ値が印刷されます。

GNU awkでは、次のことができます。systime()これ現在時刻(エポック以降の秒)を取得します。たとえば、これは私にとって効果的です。

$ stdbuf -o0 showkey -a | awk '{ print $0, systime(); }'
 1551031085
Press any keys - Ctrl-D will terminate this program 1551031085
 1551031085
a        97 0141 0x61 1551031086
d       100 0144 0x64 1551031087
^D        4 0004 0x04 1551031088

showkey(今は元のキーコードではテストできません。)

おすすめ記事