Ваше окно X должно поддерживать расширение XInput.Real X работает, но переход к кнопке мыши не работает, если X-сервер не поддерживает такое расширение, как VNC-сервер.
Если X-сервер поддерживает его, вы можете перейти в состояние мыши следующим образом:
from Xlib.display import Display
from Xlib.ext import xinput
display = Display()
import time
while True:
buttons = []
for device_info in display.xinput_query_device(xinput.AllDevices).devices:
if not device_info.enabled:
continue
if xinput.ButtonClass not in [ device_class.type for device_class in device_info.classes ]:
continue
buttons.append(device_info)
for button in buttons:
for device_class in button.classes:
if xinput.ButtonClass == device_class.type:
if device_class.state[0]:
print('Device {name} - Primary button down'.format(name=button.name))
time.sleep(1)
Я не уверен на 100%, поскольку документы нигде не найдены, но я почти уверен, что device_class.state [0] является основным (левая кнопка), 1 - средним, а 2 -правая кнопка.
Вы, вероятно, можете узнать спецификацию назначения номера кнопки здесь
РЕДАКТИРОВАТЬ:
Почему есть два цикла for - Сначала я написалчасть «кнопок» за пределами вечной петли.Но, «эй, вы можете подключить мышь в любое время».
Вы обнаружите, что есть много устройств, включая «виртуальные».На ноутбуке тачпад также работает как кнопка, поэтому в вашем приложении, если вы хотите узнать настоящие кнопки мыши, вам, возможно, придется выбрать устройство по названию.Опять же, нет хороших документов, поэтому вам, вероятно, придется расшифровать объект класса устройства.Вы можете найти xinput как /usr/lib/python3/dist-packages/Xlib/ext/xinput.py.(Отрегулируйте его соответствующим образом, если вы используете Python2.) Удачи.