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


64

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

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

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


Иногда закрытие экрана ноутбука и его открытие снова решают проблему.
Иллюзионист

Ответы:


32

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

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

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

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


не мой случай, хотя
matteo

2
Я поделился «решением», которое работало на меня. Сегодня мне пришло в голову, что Google для решения более точно соответствует вашему первоначальному вопросу и нашел следующую ссылку. Это не то, что я лично считаю «удобным», но, по крайней мере, его можно сделать более элегантным, сделав его сценарием. tuxtrix.com/2010/06/…
автожир

Спасибо! Я пометил ваш ответ как принятый, хотя ответ на самом деле есть в вашем комментарии (ну, у меня не было возможности проверить его, но похоже, что это решение).
Маттео

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

1
Ссылка у меня работала, но на всякий случай: если вы застряли без движения мыши на своем ноутбуке (сенсорной панели), нажмите комбинации клавиш Alt + F2 и введите gksudo modprobe -r psmouse Введите пароль, нажмите enter и затем снова нажмите Alt + F2 для ввода следующего псевдонима gksudo modprobe
G Trawo

58

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

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

xinput --list

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

xinput disable X

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

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

xinput enable X

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

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

Вот как:

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

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

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

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! Веселиться.


Тогда тебе придется бежать xinput enable X.
Арка Стентон

Ах-ха! Я забыл положить это там? Стрелять. Спасибо за добавление этого там. Так же, как я, чтобы взорвать его в конце.
user3499524 19.12.15

Ахах, неважно, ты спас меня :-)
Arch Stanton

xinput list + disable + enable отлично работает
axel22

2
enable/ disableтакже работает только с идентификатором вместо имени устройства
Златев

50

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

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

sudo  modprobe -r psmouse

тогда

sudo modprobe psmouse

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


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

1
это сработало для меня - мой тачпад перестал работать через некоторое время. У меня есть сенсорная панель ALPS на Dell, работающая под управлением Xubuntu 16.04
Ur Ya'ar

sudo modprobe psmouse proto=impsработал для меня на Asus UX303UB + Ubuntu 16.04.2, но без функций мультитач. Каким-то образом изо дня в день мне нужно запускать эту команду, чтобы иметь сенсорную панель, никогда больше с жестами.
Пабло А

Это не сработало для меня на Dell Precision.
Cerin

Это решение не сработало для меня. Ubuntu 18.04 с «SYNA8004: 00 06CB: сенсорная панель CD8B», Lenovo X1 Carbon Gen 7. Я получаю быстрое поведение сенсорной панели после выхода из спящего режима.
SaTa

10

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

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

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


7

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

synclient TouchpadOff=0

2
Yeyaaaaa! Ubuntu 18.04 LTS с xfce, и с Synaptics это работает как шарм!
Азатар

6

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

sudo  modprobe -r elan_i2c
sudo  modprobe elan_i2c

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


Спасибо! работает для zenbook ux305ca на ubuntu 16.04 lts.
Чао

4

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

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

2

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

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

мой ноутбук Asus использует скрытый драйвер для ОБА клавиатуры и тачпада, поэтому он должен делать это в одной строке, иначе вы не сможете набрать после modprobe -r.
Томофуми


1

Одна командная строка 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."

1

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

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

Добро пожаловать в Спросите Ubuntu! ;-) Решения не должны быть отвратительными, чтобы быть хорошими! Просто
сделайте

0

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

Я понимаю, что вы работаете в 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:

larvae@MST-Laptop:~/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:

larvae@MST-Laptop:~/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


0

Я называю этот сценарий 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

0

Я использую 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

Решаемые.


11 - это конкретный номер устройства в вашем случае, вы должны будете найти этот номер, используя его, xinput --listпрежде чем использовать его здесь.
Ярон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.