LINUX.ORG.RU

Debian 9 + MATE 1.20 из бэкпортов: проблема с кнопками мыши

 , , ,


0

1

Добрый вечер!

Есть кто-то, кто пользуется Debian Testing и у кого есть мышь с нажимаемым колесом прокрутки? Прошу проверить выхлоп командой (значение button):

xev | grep ', button'

1) при нажатии на колесо;
2) отдельно при одновременном нажатии левой и правой кнопки мыши.

Возможно, надо будет доустановить x11-utils (если еще не установлен).

У меня почему-то после апгрейда MATE с 1.16 до 1.20 из бэкпортов в Debian Stretch эти события теперь обрабатываются как одно, то бишь как button 2, чего быть не должно в принципе.

Спасибо.


UPDATE:

Теперь Debian рулит этим всем через libinput. Есть кое-что в рассылке (только в моем случае надо было, наоборот, отключить эмуляцию кнопок) и в багтрекере.

Нашел решение через .xsessionrc:

xinput --set-prop DEVICE_ID "libinput Middle Emulation Enabled" 0

где DEVICE_ID - ваш девайс, узнать можно командой xinput.

★★★★★

1) при нажатии на колесо;

2) отдельно при одновременном нажатии левой и правой кнопки мыши.

У меня почему-то после апгрейда MATE с 1.16 до 1.20 из бэкпортов в Debian Stretch эти события теперь обрабатываются как одно, то бишь как button 2, чего быть не должно в принципе.

Не понял. Они и должны быть как одно, если у тебя включена опция Option "Emulate3Buttons" "true". Глянь логи иксов.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)

Но если у тебя libinput драйвер. (реньше в 1.16 мог быть evdev по умолчанию, а теперь может libinput), то там опция другая. и она может быть по умолчанию включена.

 Option "MiddleEmulation" "bool"

    Enables middle button emulation. When enabled, pressing the 
left and right buttons simultaneously produces a middle mouse 
button click
Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Не понял. Они и должны быть как одно, если у тебя включена опция Option «Emulate3Buttons» «true».

В Jessie (там вроде за это отвечал synaptics) и в Stretch (libinput), но ДО апгрейда MATE из бэкпортов все было нормально и события обрабатывались как ДВА разных:

левая кнопка - button 1
правая кнопка - button 3
нажатие на колесо - button 2
левая+правая одновременно - выдавало подряд button 1 and button 3

Теперь это так:

левая кнопка - button 1
правая кнопка - button 3
нажатие на колесо - button 2
левая+правая одновременно - button 2

И да, у меня опции Option "Emulate3Buttons" "true" и Option "MiddleEmulation" "bool" нигде не прописаны. Надо прописать теперь? И где? В xorg.conf?

Gonzo ★★★★★ ()
Ответ на: комментарий от Zubok

Нашел решение через .xsessionrc:

xinput --set-prop 8 "libinput Middle Emulation Enabled" 0

Просто был сбит с толку дефолтным поведением после апгрейда. Думал, что-то сломали. Хотя, может, и сломали... :)

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Решение - это в xorg.conf прописать надо тогда для данного устройства. Но только я пока не понимаю, какое умолчание у libinput. У меня сейчас evdev еще. И у него умолчание как раз без эмуляции - я ее специально в конфиге включал.

 Option «Emulate3Buttons» «boolean»
              Enable/disable  the emulation of the third (middle) mouse button
              for mice which only have two physical buttons.  The third button
              is  emulated  by pressing both buttons simultaneously.  Default:
              off. Property: «Evdev Middle Button Emulation».

Zubok ★★★★★ ()
Ответ на: комментарий от Gonzo

В логе ничего не вижу, но и в man не вижу, какое умолчание. Не написано. Странно:

 Option "MiddleEmulation" "bool"
              Enables  middle button emulation. When enabled, pressing the left and right buttons
              simultaneously produces a middle mouse button click.
Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Ясно, ну и фиг с ним. Не могу понять только, почему эмуляция была включена. Это может дезориентировать новичка-геймера, который не сможет рокет-джампить в Openarena разве что :) Других применений одновременного нажатия обеих кнопок мыши я не знаю.

Gonzo ★★★★★ ()
Ответ на: комментарий от Zubok

Значит, в драйвере libinput эта опция по умолчанию включена

Так в том-то и дело, что у меня этот libinput и был. Это же Stretch. Я просто обновил MATE из бэкпортов. И в логах APT ничего нет тоже. Короче, мистика.

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Сложная логика какая-то у этой libinput.

https://wayland.freedesktop.org/libinput/doc/1.8.1//middle_button_emulation.html

Это же Stretch.

У меня вот тоже Stretch, но я использую evdev. Ты это помнишь или так просто думаешь? Обновление с 1.16 на 1.20 (это версия X-сервера?) - это весьма мощное обновление, чтобы ожидать, что все будет по-старому.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Ты это помнишь или так просто думаешь?

Я это просто прочитал, а также достаточно выхлопа xinput list-props DEVICE_ID, чтобы увидеть.

P.S. Поискав в инете, я нашел еще упоминания об этой эмуляции в рассылке и в багтрекере.

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Но там больше написано про переход с evdev на libinput. Я глянул - у меня драйвер явно прописан, поэтому используется evdev. А вот ситуация, когда при обновлении ломается умолчание, тут надо глянуть, с какой на какую версию обновилось. И чейнжлог глянуть. Еще есть системные правила - они лежат в /usr/share/X11/xorg.conf.d.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

у меня драйвер явно прописан, поэтому используется evdev

Понятно. У меня чистый Stretch, с нуля ставил.

Еще есть системные правила - они лежат в /usr/share/X11/xorg.conf.d

Там ничего особенного: выкинули synaptics, положили 40-libinput.conf.

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Там ничего особенного: выкинули synaptics, положили 40-libinput.conf.

Ну, значит, логику поменяли для этой функции. Я так понимаю, что речь идет не о мышке, а о тачпеде на ноуте? Вон выше по ссылке что-то невнятное написано. Может, это от правил udev еще зависит, что он выставляет. Эти правила притаскивает пакет libinput-bin. Погрепай там правила. xx-libinput... В /lib/udev/rules.d

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

На досуге поковыряюсь, может. А пока решил через .xsessionrc. Работает и слава яйцам :)

Я так понимаю, что речь идет не о мышке, а о тачпеде на ноуте?

У меня? Нет, обычная геймерская мышь Logitech M318e.

Gonzo ★★★★★ ()
Последнее исправление: Gonzo (всего исправлений: 1)
Ответ на: комментарий от Gonzo

На досуге поковыряюсь, может. А пока решил через .xsessionrc. Работает и слава яйцам :)

Лучше в xorg.conf

Section "InputClass"
        Identifier "Logitech M318e"
        MatchIsPointer "on"
        Driver "libinput"
        Option "MiddleEmulation" "off"
EndSection

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Gonzo

А точно «off»? Ты в первом коменте писал: Option «MiddleEmulation» «bool»

Это копипаст из man. Свойство типа «bool». В иксах оно принимает значения либо «true»/«on»/«yes» либо «false»/«off»/«no». Еще можно добавить поля в правило, чтобы уточнить устройство. Например, имя или USBID. Какие поля есть, можно найти в man xorg.conf в разделе секции InputClass.

А то он будет это правило на все поинтеры (хотя не у всех есть такие кнопки и правило будет неприменимо),

Section "InputClass"
        Identifier "Logitech M318e"
        MatchIsPointer "on"
        MatchIsProduct "Logitech USB Laser Mouse"
        Driver "libinput"
        Option "MiddleEmulation" "off"
EndSection
Zubok ★★★★★ ()
Ответ на: комментарий от Gonzo

Угу, но, конечно, странно. Если судить по Все как-то нечетко написано, но мне кажется, что где-то либо изменение логики либо просто ошибка. Из ссылки выше я могу судить, что для мышки, на которой обнаружена физическая кнопка 2, эмуляция не должна по умолчанию включаться:

Some devices provide middle mouse button emulation but do not allow enabling/disabling that emulation. Likewise, some devices may allow middle button emulation but have it disabled by default. This is the case for most mouse-like devices where a middle button is detected.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Кажется, где-то таки баг, только не могу понять, какой пакет виноват в этом :(

После перезагрузки эмуляция снова включена:

xinput list-props 8
libinput Middle Emulation Enabled (291):   1

И вот следующая строка из выхлопа тоже смущает:

libinput Middle Emulation Enabled Default (292):   0

Выходит, что .xsessionrc теперь в игноре у системы. Ппц какой-то...

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

libinput Middle Emulation Enabled (291): 1

Может быть, у тебя кто-то включает эту эмуляцию еще? Погляди внимательно в MATE в настройках мышей и пр. Может, какая-то галка стоит и после загрузки иксов все переконфигурируется. Default он все-таки пишет, что выключен, что, в общем-то верно, но вот где-то включается.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Никаких галок, есть тулза с настройками, но там только скорость и чувстительность. Вот лог иксов. Есть какая-то ошибка.

А куда оно положено? В какой файл?

/etc/X11/xorg.conf

Gonzo ★★★★★ ()
Последнее исправление: Gonzo (всего исправлений: 1)
Ответ на: комментарий от Gonzo

Очень странно. В старом логе выше такого не было.

[  2596.684] (II) failed to create input device '/dev/input/mouse0'.
[  2596.684] (EE) libinput: Logitech USB Laser Mouse: Failed to create a device for /dev/input/mouse0
[  2596.684] (EE) PreInit returned 2 for "Logitech USB Laser Mouse"

Аналогичное, кстати.

https://bugs.freedesktop.org/show_bug.cgi?id=97928

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Gonzo

/etc/X11/xorg.conf

Лог показывает, что правило он видит и прикладывает после системного. То есть вроде все правильно. Где-то он снова после всего переинициализирует мышь. Вообще, все правила InputClass всегда выполняются, когда устройство динамически появляется. То есть они не только на стадии загрузки работают, но и динамически.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Не было, да. Только после того, как добавил в xorg.conf эти строчки.

Тоже нашел этот баг, но у меня другие версии библиотек: libinput 1.6.3, xserver-xorg-input-libinput 0.23.

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Ну как бы не важно. Патчи приложили в 2016 году, они могли не войти в stable. Это надо проверять. Но вот еще вариант есть: попробовать вместо libinput - evdev. Посмотри, там что? Тогда такое правило напиши для своей мышки. Ну и драйвер сам поставь.

Section "InputClass"
        Identifier "Logitech M318e"
        MatchIsPointer "on"
        Driver "evdev"
EndSection
Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Gonzo

Не было, да. Только после того, как добавил в xorg.conf эти строчки.

Ну судя по описанию в баге, как раз проблема при переконфигурации, а правило как раз ее и делает. Иначе никак. xinput делает то же самое. И тоже обламывается. Значит, баг. Умолчание, кстати, правильное, но тогда не ясно, ктоже без правил и xinput включает эмуляцию.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Gonzo

Никаких галок, есть тулза с настройками, но там только скорость и чувстительность.

Но это, в общем-то, не значит, что тулза при старте сессии ничего с мышью не делает. Хотя в логе я не вижу на это намеков, но и не факт, что там это должно отобразиться. Ее можно как-нибудь тормознуть, чтобы она вообще ничего не настраивала? То есть выключить или из автостарта прочь на время.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Gonzo

Нет, это просто часть DE, она не стартует нигде явно.

ок, я не буду искать тогда по этой теме ничего. Тогда попробуй просто без DE зайти. Типа startx или каким-нибудь оконным менеджером. И проверь, как сконфигурирована мышь без xorg.conf и с ним.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

ок, я не буду искать тогда по этой теме ничего.

Нет, не удержался. Смотри, там есть какая-то настройка в gsettings.

https://forums.linuxmint.com/viewtopic.php?t=269950

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Блин, бро! Ты сделал мой день и избавил от страданий. Теперь все стало на свои места. Попрошу на гитхабе убрать этот дефолт, может, учтут :)

Спасибо.

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Лучше попросить, чтобы читалось и выставлялось значение из драйвера. А лучше, чтобы по умолчанию эта настройка неопределена вообще и не пыталась вообще трогать эмуляцию без настоятельной просьбы, то есть чтобы было три значения true/false/system settings. Потому что в драйвере есть своя логика выставления этого свойства, как написано в документации, и для одних устройств это свойство включается автоматом, а для других выключается, поэтому просить принудительно выключить тоже не совсем правильно.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

true/false/system settings

Такому не бывать в MATE точно. Придется всю логику переписывать. Это же GTK, там либо true, либо false. Кто-то попросил фичу с этой эмуляцией, они ее и добавили. Бог с ними, может, кому-то это тоже нужно. В моем случае, наоборот. Проще попросить ее не включать по дефолту. Да и если она будет отключена, система сможет рулить по-своему, если надо (через libinput или еще что-либо).

Gonzo ★★★★★ ()
Ответ на: комментарий от Gonzo

Не совсем понимаю, а при чем тут GTK? Настройка сугубо из «реестра» (?) MATE, а не GTK. Нет никаких проблем сделать свойство не типа boolean, а integer: 0 - умолчание (пользователь ничего не конфигурировал, свойство не трогаем, используются настройки системы), 1 - on (принудительный), 2 - off (принудительный). Вообще, такую схему надо для всех свойств.

Придется всю логику переписывать.

Ну разумеется надо будет дописать чуть-чуть, но уж всю логику — это вряд ли. Просто с самого начала сделано не совсем верно: во-первых, сделали скрытое свойство; во-вторых, принудительно выставили в какое-то фиксированное значение, которое не всех устроит. Что получили? Получили кучу spurious bugreports, которых можно было избежать.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

А что такое MATE? Это и есть GTK.

Получили кучу spurious bugreports, которых можно было избежать.

Тут я всеми лапами «за». Ну, я свое дело сделал (не без твоей помощи, разумеется), запостил на гитхабе в issues. Псмотрим, может поменяют что-то.

Gonzo ★★★★★ ()
Последнее исправление: Gonzo (всего исправлений: 2)