Python监听鼠标键盘事件

# -*- coding: utf-8 -*-
__author__ = ‘P00113‘
# coding: utf-8

import pythoncom
import pyHook
import win32api
import win32con
import time
import threading
import random

VK_CODE = {
    ‘backspace‘: 0x08,
    ‘tab‘: 0x09,
    ‘clear‘: 0x0C,
    ‘enter‘: 0x0D,
    ‘shift‘: 0x10,
    ‘ctrl‘: 0x11,
    ‘alt‘: 0x12,
    ‘pause‘: 0x13,
    ‘caps_lock‘: 0x14,
    ‘esc‘: 0x1B,
    ‘spacebar‘: 0x20,
    ‘page_up‘: 0x21,
    ‘page_down‘: 0x22,
    ‘end‘: 0x23,
    ‘home‘: 0x24,
    ‘left_arrow‘: 0x25,
    ‘up_arrow‘: 0x26,
    ‘right_arrow‘: 0x27,
    ‘down_arrow‘: 0x28,
    ‘select‘: 0x29,
    ‘print‘: 0x2A,
    ‘execute‘: 0x2B,
    ‘print_screen‘: 0x2C,
    ‘ins‘: 0x2D,
    ‘del‘: 0x2E,
    ‘help‘: 0x2F,
    ‘0‘: 0x30,
    ‘1‘: 0x31,
    ‘2‘: 0x32,
    ‘3‘: 0x33,
    ‘4‘: 0x34,
    ‘5‘: 0x35,
    ‘6‘: 0x36,
    ‘7‘: 0x37,
    ‘8‘: 0x38,
    ‘9‘: 0x39,
    ‘a‘: 0x41,
    ‘b‘: 0x42,
    ‘c‘: 0x43,
    ‘d‘: 0x44,
    ‘e‘: 0x45,
    ‘f‘: 0x46,
    ‘g‘: 0x47,
    ‘h‘: 0x48,
    ‘i‘: 0x49,
    ‘j‘: 0x4A,
    ‘k‘: 0x4B,
    ‘l‘: 0x4C,
    ‘m‘: 0x4D,
    ‘n‘: 0x4E,
    ‘o‘: 0x4F,
    ‘p‘: 0x50,
    ‘q‘: 0x51,
    ‘r‘: 0x52,
    ‘s‘: 0x53,
    ‘t‘: 0x54,
    ‘u‘: 0x55,
    ‘v‘: 0x56,
    ‘w‘: 0x57,
    ‘x‘: 0x58,
    ‘y‘: 0x59,
    ‘z‘: 0x5A,
    ‘numpad_0‘: 0x60,
    ‘numpad_1‘: 0x61,
    ‘numpad_2‘: 0x62,
    ‘numpad_3‘: 0x63,
    ‘numpad_4‘: 0x64,
    ‘numpad_5‘: 0x65,
    ‘numpad_6‘: 0x66,
    ‘numpad_7‘: 0x67,
    ‘numpad_8‘: 0x68,
    ‘numpad_9‘: 0x69,
    ‘multiply_key‘: 0x6A,
    ‘add_key‘: 0x6B,
    ‘separator_key‘: 0x6C,
    ‘subtract_key‘: 0x6D,
    ‘decimal_key‘: 0x6E,
    ‘divide_key‘: 0x6F,
    ‘F1‘: 0x70,
    ‘F2‘: 0x71,
    ‘F3‘: 0x72,
    ‘F4‘: 0x73,
    ‘F5‘: 0x74,
    ‘F6‘: 0x75,
    ‘F7‘: 0x76,
    ‘F8‘: 0x77,
    ‘F9‘: 0x78,
    ‘F10‘: 0x79,
    ‘F11‘: 0x7A,
    ‘F12‘: 0x7B,
    ‘F13‘: 0x7C,
    ‘F14‘: 0x7D,
    ‘F15‘: 0x7E,
    ‘F16‘: 0x7F,
    ‘F17‘: 0x80,
    ‘F18‘: 0x81,
    ‘F19‘: 0x82,
    ‘F20‘: 0x83,
    ‘F21‘: 0x84,
    ‘F22‘: 0x85,
    ‘F23‘: 0x86,
    ‘F24‘: 0x87,
    ‘num_lock‘: 0x90,
    ‘scroll_lock‘: 0x91,
    ‘left_shift‘: 0xA0,
    ‘right_shift ‘: 0xA1,
    ‘left_control‘: 0xA2,
    ‘right_control‘: 0xA3,
    ‘left_menu‘: 0xA4,
    ‘right_menu‘: 0xA5,
    ‘browser_back‘: 0xA6,
    ‘browser_forward‘: 0xA7,
    ‘browser_refresh‘: 0xA8,
    ‘browser_stop‘: 0xA9,
    ‘browser_search‘: 0xAA,
    ‘browser_favorites‘: 0xAB,
    ‘browser_start_and_home‘: 0xAC,
    ‘volume_mute‘: 0xAD,
    ‘volume_Down‘: 0xAE,
    ‘volume_up‘: 0xAF,
    ‘next_track‘: 0xB0,
    ‘previous_track‘: 0xB1,
    ‘stop_media‘: 0xB2,
    ‘play/pause_media‘: 0xB3,
    ‘start_mail‘: 0xB4,
    ‘select_media‘: 0xB5,
    ‘start_application_1‘: 0xB6,
    ‘start_application_2‘: 0xB7,
    ‘attn_key‘: 0xF6,
    ‘crsel_key‘: 0xF7,
    ‘exsel_key‘: 0xF8,
    ‘play_key‘: 0xFA,
    ‘zoom_key‘: 0xFB,
    ‘clear_key‘: 0xFE,
    ‘+‘: 0xBB,
    ‘,‘: 0xBC,
    ‘-‘: 0xBD,
    ‘.‘: 0xBE,
    ‘/‘: 0xBF,
    ‘`‘: 0xC0,
    ‘;‘: 0xBA,
    ‘[‘: 0xDB,
    ‘\\‘: 0xDC,
    ‘]‘: 0xDD,
    "‘": 0xDE,
    ‘`‘: 0xC0}

def key_press(key=‘‘):
    if key != ‘‘ and isinstance(key, str):
        if key.__len__() == 1:
            win32api.keybd_event(VK_CODE[key], 0, 0, 0)
            print ‘press key down:%s‘ % VK_CODE[key]
        else:
            for x in key:
                win32api.keybd_event(VK_CODE[x], 0, 0, 0)

def key_up(key=‘‘):
    if key != ‘‘ and isinstance(key, str):
        if key.__len__() == 1:
            win32api.keybd_event(VK_CODE[key], 0, win32con.KEYEVENTF_KEYUP, 0)
            print ‘press key up:%s‘ % VK_CODE[key]
        else:
            for x in key:
                win32api.keybd_event(VK_CODE[x], 0, win32con.KEYEVENTF_KEYUP, 0)

def send_click():
    global down_num, up_num
    while (1):
        if down_num != up_num:
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
            # 连射多少秒,大约0.1秒一发子弹
            time.sleep(random.uniform(0.38, 0.42))
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
            # 连发之间的停顿时间
            time.sleep(random.uniform(0.25, 0.29))
            key_press(‘2‘)
            key_up(‘2‘)
            time.sleep(random.uniform(0.38, 0.56))
            key_press(‘1‘)
            key_up(‘1‘)
            print ‘click ok‘

def onMouse_leftdown(event):
    # 监听鼠标左键按下事件
    global down_num
    down_num += 1
    print "left DOWN DOWN" + str(down_num)
    return True
    # 返回 True 表示响应此事件,False表示拦截

def onMouse_leftup(event):
    # 监听鼠标左键弹起事件
    global up_num
    up_num += 1
    print "left UP UP UP" + str(up_num)
    return True

def keybord_1(event):
    pass

def main():
    hm = pyHook.HookManager()

    hm.MouseLeftDown = onMouse_leftdown
    hm.MouseLeftUp = onMouse_leftup

    hm.HookMouse()

    # 进入循环,如不手动关闭,程序将一直处于监听状态
    pythoncom.PumpMessages()

if __name__ == "__main__":
    down_num = 0
    up_num = 0
    # 新线程执行的代码:
    print(‘thread %s is running...‘ % threading.current_thread().name)
    t = threading.Thread(target=send_click, name=‘sendThread‘)
    t.start()
    # t.join()
    main()
# -*- coding: utf-8 -*-
__author__ = ‘P00113‘
# coding: utf-8

import pythoncom
import pyHook
import win32api
import win32con
import time
import threading
import random

VK_CODE = {
    ‘backspace‘: 0x08,
    ‘tab‘: 0x09,
    ‘clear‘: 0x0C,
    ‘enter‘: 0x0D,
    ‘shift‘: 0x10,
    ‘ctrl‘: 0x11,
    ‘alt‘: 0x12,
    ‘pause‘: 0x13,
    ‘caps_lock‘: 0x14,
    ‘esc‘: 0x1B,
    ‘spacebar‘: 0x20,
    ‘page_up‘: 0x21,
    ‘page_down‘: 0x22,
    ‘end‘: 0x23,
    ‘home‘: 0x24,
    ‘left_arrow‘: 0x25,
    ‘up_arrow‘: 0x26,
    ‘right_arrow‘: 0x27,
    ‘down_arrow‘: 0x28,
    ‘select‘: 0x29,
    ‘print‘: 0x2A,
    ‘execute‘: 0x2B,
    ‘print_screen‘: 0x2C,
    ‘ins‘: 0x2D,
    ‘del‘: 0x2E,
    ‘help‘: 0x2F,
    ‘0‘: 0x30,
    ‘1‘: 0x31,
    ‘2‘: 0x32,
    ‘3‘: 0x33,
    ‘4‘: 0x34,
    ‘5‘: 0x35,
    ‘6‘: 0x36,
    ‘7‘: 0x37,
    ‘8‘: 0x38,
    ‘9‘: 0x39,
    ‘a‘: 0x41,
    ‘b‘: 0x42,
    ‘c‘: 0x43,
    ‘d‘: 0x44,
    ‘e‘: 0x45,
    ‘f‘: 0x46,
    ‘g‘: 0x47,
    ‘h‘: 0x48,
    ‘i‘: 0x49,
    ‘j‘: 0x4A,
    ‘k‘: 0x4B,
    ‘l‘: 0x4C,
    ‘m‘: 0x4D,
    ‘n‘: 0x4E,
    ‘o‘: 0x4F,
    ‘p‘: 0x50,
    ‘q‘: 0x51,
    ‘r‘: 0x52,
    ‘s‘: 0x53,
    ‘t‘: 0x54,
    ‘u‘: 0x55,
    ‘v‘: 0x56,
    ‘w‘: 0x57,
    ‘x‘: 0x58,
    ‘y‘: 0x59,
    ‘z‘: 0x5A,
    ‘numpad_0‘: 0x60,
    ‘numpad_1‘: 0x61,
    ‘numpad_2‘: 0x62,
    ‘numpad_3‘: 0x63,
    ‘numpad_4‘: 0x64,
    ‘numpad_5‘: 0x65,
    ‘numpad_6‘: 0x66,
    ‘numpad_7‘: 0x67,
    ‘numpad_8‘: 0x68,
    ‘numpad_9‘: 0x69,
    ‘multiply_key‘: 0x6A,
    ‘add_key‘: 0x6B,
    ‘separator_key‘: 0x6C,
    ‘subtract_key‘: 0x6D,
    ‘decimal_key‘: 0x6E,
    ‘divide_key‘: 0x6F,
    ‘F1‘: 0x70,
    ‘F2‘: 0x71,
    ‘F3‘: 0x72,
    ‘F4‘: 0x73,
    ‘F5‘: 0x74,
    ‘F6‘: 0x75,
    ‘F7‘: 0x76,
    ‘F8‘: 0x77,
    ‘F9‘: 0x78,
    ‘F10‘: 0x79,
    ‘F11‘: 0x7A,
    ‘F12‘: 0x7B,
    ‘F13‘: 0x7C,
    ‘F14‘: 0x7D,
    ‘F15‘: 0x7E,
    ‘F16‘: 0x7F,
    ‘F17‘: 0x80,
    ‘F18‘: 0x81,
    ‘F19‘: 0x82,
    ‘F20‘: 0x83,
    ‘F21‘: 0x84,
    ‘F22‘: 0x85,
    ‘F23‘: 0x86,
    ‘F24‘: 0x87,
    ‘num_lock‘: 0x90,
    ‘scroll_lock‘: 0x91,
    ‘left_shift‘: 0xA0,
    ‘right_shift ‘: 0xA1,
    ‘left_control‘: 0xA2,
    ‘right_control‘: 0xA3,
    ‘left_menu‘: 0xA4,
    ‘right_menu‘: 0xA5,
    ‘browser_back‘: 0xA6,
    ‘browser_forward‘: 0xA7,
    ‘browser_refresh‘: 0xA8,
    ‘browser_stop‘: 0xA9,
    ‘browser_search‘: 0xAA,
    ‘browser_favorites‘: 0xAB,
    ‘browser_start_and_home‘: 0xAC,
    ‘volume_mute‘: 0xAD,
    ‘volume_Down‘: 0xAE,
    ‘volume_up‘: 0xAF,
    ‘next_track‘: 0xB0,
    ‘previous_track‘: 0xB1,
    ‘stop_media‘: 0xB2,
    ‘play/pause_media‘: 0xB3,
    ‘start_mail‘: 0xB4,
    ‘select_media‘: 0xB5,
    ‘start_application_1‘: 0xB6,
    ‘start_application_2‘: 0xB7,
    ‘attn_key‘: 0xF6,
    ‘crsel_key‘: 0xF7,
    ‘exsel_key‘: 0xF8,
    ‘play_key‘: 0xFA,
    ‘zoom_key‘: 0xFB,
    ‘clear_key‘: 0xFE,
    ‘+‘: 0xBB,
    ‘,‘: 0xBC,
    ‘-‘: 0xBD,
    ‘.‘: 0xBE,
    ‘/‘: 0xBF,
    ‘`‘: 0xC0,
    ‘;‘: 0xBA,
    ‘[‘: 0xDB,
    ‘\\‘: 0xDC,
    ‘]‘: 0xDD,
    "‘": 0xDE,
    ‘`‘: 0xC0}

def key_press(key=‘‘):
    if key != ‘‘ and isinstance(key, str):
        if key.__len__() == 1:
            win32api.keybd_event(VK_CODE[key], 0, 0, 0)
            print ‘press key down:%s‘ % VK_CODE[key]
        else:
            for x in key:
                win32api.keybd_event(VK_CODE[x], 0, 0, 0)

def key_up(key=‘‘):
    if key != ‘‘ and isinstance(key, str):
        if key.__len__() == 1:
            win32api.keybd_event(VK_CODE[key], 0, win32con.KEYEVENTF_KEYUP, 0)
            print ‘press key up:%s‘ % VK_CODE[key]
        else:
            for x in key:
                win32api.keybd_event(VK_CODE[x], 0, win32con.KEYEVENTF_KEYUP, 0)

def send_click():
    global down_num, up_num
    while (1):
        if down_num != up_num:
            win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
            time.sleep(random.uniform(0.28, 0.32))
            win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
            time.sleep(random.uniform(0.18, 0.22))
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
            # 连射多少秒,大约0.1秒一发子弹
            time.sleep(random.uniform(0.38, 0.42))
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
            # 连发之间的停顿时间
            time.sleep(random.uniform(0.25, 0.29))
            key_press(‘2‘)
            key_up(‘2‘)
            time.sleep(random.uniform(0.68, 0.86))
            key_press(‘1‘)
            key_up(‘1‘)
            print ‘click ok‘

def onMouse_rightdown(event):
    # 监听鼠标右键按下事件
    # global down_num
    # down_num += 1
    print "right DOWN DOWN" + str(down_num)
    return True

def onMouse_rightup(event):
    # 监听鼠标左键弹起事件
    # global up_num
    # up_num += 1
    print "left UP UP UP" + str(up_num)
    return True

def onMouse_leftdown(event):
    # 监听鼠标左键按下事件
    global down_num
    down_num += 1
    print "left DOWN DOWN" + str(down_num)
    return True
    # 返回 True 表示响应此事件,False表示拦截

def onMouse_leftup(event):
    # 监听鼠标左键弹起事件
    global up_num
    up_num += 1
    print "left UP UP UP" + str(up_num)
    return True

def main():
    hm = pyHook.HookManager()
    hm.Mouseright = onMouse_rightdown
    hm.MouseLeftDown = onMouse_leftdown
    hm.MouseLeftUp = onMouse_leftup
    hm.HookMouse()

    # 进入循环,如不手动关闭,程序将一直处于监听状态
    pythoncom.PumpMessages()

if __name__ == "__main__":
    down_num = 0
    up_num = 0
    # 新线程执行的代码:
    print(‘thread %s is running...‘ % threading.current_thread().name)
    t = threading.Thread(target=send_click, name=‘sendThread‘)
    t.start()
    # t.join()
    main()
时间: 2024-08-10 19:15:40

Python监听鼠标键盘事件的相关文章

android监听软键盘事件并获取键盘高度

@Override public void onResume(){ super.onResume(); //获取当前屏幕内容的高度 getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldL

监听鼠标滚动事件,如滚动鼠标出现返回顶部按钮

JQuery方法: $(window).bind('scroll',function(){ // var len = $(this).scrollTop() if($('body').scrollTop() < 10){ $('#DiaLayer').hide(); } else { $('#DiaLayer').show(); }}) 原生代码: // scrollFlag = false时向下滚动出现导航条 var scrollFlag = false; window.onscroll =

使用python监听、模拟鼠标键盘事件

最近守望职业选手疑似开挂事件挺热闹的,在下小菜一枚,并不能从视频中看出端倪.看了一些关于外挂的讨论,自动点射和压枪只需在鼠标驱动上做些改动即可,自瞄或其他高级功能则需要读内存或修改游戏文件,检测也更容易. 士兵76长按左键扫射4发子弹之后准星就会小范围随机飘,所以想自己实现一个长按左键变自动点射的程序. 仅作测试使用,鄙视一切外挂,玩游戏就好好玩. 选择使用python,用到的库pyHook,pywin32 pyHook的文档:http://pyhook.sourceforge.net/doc_

Linux文本模式下监听鼠标事件

Linux文本模式下监听鼠标事件,这里是通过gpm这个来实现的,代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <gpm.h> 5 6 void main(int argc,char **argv) 7 { 8 fd_set readset; 9 Gpm_Event event; 10 Gpm_Connect conn; 11 12 conn.

&lt;Android&gt;监听软键盘打开收起事件(软键盘自带收起按钮)

最近在公司开发cocos2dx上的android输入框控件,遇到软键盘的事件监听,通常软键盘的收起方式大致3种: 1.点击软键盘右下角的Return按钮(系统收起) 2.输入框焦点时按返回按钮(系统收起) 3.点击软键盘和输入框的外部(自发收起) 4.点击软键盘自带的收起按钮(软键盘收起) 前三种事件可以监听,方式都比较简单 1.点击软键盘右下角的Return按钮 给输入框设置监听 editText.setOnEditorActionListener(new OnEditorActionList

求助 android监听事件 实现代码监听鼠标的左键,中间键,右键

============问题描述============ 在编写代码中能够实现监听的键盘和手机的home键等,但是我一直没有找到怎么去监听到数遍的三个键,左键.右键.中间键. ============解决方案1============ android是有鼠标的. 通常,设置你的 /system/usr/idc/<your touch panel>.idc文件中的 touch.deviceType = Pointer 就是鼠标了. 现在市面上已经卖了不少用android做的智能手机或dongle

Python - selenium_WebDriver 鼠标键盘事件

from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys from ReadTxt_demo import readTxt import time #鼠标键盘事件 ''' ActionChains 常用方法 per

监听鼠标滚轮(js+jq),xp系统下也OK

应项目需求,运用了监听滚轮的事件,发现在xp系统下使用jquery的mousewheel.js来做,会导致无论滚轮怎么滚,都只能向下滚...后面使用了原生js的,就可以了. jquery: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="widt

做UI最全的鼠标键盘事件!

在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是ActionChains类,在使用该类做键盘操作的过程中会配合使用到 Keys 数据存储类,Keys包含键盘上所有特殊按键. 一.鼠标点击操作 click(element=None)左击context_click(element=N