Тачпад. Как отучить дергать курсором во время печати. (Краткий гайд.)

Любое устройство не попавшее под категории выше - сюда.
Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Версия ОС вместе с разрядностью. Пример: LM 18.1 x64, LM Sarah x32 2. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 3. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 4. Суть. Желательно с выводом консоли, логами. 5. Скрин. Просьба указывать 1, 2 и 3 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
slant
Сообщения: 1928
Зарегистрирован: 21 июн 2017, 15:09
Решено: 33
Благодарил (а): 15 раз
Поблагодарили: 836 раз

Тачпад. Как отучить дергать курсором во время печати. (Краткий гайд.)

Сообщение slant » 16 сен 2019, 14:04

Наверное многие из тех кто на ноутбуках регулярно работают, сталкивались с бесячим поведением курсора, когда в процессе печати вы слегка задевали тачпад и тем самым сбивали фокус ввода. А то и выделяли печатаемый текст с последующим удалением. Руки то у все разные, не всегда получается при печати тачпад не цеплять.

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

В XFCE запуск этого демона автоматизируется через настройки мыши и тачпадов (соответствующая иконка в панели управления) Вот только есть маленький нюанс - опции там довольно урезанные, а главное - на некоторых моделях ноутбуков оно не работает по умолчанию. Потому - гайд с упором на консоль и ручной запуск.

Итак, за саму фичу отвечает syndaemon - подробности можно посмотреть в man syndaemon, а для примера: syndaemon -i 0.8 -k -d запустит программу в режиме демона, с задержкой активации тачпада 0.8 секунды после нажатия последней клавиши. И игнорированием клавиш командных модификаторов (CTRL, Alt и т.д. не будут вызывать блокировку тачпада сами по себе.)

И все бы хорошо и просто, да вот беда - не на всех ноутбуках оно работает сразу. Причем в интернете народ в основном шаманит перестановками пакетов относящихся к иксам, у некоторых даже начинает в результате работать, а причину найти не могут. А ларчик между тем открывается довольно просто, по крайней мере в части случаев.
В некоторых ноутбуках, например как в попавшем мне под руку Dell Insprion 15 3573 - тачпад видится системой как ДВА устройства. А syndaemon как и многие другие программы пытается взаимодействовать с первым из списка. Решение простое - надо заблокировать второе устройство, чтобы иксы его игнорировали. И все заработает. Делаем так:

xinput
На вышеозначенном ноутбуке получаем вот такую картину:

Код: Выделить всё

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Cypress PS/2 to USB Adapter               id=10   [slave  pointer  (2)]
⎜   ↳ DELL083E:00 04F3:3088 Touchpad            id=12   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=16   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Cypress PS/2 to USB Adapter               id=9    [slave  keyboard (3)]
    ↳ Integrated Webcam: Integrated W           id=11   [slave  keyboard (3)]
    ↳ Intel HID events                          id=13   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=15   [slave  keyboard (3)]
Как видите: имеем DELL083E:00 04F3:3088 Touchpad и ETPS/2 Elantech Touchpad. В данном ноутбуке рабочий для иксов - первый. Второй, который ETPS/2 Elantech Touchpad - лишний, и ломает нам всю малину. Будем отключать. (На другой машине нужный вариант придется искать экспериментальным методом, благо откатывается все легко, а худшее что может случится - до отката не будет работать тачпад. При наличии внешней мыши - никаких проблем вообще.)

Проще всего, IMHO, это сделать так:
создаем каталог /etc/X11/xorg.conf.d, а в нем файл /etc/X11/xorg.conf.d/11-disable-second-pad.conf.

Пишем в файл такое содержимое:

Код: Выделить всё

Section "InputClass"
        Identifier "ETPS/2 Elantech Touchpad blacklist"
        MatchProduct "ETPS/2 Elantech Touchpad"
        Option "Ignore" "on"
EndSection
Identifer - может быть любой, это просто метка.
А вот в MatchProduct надо вписать название ненужного нам второго устройства, которое мы получили из xinput.
После чего перегружаем иксы и радуемся - syndaemon должен нормально работать, как и настройка оного в XFCE.

Вернуться в «Прочие устройства»