zoukankan      html  css  js  c++  java
  • 一个简易的dota改键助手

      那年,刚开始玩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
    ' % 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

  • 相关阅读:
    后台点赞 接口
    三表联查
    后台投票 接口
    MSXML insertBefore(IXMLDOMNode *newChild, VARIANT refChild) 传参
    WTL中菜单栏及工具栏项状态改变应注意的地方
    使用WTL的消息反射封装CEdit实现监听控件文本改变事件
    修改字体
    CEdit实现文本换行
    VC中获取窗口控件相对客户区的坐标
    关闭HTC手机充电时屏幕一直亮着绿色电池的办法
  • 原文地址:https://www.cnblogs.com/HGtz2222/p/3151282.html
Copyright © 2011-2022 走看看