Рейтинг:3

Средняя кнопка мыши вставляется даже после прокрутки с помощью TrackPoint (на беспроводной клавиатуре Lenovo TrackPoint II)

флаг uy

У меня есть Thinkpad X250 под управлением Linux Mint 20.1 Cinnamon (5.4.0-74-универсальный).
Я недавно купил Lenovo ThinkPad Trackpoint Wireless II клавиатуры, и я приятно удивлен тем, насколько хорошо все работает при использовании соединения Bluetooth. (есть также альтернативный проприетарный USB-донгл, который поставляется вместе с ним).

Раньше я использовал среднюю кнопку мыши («кнопка 2») для копирования/вставки (X «основной») и для прокрутки, удерживая ее нажатой, а затем перемещая TrackPoint.

Но с новой клавиатурой основной буфер вставляется, даже если я только что выполнил прокрутку.
Итак, я потратил несколько дней, выясняя, в чем разница между встроенной мышью/TrackPoint и новой беспроводной, но сейчас я как бы застрял.

Поведение «хорошего» встроенного X250 TrackPoint

Согласно xinput, встроенное устройство называется «TPPS/2 IBM TrackPoint».
Когда я бегу xinput тест, я вижу, что нажатие средней кнопки не появляется сразу.
Теперь, когда я отпускаю кнопку, я получаю «нажатие кнопки 2» и «отпускание кнопки 2», следующие друг за другом.
Если я перемещаю TrackPoint, удерживая кнопку, ее отпускание не вызывает никаких действий «кнопки 2».
(Из-за движения TrackPoint происходит несколько действий «движение» и «нажатие/отпускание кнопки [4-7]»).

Проблема с беспроводной клавиатурой

Часть Bluetooth-клавиатуры, связанная с мышью/трекпойнтом, отображается как «TrackPoint Keyboard II Mouse».
Сравнивая «xinput list-props» с двумя устройствами, единственная разница заключается в методе прокрутки:

Беспроводная связь:

Включен метод прокрутки libinput (316): 0, 0, 0
Метод прокрутки libinput включен По умолчанию (317): 0, 0, 0

Встроенный:

Метод прокрутки libinput включен (316): 0, 0, 1
Метод прокрутки libinput включен По умолчанию (317): 0, 0, 1

Хотя по какой-то причине (см. ниже) мне не удалось изменить свойство «libinput Scroll Method Enabled Default (317)», я попробовал обе настройки для «libinput Scroll Method Enabled (316)».
Если я правильно понял документацию, эти три значения выбирают метод прокрутки и соответствуют прокрутке «два пальца», «край» и «кнопка».
https://wayland.freedesktop.org/libinput/doc/latest/scrolling.html#scrolling

Результат xinput тест следующие:
С включенным методом прокрутки свойства libinput (316): 0, 0, 0 (по умолчанию):
Нажатие средней кнопки мыши немедленно вызывает «нажатие кнопки 2» и вставляет первичный буфер.
Теперь я могу перемещать TrackPoint (вызывая некоторые действия «движение» и «нажатие/отпускание кнопки [4-7]»), и как только я отпускаю кнопку, я вижу «отпускание кнопки 2».

С включенным методом прокрутки свойства libinput (316): 0, 0, 1:
Нажатие средней кнопки мыши не отображается сразу.
Но независимо от того, перемещаю ли я TrackPoint или нет, как только я отпускаю кнопку, это вызывает как «нажатие кнопки 2», так и «отпускание кнопки 2» сразу после друг друга, последнее, по-видимому, запускает действие вставки.

В любом случае, отладочные события libinput немедленно показывает кнопку/данные TrackPoint.

Также на задней панели клавиатуры есть зловещий переключатель «Windows/Android».
Это ничего не меняет. (Я думаю, что это только меняет поведение специальных функциональных клавиш)

Как упоминалось выше, вместо этого клавиатура предлагает подключиться с помощью USB-ключа. Здесь поведение немного отличается, но оно по-прежнему вставляется даже при прокрутке:

Включен метод прокрутки libinput (316): 0, 0, 0
«Нажатие кнопки 2» (и буфер вставлен) появляется сразу после нажатия кнопки.
«Отпускание кнопки 2» появляется, как только TrackPoint перемещается или отпускается кнопка.

Метод прокрутки libinput включен (316): 0, 0, 1
При нажатии кнопки ничего не происходит.
«нажатие кнопки 2», «отпускание кнопки 2» и буферная вставка происходят сразу друг за другом, как только TrackPoint перемещается или кнопка отпускается.

Надеюсь, я смог понятно объяснить проблему. Я не уверен, что делать дальше. Мой файл /usr/share/X11/xorg.conf.d/40-libinput.conf остался нетронутым и, похоже, просто подключает драйвер «libinput» к любым устройствам (см. ниже).

С отладочные события libinput показывает все аппаратные данные в режиме реального времени, я не думаю, что виновата клавиатура или BlueZ.
Но опять же я не знаю, где и как так по-разному обрабатываются данные с беспроводной клавиатуры и со встроенного устройства.
Существуют ли какие-либо другие возможности отладки, кроме libinput и xinput?\

Большое спасибо за вашу помощь!

$ xinput list-props "Мышь TrackPoint Keyboard II"
Устройство «Мышь TrackPoint Keyboard II»:
    Устройство включено (165): 1
    Матрица преобразования координат (167): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Включена естественная прокрутка (311): 0
    libinput Естественная прокрутка включена По умолчанию (312): 0
    Доступные методы прокрутки libinput (315): 0, 0, 1
    Включен метод прокрутки libinput (316): 0, 0, 0
    Метод прокрутки libinput включен По умолчанию (317): 0, 0, 0
    Кнопка libinput Кнопка прокрутки (329): 2
    Кнопка libinput Кнопка прокрутки По умолчанию (330): 2
    Эмуляция середины libinput включена (321): 0
    Эмуляция середины libinput включена По умолчанию (322): 0
    libinput Скорость ускорения (323): 0,000000
    libinput Скорость ускорения по умолчанию (324): 0,000000
    Доступные профили ускорения libinput (331): 1, 1
    libinput Accel Profile Enabled (332): 1, 0
    libinput Accel Profile Enabled По умолчанию (333): 1, 0
    libinput Левая рука включена (325): 0
    libinput Left Handed Enabled По умолчанию (326): 0
    Доступные режимы отправки событий libinput (288): 1, 0
    libinput Режим отправки событий включен (289): 0, 0
    libinput Режим отправки событий включен По умолчанию (290): 0, 0
    Узел устройства (291): "/dev/input/event23"
    Идентификатор продукта устройства (292): 6127, 24801
    libinput Кнопки блокировки перетаскивания (327): <нет элементов>
    libinput Горизонтальная прокрутка включена (328): 1

$ xinput list-props "TPPS/2 IBM TrackPoint"
Устройство «TPPS/2 IBM TrackPoint»:
    Устройство включено (165): 1
    Матрица преобразования координат (167): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Включена естественная прокрутка (311): 0
    libinput Естественная прокрутка включена По умолчанию (312): 0
    Доступные методы прокрутки libinput (315): 0, 0, 1
    Метод прокрутки libinput включен (316): 0, 0, 1
    Метод прокрутки libinput включен По умолчанию (317): 0, 0, 1
    Кнопка libinput Кнопка прокрутки (329): 2
    Кнопка libinput Кнопка прокрутки По умолчанию (330): 2
    Эмуляция середины libinput включена (321): 0
    Эмуляция середины libinput включена По умолчанию (322): 0
    libinput Скорость ускорения (323): 0,000000
    libinput Скорость ускорения по умолчанию (324): 0,000000
    Доступные профили ускорения libinput (331): 1, 1
    libinput Accel Profile Enabled (332): 1, 0
    libinput Accel Profile Enabled По умолчанию (333): 1, 0
    libinput Левая рука включена (325): 0
    libinput Left Handed Enabled По умолчанию (326): 0
    Доступные режимы отправки событий libinput (288): 1, 0
    libinput Режим отправки событий включен (289): 0, 0
    libinput Режим отправки событий включен По умолчанию (290): 0, 0
    Узел устройства (291): "/dev/input/event17"
    Идентификатор продукта устройства (292): 2, 10
    libinput Кнопки блокировки перетаскивания (327): <нет элементов>
    libinput Горизонтальная прокрутка включена (328): 1

$xinput
○ Виртуальный указатель ядра id=2 [мастер-указатель (3)]
✓ ✓ Указатель XTEST виртуального ядра с идентификатором = 4 [ведомый указатель (2)]
â â³ Synaptics TM3075-002 id=12 [ведомый указатель (2)]
â â³ TPPS/2 IBM TrackPoint id=13 [ведомый указатель (2)]
❏ ❏ TrackPoint Keyboard II Mouse id = 19 [ведомый указатель (2)]
â â³ TrackPoint Keyboard II Consumer Control id=22 [ведомый указатель (2)]
✓ Идентификатор виртуальной основной клавиатуры = 3 [основная клавиатура (2)]
    ✓ Идентификатор виртуальной основной клавиатуры XTEST = 5 [ведомая клавиатура (3)]
    ★Кнопка питания с идентификатором = 6 [ведомая клавиатура (3)]
    ★ Видеошина с идентификатором = 7 [ведомая клавиатура (3)]
    ★Кнопка сна с идентификатором = 8 [ведомая клавиатура (3)]
    ➤ AT Translated Set 2 keyboard id = 10 [ведомая клавиатура (3)]
    ➤ ThinkPad Extra Buttons id = 11 [ведомая клавиатура (3)]
    ✓ Встроенная камера: Встроенный C id=9 [ведомая клавиатура (3)]
    ✓ Веб-камера HD C525 id=14 [ведомая клавиатура (3)]
    ✓ Идентификатор клавиатуры TrackPoint Keyboard II = 20 [ведомая клавиатура (3)]
    ➢ TrackPoint Keyboard II System Control id=21 [ведомая клавиатура (3)]
    ➢ TrackPoint Keyboard II Consumer Control id=23 [ведомая клавиатура (3)]

$ cat /usr/share/X11/xorg.conf.d/40-libinput.conf 
# Подходит для всех типов устройств, кроме джойстиков
#
# Если вы хотите настроить свои устройства, не копируйте этот файл.
# Вместо этого используйте фрагмент конфигурации, который содержит что-то вроде этого:
#
# Раздел "InputClass"
# Идентификатор "что-то или другое"
# MatchDriver "libinput"
#
# MatchIsTouchpad "включен"
# ... другие директивы Match ...
# Опция "someoption" "значение"
# Конечная секция
#
# Это относится к опции любое устройство libinput, также совпадающее с другим
# директивы. См. справочную страницу xorg.conf(5) для получения дополнительной информации о
# соответствующие устройства.

Раздел "Входной класс"
        Идентификатор "улавливатель указателя libinput"
        MatchIsPointer "включен"
        MatchDevicePath "/dev/input/event*"
        Драйвер "libinput"
EndSection

Раздел "Входной класс"
        Идентификатор "libinput keyboard catchall"
        MatchIsKeyboard включено
        MatchDevicePath "/dev/input/event*"
        Драйвер "libinput"
EndSection

Раздел "Входной класс"
        Идентификатор "libinput touchpad catchall"
        MatchIsTouchpad "включен"
        MatchDevicePath "/dev/input/event*"
        Драйвер "libinput"
EndSection

Раздел "Входной класс"
        Идентификатор "libinput touchscreen catchall"
        MatchIsTouchscreen "включен"
        MatchDevicePath "/dev/input/event*"
        Драйвер "libinput"
EndSection

Раздел "Входной класс"
        Идентификатор "libinput table catchall"
        MatchIsTablet "включен"
        MatchDevicePath "/dev/input/event*"
        Драйвер "libinput"
EndSection

$ sudo libinput list-devices | grep -A 17 "TPPS"
Устройство: TPPS/2 IBM TrackPoint
Ядро: /dev/input/event17
Группа: 14
Место: место 0, по умолчанию
Возможности: указатель 
Нажмите, чтобы щелкнуть: н/д
Коснитесь и перетащите: н/д
Блокировка коснитесь перетаскивания: нет данных
Левша: отключен
Нат.прокрутка: отключена
Эмуляция середины: отключена
Калибровка: нет данных
Способы прокрутки: *кнопка
Методы клика: нет
Disable-w-typing: н/д
Профили ускорения: плоские * адаптивные
Вращение: нет данных

$ sudo libinput list-devices | grep -A 17 "Мышь TrackPoint Keyboard II"
Устройство: Мышь TrackPoint Keyboard II
Ядро: /dev/input/event23
Группа: 15
Место: место 0, по умолчанию
Возможности: указатель 
Нажмите, чтобы щелкнуть: н/д
Коснитесь и перетащите: н/д
Блокировка коснитесь перетаскивания: нет данных
Левша: отключен
Нат.прокрутка: отключена
Эмуляция середины: отключена
Калибровка: нет данных
Методы прокрутки: кнопка
Методы клика: нет
Disable-w-typing: н/д
Профили ускорения: плоские * адаптивные
Вращение: нет данных

$ xinput set-prop "Мышь TrackPoint Keyboard II" 317 0, 0, 1
X Ошибка неудачного запроса: BadAccess (попытка доступа к частному ресурсу запрещена)
  Основной код операции неудачного запроса: 131 (XInputExtension)
  Второстепенный код операции неудачного запроса: 57 ()
  Серийный номер неудачного запроса: 20
  Текущий серийный номер в выходном потоке: 21
user3188445 avatar
флаг nl
У меня две блютуз-клавиатуры. Старая клавиатура работает нормально, а та, которую я только что купил, демонстрирует раздражающее поведение, которое вы описываете. Обратите внимание, что это две одинаковые клавиатуры. У меня также есть Bluetooth-клавиатура более старой модели (без ключа или переключателя Android), и прокрутка на ней тоже работает нормально. Хотел бы я знать, как обойти эту проблему.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.