利用PyUserInput记录键盘鼠标事件信息

      群皮最近很皮,想弄一些没啥卵用的东西,想记录键盘鼠标信息,例如鼠标点击坐标,鼠标移动轨迹,点击间隔,键盘按键,按键点击间隔等等,(不要小瞧了这些信息,可以利用数理统计和机器学习可以分析出你的使用习惯,并将有助于优化你的键鼠使用,可以为你在lol和吃鸡再加上一波骚操作)。以前用java以前弄过,什么鬼jar包已经记不住了。如今以后要开啥玩python和机器学习了,所以用py玩玩这个东西。

写在前面:由于毕设原因,电脑仍是windows系统,这也为开发造成了很多不便。https://github.com/tingtinglu/awesome-python-cn 是一个比较全的python资源列表。这里介绍了一种所谓的“跨平台的,优雅的”键盘鼠标开发模块:PyUserInput。官网为https://github.com/SavinaRoja/PyUserInput。然而实际并不如此,在Windows平台下,PyUserInput无可避办的依赖了其他模块:win32和pyHook。在底层设计上,此开源项目的开发已经停滞了,因为pyHooksourceforge最新版本也只是支持py2.7版本,而且并不支持64位,这让群皮在配置环境方面浪费了很长时间。稍后给出我的配置教程。(群皮不得不又下了py2.7环境,成功达成了电脑内拥有双python版本成就,微笑脸)。

废话不多说,直接给出一段记录鼠标左键点击事件并计入数据库(SQLite)的代码,er,已经点击快300次了,那么估计一下我每天点击鼠标次数应该是1000次左右吧。

#! python2
import pyHook
from pymouse import PyMouseEvent
import os, sqlite3

class Clickonacci(PyMouseEvent):
    def __init__(self):
        PyMouseEvent.__init__(self)
        

    def click(self, x, y, button, press):
        if button == 1:
            if press:
                print ("1")
                db_file = os.path.join('d:\py2.7', 'haha.db')
                conn = sqlite3.connect(db_file)
                cursor = conn.cursor()
                print(x,y)
                cursor.execute(r"insert into xy (x,y)  values ("+str(x)+","+str(y)+") ")
                cursor.close()
                conn.commit()
                conn.close()
        else:
        	return 
    def  move(self,x,y):
        print(x,y)  
            
C = Clickonacci()
C.run()

这是目前记录的结果:


呃,贴完之后感觉没啥可以讲的,说一点自己的初学python理解吧,

1.self相当于java中的this指针,指代当前实例化对象。

2.python由于是解释形语言,相对于C++和Java 这种编译形语言来说更加轻巧敏捷,(当然人家py库也不少,年龄比java大的哈哈),所以很适合机器学习,让研究人员把主要的时间放在算法的设计和数据的分析上。

写在后面,下一阶段应该可以尝试一下可视化,形成类似于下面的效果图下下阶段我想采用的是利用这些数据跑一些刚学的分类聚类算法,哈哈毕竟是维度比较少。

数据可视化:

import os, sqlite3
import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)


db_file = os.path.join('d:\py2.7', 'haha.db')
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
# 执行查询语句:
cursor.execute('SELECT xy.x FROM xy')
x = cursor.fetchall()
cursor.execute('SELECT xy.y FROM xy')
y = cursor.fetchall()
'''y1 = list(y)

y2 = tuple(y2)'''
cursor.close()
conn.close()
x1 = np.array(x)
x1 = list(x1)
y1 = np.array(y)
y2 = -y1
y2 = list(y2)
'''
y1 = list(y)
print (type(y1))
for i in range(len(y1)):
	y1[i] = 0 - int(str(y1[i]))'''
'''y1 = list(y)
y2 = np.zeros(len(y1)) - y1
x = np.array(x)
print (len(x),len(y2))'''
plt.scatter(x1,y2)
plt.show()

最终效果图


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值