(资料图片仅供参考)
如题,用Python3实现 dota改建精灵。本质原理是通过改变键盘按键映射关系。比如按下数字键1,映射到字母A。映射关系可以自定义。 这样就构成了改建逻辑。 实现工具清单如下:
python 3.7.3python库:PyHook3 ,关于该库的安装请自行百度,有点麻烦。python库:win32api
完整代码如下,可直接使用:
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date : 2020-09-05 19:13:10# @Author : Nero # @Link :# @Version : Dota技能一把梭"""使用说明:1). 根据需求修改keyMap中对应的值,字母不区分大小写2). 程序运行后,通过“\” 开启、关闭 键盘映射功能"""#导入库文件import pythoncomimport PyHook3import win32apiimport win32con#构建映射关系keyMap={"装备栏1":"", "装备栏2":"", "装备栏3":"", "装备栏4":"", "装备栏5":"", "装备栏6":"", }#提示信息print("Author: Nero\n")print("装备栏顺序如下:\n装备栏1 装备栏2\n装备栏3 装备栏4\n装备栏5 装备栏6\n")#输入各装备栏的快捷键for i in keyMap: keyMap[i]=input("请输入"{0}"的快捷键: ".format(i))#改建开关提示print("\n请输入 “\” 开启改键功能\n")#开关flagturnONOFF="Oem_5" # “\” 开启/关闭 按键映射功能按键startFlag=False#开关函数def switchFlag(): global startFlag if startFlag: print ("功能停止") startFlag=False else : print ("功能开启") startFlag=Truedef checkFlag(): return startFlag#主程序将一直监听键盘输入,并判断是否是自定义的快捷键,根据判断结果将指定的按键发送给系统。def onKeyboardEvent(event): #打印当前键盘输入 print ("Key:{0:} ".format(event.Key)) #程序开启/关闭 if str(event.Key) == "Oem_5": switchFlag()#如果程序开启,如果检测到按键为快捷键,则将该快捷键映射的值送给系统 if checkFlag(): if str(event.Key).lower() == keyMap["装备栏1"].lower(): win32api.keybd_event(103, 0, 0, 0) #对应小键盘7 win32api.keybd_event(103, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key).lower() == keyMap["装备栏3"].lower(): win32api.keybd_event(100, 0, 0, 0) #对应小键盘4 win32api.keybd_event(100, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key).lower() == keyMap["装备栏5"].lower(): win32api.keybd_event(97, 0, 0, 0) #对应小键盘1 win32api.keybd_event(97, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key).lower() == keyMap["装备栏2"].lower(): win32api.keybd_event(104, 0, 0, 0) #对应小键盘8 win32api.keybd_event(104, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key).lower() == keyMap["装备栏4"].lower(): win32api.keybd_event(101, 0, 0, 0) #对应小键盘5 win32api.keybd_event(101, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key).lower() == keyMap["装备栏6"].lower(): win32api.keybd_event(98, 0, 0, 0) #对应小键盘2 win32api.keybd_event(98, 0, win32con.KEYEVENTF_KEYUP, 0) else: pass # 返回 True 以便将事件传给其它处理程序 # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截 # 也就是说你的输入失效,似乎失去响应了 return Truedef main(): # 创建一个“钩子”管理对象 hm = PyHook3.HookManager() # 监听所有键盘事件 hm.KeyDown = onKeyboardEvent # 设置键盘“钩子” hm.HookKeyboard() # 进入循环,如不手动关闭,程序将一直处于监听状态 pythoncom.PumpMessages()if __name__ == "__main__": main()
据俄罗斯远东媒体援引阿穆尔州州长瓦西里·奥尔洛夫的话报道,俄罗斯和中国有必要签署一系列政府间文件,以进一步有效地开展俄中新铁路口更多
2023-02-13 10:01:35印尼能源和矿产资源部部长阿里芬·塔利夫(ArifinTasrif)1月30日表示,印尼今年计划生产695亿吨煤炭,出口518亿吨。 阿里芬·塔利夫称更多
2023-02-13 10:00:08根据商务部重要生产资料监测系统监测数据显示,上周(2023年1月30日-2023年2月5日)福建省监测样本企业的煤炭市场价格平均为162767元吨,更多
2023-02-13 10:00:50春节过后,随着各地煤矿生产企业的复工复产,煤炭市场供应偏紧的态势正在缓解,煤炭主产地、沿海港口及进口动力煤价均出现回落。 1、通更多
2023-02-13 09:58:22春节过后,沿海地区现货动力煤价格迅速进入下行通道,且降幅在2月上旬呈现扩大化趋势。 探究近期沿海地区现货煤价下行的原因,应该回归更多
2023-02-13 09:57:232月8日,山西吕梁离石贾家沟煤业有限公司发生一起死亡1人的安全事故。 2月9日,山西省应急管理厅、山西省地方煤矿安全监督管理局下发通更多
2023-02-10 16:55:522月8日至9日,山西迎来大范围降雪降温天气。为应对降雪降温造成用电增加情况,太原铁路部门加大电煤运输保障力度,优化货物列车开行,挖掘更多
2023-02-10 12:08:212月9日从国家矿山安监局湖北局获悉,一年来,湖北煤矿安全生产形势持续稳定向好,2022年再次实现安全生产,创造了煤矿连续30个月零事故零更多
2023-02-10 11:17:08根据2月7日统计数据,国铁南宁局管内10家电厂存煤21239万吨,平均可耗28天。 近期,随着节后返岗复工潮的到来,广西各地企业用电量持续更多
2023-02-10 09:54:28近日,一艘运载着66万吨进口煤的东方虎轮从澳大利亚入境我国,珠海边检总站台山出入境边防检查站迎来了2023年春节后第一艘入境的国际航行更多
2023-02-10 10:07:01