Уведомления

Группа в Telegram: @pythonsu

#1 Июль 26, 2012 15:34:06

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Эмулирование мышки

Добрый день, подскажите, пожалуйста:
Зажата левая кнопка мыши. Если при этом зажать какую-либо кнопку (shift, например), то зажатая левая кнопка мыши начинает эмулироваться как зажатая средняя кнопка мыши. После отпускания shift мышка снова ведет себя как левая. Во время всего этого процесса левая кнопка мыши не отпускается
Заранее благодарю

Офлайн

#2 Июль 26, 2012 19:28:27

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Эмулирование мышки

Может быть есть хотя бы способ виртуально отпусть левую кнопку мыши при том, что реально кнопка все еще зажата?

Офлайн

#3 Июль 27, 2012 08:52:00

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Эмулирование мышки

Интересно, зачем это?

Для Windows будет примерно так

import win32api
import win32con
import time
 
 
def is_key_pressed(key):
    return win32api.GetAsyncKeyState(key) & 0x8000
 
 
is_button_changed = False
while True:
    if is_key_pressed(win32con.VK_SHIFT):
        if is_key_pressed(win32con.VK_LBUTTON):
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
            win32api.mouse_event(win32con.MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
            is_button_changed = True
    elif is_button_changed:
        win32api.mouse_event(win32con.MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
        is_button_changed = False
    time.sleep(0.05)
Здесь, когда шифт нажимается, зажата ли левая клавиша мыши не имеет значения, потому что отловить реальное состояние становиться невозможным, т.к. мы посылаем MOUSEEVENTF_LEFTUP.

Возможно, правильнее бы было как-то подписаться на сообщения или поставить хук, но я winapi не силен. Гляньте MSDN или на win форумах поспрашивайте.

Если это делается в своей программе с GUI, нужно посмотреть на возможности GUI библиотеки и сделать через нее.

Офлайн

#4 Июль 27, 2012 09:30:39

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Эмулирование мышки

reclosedev, спасибо. Это что бы кастомизировать комбинации мышь - клавиатура

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version