python按键事件的按键号,在Python 2.7中模拟按键事件
我在1年多前写过这段代码,所以它并不完美,但它有效:
from win32api import keybd_event
import time
import random
Combs = {
'A': [
'SHIFT',
'a'],
'B': [
'SHIFT',
'b'],
'C': [
'SHIFT',
'c'],
'D': [
'SHIFT',
'd'],
'E': [
'SHIFT',
'e'],
'F': [
'SHIFT',
'f'],
'G': [
'SHIFT',
'g'],
'H': [
'SHIFT',
'h'],
'I': [
'SHIFT',
'i'],
'J': [
'SHIFT',
'j'],
'K': [
'SHIFT',
'k'],
'L': [
'SHIFT',
'l'],
'M': [
'SHIFT',
'm'],
'N': [
'SHIFT',
'n'],
'O': [
'SHIFT',
'o'],
'P': [
'SHIFT',
'p'],
'R': [
'SHIFT',
'r'],
'S': [
'SHIFT',
's'],
'T': [
'SHIFT',
't'],
'U': [
'SHIFT',
'u'],
'W': [
'SHIFT',
'w'],
'X': [
'SHIFT',
'x'],
'Y': [
'SHIFT',
'y'],
'Z': [
'SHIFT',
'z'],
'V': [
'SHIFT',
'v'],
'Q': [
'SHIFT',
'q'],
'?': [
'SHIFT',
'/'],
'>': [
'SHIFT',
'.'],
'
'SHIFT',
','],
'"': [
'SHIFT',
"'"],
':': [
'SHIFT',
';'],
'|': [
'SHIFT',
'\\'],
'}': [
'SHIFT',
']'],
'{': [
'SHIFT',
'['],
'+': [
'SHIFT',
'='],
'_': [
'SHIFT',
'-'],
'!': [
'SHIFT',
'1'],
'@': [
'SHIFT',
'2'],
'#': [
'SHIFT',
'3'],
'$': [
'SHIFT',
'4'],
'%': [
'SHIFT',
'5'],
'^': [
'SHIFT',
'6'],
'&': [
'SHIFT',
'7'],
'*': [
'SHIFT',
'8'],
'(': [
'SHIFT',
'9'],
')': [
'SHIFT',
'0'] }
Base = {
'0': 48,
'1': 49,
'2': 50,
'3': 51,
'4': 52,
'5': 53,
'6': 54,
'7': 55,
'8': 56,
'9': 57,
'a': 65,
'b': 66,
'c': 67,
'd': 68,
'e': 69,
'f': 70,
'g': 71,
'h': 72,
'i': 73,
'j': 74,
'k': 75,
'l': 76,
'm': 77,
'n': 78,
'o': 79,
'p': 80,
'q': 81,
'r': 82,
's': 83,
't': 84,
'u': 85,
'v': 86,
'w': 87,
'x': 88,
'y': 89,
'z': 90,
'.': 190,
'-': 189,
',': 188,
'=': 187,
'/': 191,
';': 186,
'[': 219,
']': 221,
'\\': 220,
"'": 222,
'ALT': 18,
'TAB': 9,
'CAPSLOCK': 20,
'ENTER': 13,
'BS': 8,
'CTRL': 17,
'ESC': 27,
' ': 32,
'END': 35,
'DOWN': 40,
'LEFT': 37,
'UP': 38,
'RIGHT': 39,
'SELECT': 41,
'PRINTSCR': 44,
'INS': 45,
'DEL': 46,
'LWIN': 91,
'RWIN': 92,
'LSHIFT': 160,
'SHIFT': 161,
'LCTRL': 162,
'RCTRL': 163,
'VOLUP': 175,
'DOLDOWN': 174,
'NUMLOCK': 144,
'SCROLL': 145 }
def KeyUp(Key):
keybd_event(Key, 0, 2, 0)
def KeyDown(Key):
keybd_event(Key, 0, 1, 0)
def Press(Key, speed=1):
rest_time = 0.05/speed
if Key in Base:
Key = Base[Key]
KeyDown(Key)
time.sleep(rest_time)
KeyUp(Key)
return True
if Key in Combs:
KeyDown(Base[Combs[Key][0]])
time.sleep(rest_time)
KeyDown(Base[Combs[Key][1]])
time.sleep(rest_time)
KeyUp(Base[Combs[Key][1]])
time.sleep(rest_time)
KeyUp(Base[Combs[Key][0]])
return True
return False
def Write(Str, speed = 1):
for s in Str:
Press(s, speed)
time.sleep((0.1 + random.random()/10.0) / float(speed))
例:
>>> Write('Hello, World!', speed=3)
Hello, World!
>>> Press('ENTER')
如果您想要实现更多密钥,那么您可以找到它们的代码here.只需将这些密钥添加到Base字典即可.
python按键事件的按键号,在Python 2.7中模拟按键事件相关推荐
- Qt文档阅读笔记-Qt单元测试中模拟GUI事件
这里先提下基本概念 官方的模拟GUI事件,就是调用QTest提供的函数,去模拟用户鼠标点击,用户输入等效果.从而达到模拟的功能,感觉这个功能非常的好. 如: QTest::keyClicks()主要是 ...
- Python IDLE无法显示行号、Python IDLE shell里运行py文件
一.Python自带的IDLE shell里无法在左侧显示行号,在右下角会显示当前光标所处的位置(行号.列号). 但是程序报错时,无法根据行号及时查看到相应的行. 使用快捷键Alt+G可以定位到指定的 ...
- python爬虫爬取公众号_[Python]爬取微信公众号文章
[Python] 纯文本查看 复制代码import sys reload(sys) sys.setdefaultencoding('utf-8') from urllib import quote f ...
- python触发点击事件_如何在python中模拟onclick事件?
I am working on a small project where I have to submit a form to a website. The website is, however, ...
- adb模拟按键home_adb命令中 模拟按键 KeyCode 部分详解
1. 最常用的几个按键 // 返回键 ,back adb shell input keyevent 4 // 锁屏键 /关机键 adb shell input keyevent 82 //划屏操作,从 ...
- onscroll事件没有响应的原因以及vue.js中添加onscroll事件监听的方法(vue上监听scroll事件
在vue.js中直接使用onscroll不起作用 利用DOM二级监听事件即可, window.addEventListener('scroll',()=>{console.log(window. ...
- android+无触摸操作,如何在Android中模拟触摸事件?
这是一个monkeyrunner脚本,用于将触摸和拖动操作发送到应用程序.我一直在使用它来测试我的应用程序可以处理快速重复的滑动手势. # This is a monkeyrunner jython ...
- html模拟点击某个键盘按钮,如何使用JavaScript模拟按键或单击?
模拟鼠标单击 我的猜测是网页正在监听mousedown而不是点击(这对于可访问性是不利的,因为当用户使用键盘时,只会触发焦点和点击,而不是mousedown).所以你应该模拟mousedown,cli ...
- python制作游戏修改器_基于Python的游戏是如何制作的?
让我们先把这个让开:the game should run even on a computer where there's no python installation. So my questio ...
最新文章
- java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...
- 5种方法实现“反转字符串”
- C语言二级指针内存模型建立
- SAP Spartacus cms-components.service.ts里的config.cmsComponents
- apache ignite_Kubernetes集群上的Apache Ignite和Spring第1部分:Spring Boot应用程序
- 输出10000以内的第M到第N个素数(Eclipse gcc下)
- free() 是如何释放不同内存区块大小的指针?
- Lucene全文检索_分词_复杂搜索_中文分词器
- 2021-2025年中国催产药行业市场供需与战略研究报告
- 解决web网站被挂马清除方法
- 欧拉函数知识点总结及欧拉函数打表代码(数论)
- 帮助干活,朋友馈赠了购物卡
- 管理感悟:维护每日工作列表
- 七牛上传文件(JS实现)
- Vue FSC在线编译代码实时预览@vue/repl
- 自制一个交叉适配器来检修网络设备(转)
- leetcode 最长单词
- MISC解题思路总结(一)XCTF平台
- Day22-Django之信号
- rem命令使用 matlab,matlab中的rem怎么用?
热门文章
- (转载)摄影集.西湖边的一棵树
- 标注界址点号lisp_LISP语言在宗地界址点成果表的应用
- 整数-28d在计算机中用8位二进制表示,文本框的种类有
- SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS 论文/GCN学习笔记
- CodeForces 962C - Make a Square
- Eclipse中文字体很小如何更改
- 高压设备用Inconel 625镍基高温合金
- 堡垒之夜显示连接服务器失败,堡垒之夜国服进不去怎么办 连接启动器登录失败解决方法...
- linux下如何运行c编译,Linux下如何编译并运行C程序
- 励志用 | ACM-ICPC/CCPC 个人经历总结_楚东方(转)