简单的卡尔改键程序

截图:




源代码:


#!usr/bin/env python
# -*- coding: gb2312 -*-

import pyHook
import pythoncom
import win32api
import win32con
import wx

#from pyHook.HookManager import HookConstants
        
def OnKeyboardEvent(event):

#    tabpressed = pyHook.GetKeyState(HookConstants.VKeyToID('VK_TAB')) >= 2
#这是实现tab状态抓取的另一种方法,如果启用,则
#from pyHook.HookManager import HookConstants
#这一句也要启用

    tabpressed = win32api.GetKeyState(win32con.VK_TAB) & 0x8000

    if tabpressed:
        if event.Key == 'Y':
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'急速冷却'
	   
        elif event.Key == 'V':
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'幽灵漫步'
	
        elif event.Key == 'G':
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'寒冰之墙'
	
        elif event.Key == 'Z':
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'灵动迅捷'
	
        elif event.Key == 'X':
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'强袭飓风'

        elif event.Key == 'C':
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'电磁脉冲'
	
        elif event.Key == 'T':
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'阳炎冲击'
  
        elif event.Key == 'F':
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'熔炉精灵'
  
        elif event.Key == 'D':
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'混沌陨石'
	
        elif event.Key == 'B':
            win32api.keybd_event(81,0,0,0)
            win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(69,0,0,0)
            win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(87,0,0,0)
            win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(82,0,0,0)
            win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'超震声波'

        return True

class Frame(wx.Frame):
    
    def __init__(self):
        wx.Frame.__init__(self, None, -1, '卡尔技能改键', 
                size=(300, 200))
        panel = wx.Panel(self, -1)
        wx.StaticText(panel, -1, "卡尔技能改键说明:\n\n按住TAB再按技能快捷键,即相当于切换到此技能。\n\n"
                "powered by KID.JDD and Tooktang", (7,25), 
                style=wx.ALIGN_CENTER)
        self.button = wx.ToggleButton(panel, -1, "点击切换改键开关状态", pos=(71,120))
        self.Bind(wx.EVT_TOGGLEBUTTON, self.OnClick, self.button)

    def OnClick(self, event):
        hm = pyHook.HookManager()
        hm.KeyDown = OnKeyboardEvent
        wx.EVT_TOGGLEBUTTON = hm.HookKeyboard()

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = Frame()
    frame.Show()
    app.MainLoop()
    pythoncom.PumpMessages()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章