簡單的卡爾改鍵程序

截圖:




源代碼:


#!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()


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