2016/01/27
打鍵数をカウントしてみた
はじめに
特に意味もなく打鍵のカウントをしてみたかったので作ってみました。
基本はキーロガーと同じ要領です。
OS XはWindowsと大分仕組みが違うため、
フック(イベント情報を横取りする事)がなかなか難しい。
ので、今回はOS Xに絞って情報を集めてみた結果、、、
SwiftでもなくObjective−CでもなくC言語にて組むことになりました。
ソースは別の用途で用いられる可能性があるため割愛させていただきます。
流れ
簡単な流れとして
- エントリーポイント実行 (所謂 main関数)
- 自作のイベント関数(CGEventRef)をループ実行として登録する (※後述)
- ループイベント関数を実行開始する (※以下、関数例一覧)
CFRunLoopSourceRef
CFRunLoopAddSource
CGEventTapEnable
CFRunLoopRun()
と言った手順です。
2番の内容がここでの肝となります。
毎回ログに吐き出すほどでもないので、
10分間などの一定期間を定義して、その間の総計を出力するようにしました。
コードでの記述例で言うと
1 2 3 4 5 6 7 | # define INTERVAL_TIME if (now() - prev_time > INTERVAL_TIME) { // ここにカウントした総計を出力する実装 print("%d", key_count); fflush(stdout); } key_count++; |
と言った感じです。あくまで抜粋です。
10分の間にグルグルとループしながらキーを打ったらカウント。
10分を超えた時点でキーを叩いたらまとめて
画面に今までのカウントを出力します。
一回の実行で42億回まではカウントしてくれるので
間違って立ち上げっぱなしでも一ヶ月は保ってくれそうです!!
もうちょっとUIもついたアプリに出来たらよかったのですが、、
取り敢えずの目的は達したので、まずまずとします。
最後に
出力された(カウントされた)出力は実際には以下です。
1 2 3 4 5 | 426 1207 2979 3670 4936 |
コマンド実行例は以下
1 | sudo ./key_count > ./key_count.log |
4,50分の間に約5千回ほど打鍵してることが解りました。意外と少ないものですね。
以上です!
Author Profile
スターフィールド編集部
SHARE