Событие колеса прокрутки в X11

Я просмотрел все, и был потрясен, что не смог найти ничего по теме.

Я просто хочу иметь возможность захватывать события с помощью простого колеса прокрутки мыши.


c x11
person imallett    schedule 19.03.2013    source источник


Ответы (1)


Да, это невероятно запутанно. Это связано с тем, что X11 решил назначить события колеса прокрутки мыши кнопкам мыши 4 и 5. Получение событий колеса прокрутки аналогично получению событий нажатия кнопки мыши (события ButtonPress согласно /usr/include/X11/X.h). Также обратите внимание, что заголовочный файл определяет Button1..Button5. Кнопки 4 и 5 соответствуют «вверх» или «вниз» — возможно, не в том порядке, вам придется определить это опытным путем. В заголовочном файле никогда не упоминаются события колеса прокрутки.

К счастью, API более высокого уровня (например, GDK) явно предоставляют поддержку колеса прокрутки по имени.

person Multimedia Mike    schedule 19.03.2013
comment
Также нельзя сказать, что каждый «тик» колеса прокрутки будет генерировать события «Press» и «Release» сразу после друг друга. Вы можете спокойно игнорировать события Release для этих кнопок. - person JvO; 25.03.2013
comment
@MultimediaMike Итак, у меня наконец-то появилась возможность поработать над этим. Часть моей первоначальной проблемы раньше заключалась в том, что я не фиксировал правильные события. Два вопроса: указан ли объем прокрутки (или это просто несколько событий) и как выполняется горизонтальная прокрутка? - person imallett; 15.05.2014
comment
@imallet Чтобы обрабатывать горизонтальную прокрутку, вам нужно слушать кнопки 6 и 7, которые соответствуют левой и правой. - person matteodelabre; 15.01.2016
comment
@matteodelabre Хорошо. Экстраполируя значения Button(1|2|3|4|5), я думаю (поскольку они не определены), у них есть значения 6 и 7. - person imallett; 16.01.2016