Есть ли способ "перезапустить" драйвер тачпада?
Я использую Ubuntu 14.04 на ноутбуке, обычно с подключенной внешней USB-мышью, клавиатурой и экраном. Однако иногда я отключаю их все от компьютера и перемещаю ноутбук, продолжая использовать его со встроенной клавиатурой, экраном и сенсорной панелью.
В случайное время случается, что сенсорная панель перестает работать (но если я подключаю USB-мышь, USB-мышь работает). Хотя это случается очень редко, когда это происходит, это вызывает большое раздражение, так как я вынужден перезагружаться, если мне нужно, чтобы тачпад снова работал.
Могу ли я попробовать какой-нибудь обходной путь, например, убить какой-нибудь процесс, который автоматически перезапустится, или команду, которая заставит драйвер сенсорной панели перезапуститься или обновить или что-то еще? Что-нибудь, что может "разбудить" тачпад без перезагрузки?
16 ответов
У меня неоднократно возникала эта проблема с одним ноутбуком, пока я не заметил, что у сенсорной панели этого компьютера есть собственный выключатель, который я случайно нажал. Примечательно, что переключатель не помог включить его снова. Я просто стал осторожнее, чтобы не нажимать на нее, и вскоре я начал использовать внешнюю беспроводную клавиатуру со встроенной беспроводной сенсорной панелью, и с тех пор у меня такой проблемы не было.
ОБНОВЛЕНИЕ: (Примечание: ссылка ниже не работает, решение - выше) С момента публикации этого "решения" я разместил комментарий, который, очевидно, отвечал потребностям пользователя. Только сейчас узнав, что комментарии остаются только временно и автоматически удаляются, я репостирую содержание полезного комментария ниже, чтобы его можно было сохранить для других:
Я поделился "решением", которое сработало для меня. Сегодня мне пришло в голову, что 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
Поэтому, как только вы создадите этот файл с соответствующими командами, написанными внутри, убедившись, что он находится в вашем домашнем каталоге, выполните следующие шаги:
- Нажмите супер-клавишу (клавиша Windows на ПК) на клавиатуре, чтобы открыть боковую панель единства. Введите "настройки системы" и нажмите клавишу ввода.
- Найдите параметр "Клавиатура" в разделе "Оборудование" и нажмите на него.
- Выберите вкладку "Ярлыки".
- В левом окне выберите "Пользовательские ярлыки"
- Нажмите на кнопку + рядом с нижним центром.
- Должно появиться окно с запросом имени описания и команды для ввода.
- Сделайте имя что-то вроде "сбросить тачпад"
- Используйте эту команду: gnome-terminal -x ./name_of_your_script.sh
- Нажмите "Применить"
- Теперь вы должны увидеть свой ярлык в списке, а в дальнем правом углу он должен сказать "Отключено" или другой мусор. Нажмите на этот текст и будьте готовы создать комбинацию клавиш, например, Ctrl + Super + R.
- Как только вы сделаете эту комбинацию клавиш, все готово.
Congrats! Повеселись.
Что может быть проще, и что работало для меня, было перезагрузка драйвера в ядре. Следующий код сначала находит имя драйвера ядра, который обрабатывает сенсорную панель, а затем выгружает его 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
Мне иногда приходится делать это в резюме от приостановки.
Для меня на ядре 4.13.0-46 на Asus для ELAN1200 речь шла не о перезагрузке elan_i2c
но hid-multitouch
Водитель:
sudo modprobe -r hid-multitouch && sudo modprobe -r hid-multitouch
Вот что у меня работало, это [Zenbook ASUS UX501VW]:
sudo modprobe -r elan_i2c
sudo modprobe elan_i2c
И мой недостающий тачпад вернулся.
Самым простым решением может быть:
- подключить мышь
- перейдите в Системные настройки >> Мышь и сенсорная панель
- переключите тачпад в положение ON
Я называю этот сценарий 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
Иллюзионист .
Я понимаю, что вы работаете в 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
Одна командная строка 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."
Аналогичная проблема Latitude 7430, Ubuntu 22.04. Тачпад случайно останавливался или требовал, чтобы я использовал 4 пальца одновременно, чтобы двигаться. Основываясь на решении, предложенном пользователем 3499524, я написал короткий скрипт:
#! /bin/bash # Tested on Xorg.
# Will probably not work on Wayland.
TOUCHPAD_ID=$(xinput --list | grep -i -e touchpad | grep -Po 'id=\S+' | sed -e 's/^id=//g')
xinput disable "$TOUCHPAD_ID"
sleep 1
xinput enable "$TOUCHPAD_ID"
Я сопоставил его, как вы предложили, с горячей клавишей (F12). Работает на Xorg. Не тестировался для Wayland.
Я использую 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
Решаемые.