|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Daskbar 于 2018-6-17 13:56 编辑
用的无线鼠标,突然没电,然后就想到写一个这个,虽然已经有现成的软件能实现这个功能甚至更好
主要是用的安卓的adb调试功能,使用的时候要打开usb调试,我用的是小米手机,有两个usb调试开关都要打开
还有就是用了pyautogui的控制鼠标的功能,这个库其他东西也挺好的甚至有图像识别功能
这里只写了移动鼠标和左键点击,右键之类的懒得写了
另外,adb是可以无线调试的,楼主刚才试了试是可以的,不过那是adb的内容了,随便百度一下就能查到这里就不说了
学python不久,望指正
代码如下
- import subprocess
- import copy
- import pyautogui
- class Data:
- def __init__(self, position):
- self.position_now = position
- self.position_old = [0,0]
- self.states = 0
-
- def set_position(self,position):
- if self.states == 0:#刚按下的时候也给old一个值,以免后面计算两点距离的时候出错
- self.position_old = position
- self.position_now = position
- else:
- self.position_old = self.position_now
- self.position_now = position
- def get_rel(self):#获取与上个点之间的距离
- dx = self.position_now[0] - self.position_old[0]
- dy = self.position_now[1] - self.position_old[1]
- return [dx,dy]
- def main():
- pyautogui.PAUSE = 0 #pyautogui 默认每条指令间隔0.1秒
- pyautogui.FAILSAFE = False#关闭pyautogui防故障设置,否则鼠标移动到左上角会中断程序
- order = r'adb shell getevent /dev/input/event2'
- pi = subprocess.Popen(order, shell=True, stdout=subprocess.PIPE)
- position = [0, 0]
- pos = Data(position)
- states = True #用于检测是否按下,用于只检测手按下之后的数据
-
- for i in iter(pi.stdout.readline, 'b'):
- print(i)
- tempstring = i.decode('utf-8').split('\r')[0].split(' ')
- if tempstring[2] == '00000000' and tempstring[1] == '014a': # 手指松开
- if pos.states <= 3:#这里按使用体验可以改变数值,数值越大点击越灵敏(误),其实是不知道怎么检测单击信息而出此下策
- pyautogui.click()
- states = False
- position = [0, 0]
- elif tempstring[0] == '0001' and tempstring[2] == '00000001': # 手指按下
- states = True
- pos.states = 0
- if states is True:
- if tempstring[1] == '0035':
- position[0] = int(tempstring[2],16)
- elif tempstring[1] == '0036':
- position[1] = int(tempstring[2],16)
- if tempstring[0] =='0000' and tempstring[2]=='00000000':
- pos.set_position(copy.copy(position))
- pyautogui.moveRel(pos.get_rel(),duration=0) #根据滑动的相对距离移动,后边的参数是函数执行后的延迟时间
- pos.states += 1
- if __name__ == '__main__':
- main()
-
复制代码 |
-
-
ADB.zip
526.99 KB, 下载次数: 1
adb电脑端,放在与代码一个目录
|