Pyhookedを利用してバックグラウンドでキー入力を取得し一日の入力文字数を計測したい

タイプした回数を記録したい!

こんにちは!

管理人のでぃすこです!

さて、今回の記事なのですが、私が個人的に欲しかったツールを作って見るという、完全に自己満足な内容になっております。

早い話が、一日に何回キーボードをタイプしたのか、
ということを計測したいなと思ったわけです。

ホントはA~Zまで個別に計測しようかな、とも思っていたのですが、
それだとコードも長くめんどくさくなるので、
とりあえずすべてのキーをタイプした回数をバックグラウンドで拾い続けてくれるようなプログラムを作成しました。

使用環境は以下
・windows10
・Python 3.6.4

今回利用したライブラリ
・pyhooked

まずはpyhookedのインストールからなのですが、
これは非常にシンプルで

pip install pyhooked

で完了します。かんたんすぎる~

まずはpyhookedのGitHubにてかんたんなサンプルコードを確認しまして、
実際に書いたコードが以下になります。

from pyhooked import Hook, KeyboardEvent, MouseEvent
import sys
x = 0
print("Ctrl + Bで今日タイプした文字数がわかります。")
def handle_events(args):
global x
x = x + 1
if isinstance(args, KeyboardEvent):
if args.current_key == 'B' and args.event_type == 'key down' and 'Lcontrol' in args.pressed_key:
y = x/2
print("あなたが今日タイプした文字数は")
print(int(y))
print("文字です。")
hk = Hook()
hk.handler = handle_events
hk.hook()
view raw keylog.py hosted with ❤ by GitHub

計測方法はこのプログラムを実行して、コンソールを最小化して作業するだけ。
何回タイプしたかを計測したいと思ったときは、
コンソール上でCtrl+Bで表示できるようにしてあります。

躓いたところとしては、キーのイベントを取得する際に、
kwy downをつけることで押し込みを検知できるようなのですが、
すべてのキーに対してそれを適用する方法がわからなかったので、

このコードのhandle_eventsは押し込みと離したときの2回を一回のタイプで検知してしまっておりました。

なので、最終的な出力のif文の中で変数に格納する際に1/2にして格納し、
出力しているような形になります。

かなり無理矢理感のあるコードではありますが、
まあ動いたので良し。
私以外が使うわけではないと思いつつ、サイトに掲載してしまっているので
ご利用の際にはご注意くださいませ~

カテゴリ一覧

その他
PCパーツ
ガジェット類
雑記帳
レビュー
ニュース
高コスパPCシリーズ
ブログ進捗
便利ソフト紹介
自作ソフト
電子工作
自作ブラウザゲーム
すべての記事
お買い得商品発掘
無線
アマチュア無線
コスパオーディオ
筆者
でぃすこ

動画投稿開始:2019年2月 趣味:秋葉原探索

編集環境:Aviutl+YMM3