Найти - Пользователи
Полная версия: Эмулирование мышки
Начало » Python для новичков » Эмулирование мышки
1
napuznik
Добрый день, подскажите, пожалуйста:
Зажата левая кнопка мыши. Если при этом зажать какую-либо кнопку (shift, например), то зажатая левая кнопка мыши начинает эмулироваться как зажатая средняя кнопка мыши. После отпускания shift мышка снова ведет себя как левая. Во время всего этого процесса левая кнопка мыши не отпускается
Заранее благодарю
napuznik
Может быть есть хотя бы способ виртуально отпусть левую кнопку мыши при том, что реально кнопка все еще зажата?
reclosedev
Интересно, зачем это?

Для 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 библиотеки и сделать через нее.
napuznik
reclosedev, спасибо. Это что бы кастомизировать комбинации мышь - клавиатура
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB