Данное решение взято
отсюда.
<font color="#008000"><strong>from</strong></font> <font color="#0000FF"><strong>Xlib.display</strong></font> <font color="#008000"><strong>import</strong></font> Display<br/>
<font color="#008000"><strong>from</strong></font> <font color="#0000FF"><strong>Xlib</strong></font> <font color="#008000"><strong>import</strong></font> X<br/>
display <font color="#666666">=</font> Display(<font color="#BA2121">':0'</font>)<br/>
root <font color="#666666">=</font> display<font color="#666666">.</font>screen()<font color="#666666">.</font>root<br/>
root<font color="#666666">.</font>grab_pointer(<font color="#008000">True</font>, X<font color="#666666">.</font>ButtonPressMask <font color="#666666">|</font> X<font color="#666666">.</font>ButtonReleaseMask, X<font color="#666666">.</font>GrabModeAsync, X<font color="#666666">.</font>GrabModeAsync, <font color="#666666">0</font>, <font color="#666666">0</font>, X<font color="#666666">.</font>CurrentTime)<br/>
<font color="#008000"><strong>while</strong></font> <font color="#008000">True</font>:<br/>
<font color="#008000"><strong>print</strong></font> <font color="#BA2121">"Event:"</font><br/>
<font color="#008000"><strong>print</strong></font> display<font color="#666666">.</font>next_event()<br/>
Вот такая хрень вроде работает. Как она это делает? :)
Проблема в том, что виснет, падлюка… и пока насильно не завершишь программу(
exit()) — невозможно переключить окошко в другое, или выйти из этого… перехват нажатий мышки же осуществляет исправно, но делать ничего не позволяет, за пределами этого окна. Как избежать проблемы?
Аналогичная ситуация возникает, при добавлении клавиатуры посредством того, что написано
здесь — метода
grab_keyboard(), который заполняется параметрами по-аналогии с
grab_pointer(). Только с клавой получается ещё хуже — она после запуска скрипта не реагирует на нажатия вообще. Более того — окно терминала перестает реагировать на нажатие мышки. Приходится перезагружать комп.