Есть ли способ "перезапустить" драйвер тачпада?

Я использую Ubuntu 14.04 на ноутбуке, обычно с подключенной внешней USB-мышью, клавиатурой и экраном. Однако иногда я отключаю их все от компьютера и перемещаю ноутбук, продолжая использовать его со встроенной клавиатурой, экраном и сенсорной панелью.

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

Могу ли я попробовать какой-нибудь обходной путь, например, убить какой-нибудь процесс, который автоматически перезапустится, или команду, которая заставит драйвер сенсорной панели перезапуститься или обновить или что-то еще? Что-нибудь, что может "разбудить" тачпад без перезагрузки?

14 ответов

Решение

У меня неоднократно возникала эта проблема с одним ноутбуком, пока я не заметил, что у сенсорной панели этого компьютера есть собственный выключатель, который я случайно нажал. Примечательно, что переключатель не помог включить его снова. Я просто стал осторожнее, чтобы не нажимать на нее, и вскоре я начал использовать внешнюю беспроводную клавиатуру со встроенной беспроводной сенсорной панелью, и с тех пор у меня такой проблемы не было.

ОБНОВЛЕНИЕ: (Примечание: ссылка ниже не работает, решение - выше) С момента публикации этого "решения" я разместил комментарий, который, очевидно, отвечал потребностям пользователя. Только сейчас узнав, что комментарии остаются только временно и автоматически удаляются, я репостирую содержание полезного комментария ниже, чтобы его можно было сохранить для других:

Я поделился "решением", которое сработало для меня. Сегодня мне пришло в голову, что Google для решения более точно соответствует вашему первоначальному вопросу и нашел следующую ссылку. Это не то, что я лично считаю "удобным", но, по крайней мере, оно может быть более элегантным, если сделать из него сценарий. Я нашел это (см. Ниже) - гиропиг 25 сентября в 20:06

Нажмите Alt + F2 и введите gksudo modprobe -r psmouse Введите пароль, нажмите Enter, а затем снова нажмите Alt + F2 для ввода следующего gksudo modprobe psmouse и затем нажмите Enter

Чтобы перезапустить драйвер сенсорной панели ноутбука:

Откройте терминал, нажав Ctrl+Alt+T и выполните следующую команду

sudo  modprobe -r psmouse

затем

sudo modprobe psmouse

Я нашел решение здесь, и есть также решение для USB- мыши

Я нашел способ сделать это:

Сначала откройте терминал и распечатайте все устройства ввода, чтобы найти идентификатор, необходимый для устройства ввода, которое вы хотите отключить. В терминале введите:

xinput --list

Далее: обратите внимание, где написано id=X в одном длинном столбце для каждого устройства ввода. Вы хотите найти идентификатор устройства, который соответствует устройству ввода, которое вы хотите отключить (возможно, что-то, что звучит как "тачпад"). Затем замените X в следующей команде идентификатором, представляющим устройство ввода, которое вы хотите отключить:

xinput disable X

Примечание. Если вы не уверены, какой идентификатор устройства следует использовать для отключения сенсорной панели, то вы можете узнать, проверив случайные идентификаторы и посмотрев, работает ли ваш коврик для мыши. Убедитесь, что вы не делаете ничего важного. Сохраните всю свою работу и будьте готовы перезагрузить компьютер, если вы делаете что-то вроде отключения клавиатуры. (У вас могут возникнуть проблемы при попытке включить его снова, если вы не можете набрать в терминале.

Тогда вам придется запустить эту последнюю строчку (Спасибо, что поймали этого Arch Stanton!)

xinput enable X

Причина: я отчаянно нуждался в ответе на эту проблему, потому что проблемы, которые я испытывал с моей сенсорной панелью, сделали невозможным выполнение какой-либо работы. Внезапно, в какой-то случайный момент при использовании моего ноутбука, по-видимому, без причины, мой тачпад переходит в какой-то "специальный режим". Простое движение пальцем по моей сенсорной панели приведет к прокрутке экрана, вместо того, чтобы фактически перемещать курсор мыши на экране, поэтому невозможно заставить мышь зависать над чем-либо в браузере без значительных усилий по координации для учета экрана прокрутки. и неподвижная мышь. Я хотел найти способ, БЕЗ ПЕРЕЗАПУСКА НОУТБУКА, сбросить тачпад. С положительной стороны, сброс сенсорной панели описанным выше способом фактически решает мою проблему.

Обновление: чтобы сделать сброс сенсорной панели еще проще, я сделал горячую клавишу для перечисленных выше команд. Когда мой тачпад выходит из строя, я просто делаю комбинацию клавиш ctrl + super + r, и он выполняет сброс для меня. Быстро и просто.

Вот как:

Создайте файл в вашем домашнем каталоге и назовите его как "touchpad-reset.sh".

-Внутри этого файла вставьте две из трех (последних двух) предыдущих команд, перечисленных выше, за исключением того, что вместо использования идентификатора X для устройства, так как он может быть изменен с добавлением периферийных устройств (возможно??), которые вы можете использовать это вместо этого:

Вот вывод с моего компьютера внутри терминала с использованием этой команды:

xinput --list

Результат:

Virtual core pointer                        id=2    [master pointer  (3)]⎜   
   ↳ Virtual core XTEST pointer                 id=4    [slave  pointer  (2)]⎜   
   ↳ Genius 2.4G Wireless Mouse                 id=10   [slave  pointer  (2)]⎜   
   ↳ MSFT0001:00 06CB:75BD UNKNOWN              id=13   [slave  pointer  (2)]⎜   
   ↳ ELAN Touchscreen                           id=12   [slave  pointer  (2)]⎜ 

-Теперь, что вы делаете, вы заменяете X (который раньше был id) для xinput disable X и xinput enable X на имя, соответствующее этому id внутри одинарных кавычек. Например, из приведенного выше, если вы хотите сделать это для id=13, моего устройства с сенсорной панелью, вы должны использовать:

xinput disable 'MSFT0001:00 06CB:75BD UNKNOWN'
xinput enable 'MSFT0001:00 06CB:75BD UNKNOWN'

-Теперь, вы отключаете по имени, а не по идентификационному номеру, где идентификатор может измениться во времени, а затем вы отключите и включите какое-то другое устройство.

Наконец, вам нужно дать разрешения, чтобы сделать этот файл исполняемым; запустите эту команду с вашим рабочим каталогом в терминале в качестве домашнего каталога (где вы создали файл):

chmod +x your_script_name.sh

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

  1. Нажмите супер-клавишу (клавиша Windows на ПК) на клавиатуре, чтобы открыть боковую панель единства. Введите "настройки системы" и нажмите клавишу ввода.
  2. Найдите параметр "Клавиатура" в разделе "Оборудование" и нажмите на него.
  3. Выберите вкладку "Ярлыки".
  4. В левом окне выберите "Пользовательские ярлыки"
  5. Нажмите на кнопку + рядом с нижним центром.
  6. Должно появиться окно с запросом имени описания и команды для ввода.
  7. Сделайте имя что-то вроде "сбросить тачпад"
  8. Используйте эту команду: gnome-terminal -x ./name_of_your_script.sh
  9. Нажмите "Применить"
  10. Теперь вы должны увидеть свой ярлык в списке, а в дальнем правом углу он должен сказать "Отключено" или другой мусор. Нажмите на этот текст и будьте готовы создать комбинацию клавиш, например, Ctrl + Super + R.
  11. Как только вы сделаете эту комбинацию клавиш, все готово.

Congrats! Повеселись.

Если у вас есть тачпад синаптики:

synclient TouchpadOff=0

Что может быть проще, и что работало для меня, было перезагрузка драйвера в ядре. Следующий код сначала находит имя драйвера ядра, который обрабатывает сенсорную панель, а затем выгружает его rmmod и перезагружает его modprobe, Обратите внимание, что для запуска этих команд вам нужно быть пользователем root, поэтому sudo su первый.

> lsmod | grep touch
hid_multitouch         20480  0 
> rmmod hid_multitouch 
> modprobe hid_multitouch

Если вы не знаете, какой модуль использует ваша сенсорная панель, вы можете узнать, немного покопавшись

grep -iA2 touchpad /proc/bus/input/devices

для меня это возвращается

N: Name="Elan Touchpad"
P: Phys=
S: Sysfs=/devices/platform/80860F41:03/i2c-11/i2c-ELAN0100:00/input/input10

тогда посмотрите, какие модули ядра доступны в этой категории:

ls $(find /lib/modules/$(uname -r) -type d -name mouse)

который для меня возвращается

appletouch.ko  bcm5974.ko  cyapatp.ko  elan_i2c.ko  gpio_mouse.ko  
psmouse.ko  sermouse.ko  synaptics_i2c.ko  synaptics_usb.ko  vsxxxaa.ko

Перекрестная ссылка на два - в моем случае это выглядит как модуль для моей сенсорной панели elan_i2c.ko

Редактировать: я недавно выяснил, как надежно получить имя используемого драйвера с помощью запутанной команды, что для меня упрощенно

grep -hriPo 'DRIVER=\K.+' /sys 2>/dev/null | while read driver; do [ -e /lib/modules/$(uname -r)/kernel/drivers/input/mouse/"$driver"* ] && echo $driver; done

Чтобы убедиться, что вы получили нужный модуль, протестируйте команду, чтобы выгрузить его из ядра:

sudo modprobe -r elan_i2c

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

sudo modprobe elan_i2c

Это эффективно перезапускает модуль. Вы можете запустить две команды вместе так:

sudo modprobe -r elan_i2c && sudo modprobe elan_i2c

Мне иногда приходится делать это в резюме от приостановки.

Вот что у меня работало, это [Zenbook ASUS UX501VW]:

sudo  modprobe -r elan_i2c
sudo  modprobe elan_i2c

И мой недостающий тачпад вернулся.

Для меня на ядре 4.13.0-46 на Asus для ELAN1200 речь шла не о перезагрузке elan_i2c но hid-multitouch Водитель:

sudo modprobe -r hid-multitouch && sudo modprobe -r hid-multitouch

Самым простым решением может быть:

  • подключить мышь
  • перейдите в Системные настройки >> Мышь и сенсорная панель
  • переключите тачпад в положение ON

Иллюзионист .

Я понимаю, что вы работаете в Ubuntu 14.04; Мой немного отличается (следующим образом):

Это ноутбук: Acer Swift 1 (EUFI); х86-64 бит.

Тип ОС: Ubuntu 16.04 LTS.

Тип сенсорной панели: SYNA7DAB:00 06CB:7DAC Touchpad (synaptics_i2c.ko).

Предоставленное решение: https://help.ubuntu.com/community/SynapticsTouchpad/ShortcutKey

Создайте сценарий bash-файла (как предложено: создайте символическую ссылку на сценарий bash и сопоставьте ему горячую клавишу); Содержание должно быть следующим:

#!/bin/bash

declare -a STATES=(1 0)
DEVICE=$(xinput list --name-only | grep Touchpad)
STATE=$(xinput list-props "$DEVICE" | grep 'Device Enabled' | sed 's/^.*:[ \t]*//')
xinput set-prop "$DEVICE" 'Device Enabled' ${STATES[$STATE]}

Убедитесь, что у него есть доступ к eXecutable!

sudo chmod +x path/filename.sh

Это решение отлично работает для меня. Надеюсь, это относится и к вам.

Личные данные собственной проблемы (возможно, применимо к вашей ситуации)

По какой-то неизвестной причине: сенсорная панель этого ноутбука автоматически перестает работать (все еще работает AFAIK). Я попытался удалить оптическую мышь на базе USB; пока сталкиваюсь с той же проблемой.

xinput --list dump:

[email protected]:~/Desktop$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ SYNA7DAB:00 06CB:7DAC Touchpad            id=12   [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)]
    ↳ Logitech USB Receiver                     id=9    [slave  keyboard (3)]
    ↳ HD WebCam                                 id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ Acer WMI hotkeys                          id=14   [slave  keyboard (3)]

grep -iA2 сенсорная панель /proc/bus/input/device dump:

[email protected]:~/Desktop$ grep -iA2 touchpad /proc/bus/input/devices
N: Name="SYNA7DAB:00 06CB:7DAC Touchpad"
P: Phys=i2c-SYNA7DAB:00
S: Sysfs=/devices/pci0000:00/0000:00:17.0/i2c_designware.4/i2c-9/i2c-SYNA7DAB:00/0018:06CB:7DAC.0003/input/input11

Резюме решения (предоставлено UBUNTU): https://help.ubuntu.com/community/SynapticsTouchpad/ShortcutKey

Одна командная строка bash для сброса сенсорной панели (на основе ответа @user3499524):

id=`xinput --list |grep -i touchpad | cut -f2 | cut -f2 -d=` && xinput disable $id && xinput enable $id && echo "The touchpad has been reset."

Я называю этот сценарий mouse-reset, Удаляет а потом modprobeВсе модули, перечисленные в ответах на этот вопрос до сих пор:

#!/bin/bash

modules=(psmouse hid_multitouch elan_i2c)

for mod in "${modules[@]}"; do
    sudo rmmod "$mod" 2> /dev/null
    sudo modprobe -v "$mod" 2> /dev/null
done

Также попробуйте gksudo /etc/init.d/hotplug restart

Я использую Alienware 13 R2 с Ubuntu 18.04 LTS, и ничего из вышеперечисленного у меня не помогло.

Что ж, я могу сказать, что xinput disable / enable действительно меняет статус устройства и даже отражается в пользовательском интерфейсе настроек. Однако тачпад просто не оживает.

Что мне помогло, так это занесение в черный список модуля i2c_hid, как указано здесь и ниже:

sudo su
echo 'blacklist i2c_hid' >> /etc/modprobe.d/blacklist.conf
depmod -a
update-initramfs -u

После перезагрузки все было нормально.

В качестве примечания я также использую dconf для установки событий сенсорной панели / отправки на disabled-on-external-mouse. Таким образом, тачпад доступен только тогда, когда нет внешней мыши.

Чтобы установить dconf:

apt-get install dconf-editor -y

Я использую Apple Macbook Retina Pro; тачпад иногда перестает работать. Большинство из вышеперечисленных методов не найдут драйвер, так как имя не содержит "мыши" или "касания".

Чтобы найти драйвер тачпада, в моем случае bcm5974:

MacBookPro:~$ xinput list-props 11
Device 'bcm5974':
    Device Enabled (147):   1`
...

Затем выгрузить и перезагрузить:

MacBookPro:~$ sudo modprobe -r bcm5974
MacBookPro:~$ sudo modprobe bcm5974

Решаемые.

Другие вопросы по тегам