Привет.

Может, кто тут разбирается, и даст умный совет?

Есть девайс.  Мышка (надевается на палец, но это не суть) с двумя
кнопками.  USB, ноутбук, т.е. она в него воткнута существенно не всегда.
Я хочу на ней (и именно на ней, и без залезания в отсутствующий у меня в
системе за ненадобностью xorg.conf) при ее втыкании включать эмуляцию
средней кнопки.

Я умею: сказать 

$ xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [slave  pointer  (2)]
⎜   ↳  USB OPTICAL MOUSE                        id=10   [slave  pointer  (2)]
...
(ну, клавиатура неинтересна)

и на основании этой информации

$ xinput --set-prop 10 'Evdev Middle Button Emulation' 1

и мне не сложно заскриптовать комбинацию.  Хотя называется она, конечно,
офигительно информативно, блин.  Но хочется это делать при втыкании, а
не непонятно когда.  А вот как правильно обнаружить втыкание?
Предупреждаю сразу: исходя из того, что оно мне надо в иксах, вариант
udev-правила получается кривым, поскольку xinput запускается, вообще
говоря, на одном хосте, а мышка втыкается в другой.  Впрочем, если в
этой ситуации Xinput extension отваливается сам по себе, то этот вопрос
отпадает.  Но чисто по логике-то не с чего, это все же не shared memory.
Раз сам X-сервер втыкание определяет, то где-то оно у него должно бы
появляться-то...

Но на худой конец сойдет и решение, где терминал и сессия на одном
хосте.  Нет, я даже могу придумать схему в духе "udev кидает событие в
dbus, скрипт его ждет, и если видит, то дергает xinput", но как-то это
кривовато, очень хочется верить, что существует какой-то более прямой
путь получить нужную информацию, непосредственно из X-сервера.  Однако,
сходу не удалось задать гуглу правильный вопрос.

Я даже выяснил методом Мана и Тыка, что можно попросить xinput слушать
Core Pointer, и из его вывода отфильтровать добавление девайса, но более
избирательно в нем не предусмотрено, а вывода там - на каждое движение
мышки.  Это, прямо скажем, перебор.  И кроме того, xinput для этого окно
создает, хотя, в отличие от xev, реагирует на движения мышки и вне этого
окна.

Нет, опять же, отсюда понятно, что можно взять библиотеку, почитать
хедера, документацию на расширение я как раз сумел нагуглить, и вперед.
Но может, этот велосипед уже изобрели?


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/87k3c8tp1w....@wizzle.ran.pp.ru

Ответить