截图:
源代码:
#!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()