У меня есть 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