読者です 読者をやめる 読者になる 読者になる

一日のクリック回数

普段PCを使っていて一日に何回ぐらいクリックしてるのか気になったことはありませんか?ということで調べてみました。

調査方法

/dev/input/mouse0にマウスのイベントが流れてくるので、それを解釈してクリックのログを取ります。フォーマットはどこかのフォーラムの発言を参考にしました。

使ったコード

import Control.Concurrent
import Control.Monad
import Data.Time
import Data.Bits
import qualified Data.ByteString as BS
import System.IO

main=do
    withBinaryFile "/dev/input/mouse0" ReadMode $ record

record hMouse=do
    hSetBuffering hMouse NoBuffering
    iter hMouse False False False

iter h pL pR pM=do
    [button,horz,vert]<-liftM BS.unpack $ BS.hGet h 3
    
    let
        leftPressed=(button .&. 0x01)/=0
        rightPressed=(button .&. 0x02)/=0
        middlePressed=(button .&. 0x04)/=0 -- not including scrolls
    
    tz<-getCurrentTimeZone
    date<-getCurrentTime
    let d=show $ utcToLocalTime tz date
    when (not pL && leftPressed) $ appendFile "buttonlog" $ d++" ,left\n"
    when (not pR && rightPressed) $ appendFile "buttonlog" $ d++" ,right\n"
    when (not pM && middlePressed) $ appendFile "buttonlog" $ d++" ,middle\n"
    print [leftPressed,rightPressed,middlePressed]
    
    iter h leftPressed rightPressed middlePressed

よく見ると分かるように、実際には押した回数を数えてます。

これを一日ほど動かしました。できたログからRヒストグラムを描きます。

t<-read.table('log_under_analysis',sep=',')

png('total.png',width=600,height=800,res=100)
par(mfrow=c(3,1))
for(tag in c('left','right','middle')){
    hist(as.POSIXlt(t[which(t$V2==tag),]$V1),'hours',freq=TRUE,main=sprintf("%s click",tag),
        xlab='',las=1,col='lightblue')

    t0<-as.POSIXlt('2012-03-06 00:00:00')
    lines(x=c(t0,t0),y=c(0,1000))
    grid()
}
dev.off()

結果

2012/3/5 20:28〜2012/3/6 21:43における一時間ごとのクリック回数を種類別に分けたのが次の図です。

2012/3/5 20:28〜2012/3/6 20:28の合計回数は

  • 左クリック: 5124回
  • 右クリック: 57回
  • 中クリック: 349回

でした。

ちなみに、このとき何をしてたかはtwilog(3/5 3/6)を見ると・・・残念ながらわからないので思い出してみると、適当な回路のデバッグ、調べ物、ニコ動閲覧等で、ゲームとかはしてません。

結果について

みっつのヒストグラムですが、だいたい同じ傾向を持っているように見えます。中クリックはほぼ「新しいタブでリンクを開く」専用ですが、わりと使っているようです。

ちょっと驚いてるのは右クリックの少なさで、コンテキストメニューはわりとどこでも出るのに、ほとんど使ってないな、という感じです。あまりUIを変えなくてもタッチパネルへ移行できるのはこういう理由もあるかもしれません。