Q:

Переназначение боковых кнопок мыши(конфликт со стоковыми действиями)

Хочу написать прогу типа logitech options(переназначение клавиш) главной особенностью, которой будут жесты и возможность работы с любой мышкой.  
Пока писал в idle  использовал ctypes и боковую кнопки мыши, где они не задействованы и я мог добавлять свои действия.  А вот в chrome, мои действия также выполняются, но у них есть и стандартные действия назад/вперед, что сильно мешает мне!  Как я могу скрыть нажатия кнопок от других программ или заблокировать их действия? 
Какую библиотеку или функцию лучше использовать, чтобы это сделать? 
Я использую этот код чтобы отследить нажатие кнопок:
from ctypes import windll, Structure, c_ulong, byref, c_ushort
import time

LBUTTON = 0x01             # Left mouse button
RBUTTON = 0x02               # Right mouse button
middle = 0x04
MIDDLEDOWN = 0x0020 # middle button down 
MIDDLE_UP = 0x0040 # middle button up 
blignyy = 0x05 
dalnyy = 0x06 
x=1
while x<10:
    windll.user32.GetKeyState.restype = c_ushort
    windll.user32.UnregisterHotKey(LBUTTON)
    print(windll.user32.GetKeyState(LBUTTON))
    time.sleep(0.1)

Возможно мне нужно не отслеживать кнопки, а нужно перехватить её нажатие или поменять её идентификатор, я новичок, но я уже прошерстил весь гугл по запросам qtpy,tkinter,ctypes блокировка, переназначение , перехват и я нашел только как отключить мышь и клавиатуру полностью, что мне не подходит, тк я использую жесты!  Я в тупике(

A:

Предыстория
Нашел глобальный хук для питона тут , но появилось ощущение, что мышь лагает и двигается не плавно, поэтому я решил поискать решения на других языках.  AutoIT и библиотека mouseonevent.au3, было очень приятно познакомить, но появился баг после которого я терял возможно отправлять действия от нажатий, он возникал, когда я кликал по неактивным окнам.  Видел темы на Stack Overflow с решением моего вопроса на с++, но не смог его запустить из-за проблем со стандартной библиотекой. 
Решение
Остановился на языке С# с библиотекой LowLevelControls , она поддерживает все мои кнопки XButton1, XButton2, левую, правую, горизонтальную и вертикальную прокрутку.  Для блокировки стандартного отклика кнопок надо вернуть true!  Вот что я поменял в примере LowLevelControls. Sample2 для блокировки боковых кн: 
           msHook. MouseDownEvent += (sender, vkCode, x, y, delta, injected) =>
        {
            if ((Keys)vkCode == Keys. XButton1) return true;
            if ((Keys)vkCode == Keys. XButton2) return true;
            return false;
        };
        msHook. MouseUpEvent += (sender, vkCode, x, y, delta, injected) =>
        {
            if ((Keys)vkCode == Keys. XButton1) return true;
            if ((Keys)vkCode == Keys. XButton2) return true;
            return false;
        };

Проблемы и замечания

После нажатия левой кнопки мыши консолька и мышь начинают
виснуть, но так только при активной консоли. 
При блокировке перемещения курсора msHook. MouseMoveEvent
координаты мыши X и Y тоже блокируются, хотя на питоне, они менялись
не смотря на блокировку.  Забавно, что курсор можно сдвинуть, но
через мгновенье он вернётся на место!