那年,刚开始玩dota的时候, 发现物品栏的快捷键太不好按鸟(集中在小键盘的数字键)。于是各种改键工具应运而生,像最经典的warkey, 不知不觉就用了好多年。如今,各种改键工具越来越强大了, 支持各种,甚至是喊话什么的~不过最经典的warkey,实际上只是简单的键盘映射, 于是今天突然想起来就也写了一个。使用python的pyHook,还是很方便的完成了功能。
import pythoncom import pyHook import win32api import win32con keyMap={ 'Num7':'Q', 'Num4':'Capital', 'Num1':'Z', 'Num8':'', 'Num5':'', 'Num2':'X', 'startFlag':'Oem_5' } #这个Oem_5实际上是键盘上的 \ startFlag=False def switchFlag(): global startFlag if startFlag: print 'warkey stop' startFlag=False else : print 'warkey start' startFlag=True def checkFlag(): return startFlag def onKeyboardEvent(event): print 'Key:%s\n' % str(event.Key) if str(event.Key) == keyMap['startFlag']: switchFlag() if checkFlag(): if str(event.Key) == keyMap['Num7']: win32api.keybd_event(103, 0, 0, 0) # Q -> Num7 win32api.keybd_event(103, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key) == keyMap['Num4']: win32api.keybd_event(100, 0, 0, 0) # Capital -> Num4 win32api.keybd_event(100, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key) == keyMap['Num1']: win32api.keybd_event(97, 0, 0, 0) # Z -> Num1 win32api.keybd_event(97, 0, win32con.KEYEVENTF_KEYUP, 0) elif str(event.Key) == keyMap['Num8']: pass elif str(event.Key) == keyMap['Num5']: pass elif str(event.Key) == keyMap['Num2']: win32api.keybd_event(98, 0, 0, 0) # X -> Num2 win32api.keybd_event(98, 0, win32con.KEYEVENTF_KEYUP, 0) else: pass if __name__ == "__main__": print 'start listen' hm=pyHook.HookManager() hm.KeyDown=onKeyboardEvent hm.HookKeyboard() pythoncom.PumpMessages()
按 “\”切换开启/关闭状态
然后将Q,cap lock, Z, X分别映射到四个小键盘数字键
下次老大带着去网吧公款dota, 万一一时找不到合适的改键工具,就可以用自己的这个了=w=
附录:
键盘键码对应表
http://wenku.baidu.com/view/bff70805a6c30c2259019ef4.html
转载于:https://www.cnblogs.com/HGtz2222/p/3151282.html
今天的文章一个简易的dota改键助手分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/63568.html