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

一个简易的dota改键助手的更多相关文章

  1. War3Tool dota改键v3.3版

    wartool魔兽全屏改键功能:1.支持11平台自定义改建,自动进局域网(同类软件暂时没发现这个功能)2.技能改键,可以有效的切换适合你的技能键3.war3路径扫描,运行本程序一键就能打开war3 ( ...

  2. winform版的dota改键器

    从网上找的源码很不齐全,自己补充了一下,有兴趣的可以看看. 首先是建立一个hook类WFChangeKey using System; using System.Reflection; using S ...

  3. 用C#钩子写一个改键外挂

    我的微信群——软件开发测试工程师交流群,欢迎扫码: 改键是一种习惯,比如在玩儿lol或者dota的时候.理论上玩儿什么游戏都可以改键. 做一个窗体(点击Install——应用改键,点击Uninstal ...

  4. Opencv探索之路(二十):制作一个简易手动图像配准工具

    近日在做基于sift特征点的图像配准时遇到匹配失败的情况,失败的原因在于两幅图像分辨率相差有点大,而且这两幅图是不同时间段的同一场景的图片,所以基于sift点的匹配已经找不到匹配点了.然后老师叫我尝试 ...

  5. 撸了一个简易的配置中心,顺带整合到了SpringCloud

    大家好,我是三友~~ 最近突然心血来潮(就是闲的)就想着撸一个简单的配置中心,顺便也照葫芦画瓢给整合到SpringCloud. 本文大纲 配置中心的概述 随着历史的车轮不断的前进,技术不断的进步,单体 ...

  6. ENode 2.0 - 第一个真实案例剖析-一个简易论坛(Forum)

    前言 经过不断的坚持和努力,ENode 2.0的第一个真实案例终于出来了.这个案例是一个简易的论坛,开发这个论坛的初衷是为了验证用ENode框架来开发一个真实项目的可行性.目前这个论坛在UI上是使用了 ...

  7. 使用MVVM框架avalon.js实现一个简易日历

    最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简易日历,毕竟也是第一次造日历这种轮子,所以这里记录下我当 ...

  8. C 实现一个简易的Http服务器

    引言 做一个老实人挺好的,至少还觉得自己挺老实的. 再分享一首 自己喜欢的诗人的一首 情景诗. 每个人总会有问题,至少喜欢就好, 本文 参照 http 协议   http://www.cnblogs. ...

  9. avalon.js实现一个简易日历

    使用MVVM框架avalon.js实现一个简易日历   最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简 ...

随机推荐

  1. ACM: 限时训练题解-Epic Professor-水题

    Epic Professor   Dr. Bahosain works as a professor of Computer Science at HU (Hadramout    Universit ...

  2. Linux进程含义知多少

    理想情况下,您应该明白在您的系统中运行的每一个进程.要获得所有进程的列表,可以执行命令 ps -ef(POSIX 风格)或 ps ax(BSD 风格).进程名有方括号的是内核级的进程,执行辅助功能(比 ...

  3. 整理iOS9适配

    整理iOS9适配 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版, ...

  4. Bootstrap_让Bootstrap轮播插件carousel支持左右滑动手势的三种方法

    Bootstrap 的 carousel.js 插件并没有支持手势. 3种解决方案 : jQuery Mobile (http://jquerymobile.com/download/) $(&quo ...

  5. TCP连接探测中的Keepalive和心跳包

    TCP连接探测中的Keepalive和心跳包 tcp keepalive 心跳 保活 Linuxtcp心跳keepalive保活1. TCP保活的必要性 1) 很多防火墙等对于空闲socket自动关闭 ...

  6. 必备:常用px,pt,em换算表(转)

    常用px,pt,em换算表 pt (point,磅):是一个物理长度单位,指的是72分之一英寸. px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理 ...

  7. 如何使用Apache的ab工具进行网站性能测试

    1.打开Apache服务器的安装路径,在bin目录中有一个ab.exe的可执行程序,就是我们要介绍的压力测试工具. 2.在Windows系统的命令行下,进入ab.exe程序所在目录,执行ab.exe程 ...

  8. zabbix3.2.0beta2 监控模版

    Zabbix监控中用到了一系列模版,nginx后端检测状态 微信告警等一系列常规的服务应用监控 memcached监控模版,可以自己重新定义memcached的端口 http://files.cnbl ...

  9. TF-IDF算法

    转自:http://www.cnblogs.com/eyeszjwang/articles/2330094.html TF-IDF(term frequency–inverse document fr ...

  10. Oracle基础及三层分页查询

    一.数据库表空间和数据文件 解析:一个数据库下可以开N个表空间,一个表空间可以包含N个数据文件.表空间是逻辑概念. 二.关于listener.ora位置 修改该界面上的数据,会影响指定路径的监听配置文 ...